Skip to content
Snippets Groups Projects
Commit 080a6223 authored by Robin Appelman's avatar Robin Appelman Committed by Lukas Reschke
Browse files

use ocs discover endpoint to test remote

parent 52d217d7
No related branches found
No related tags found
No related merge requests found
......@@ -96,9 +96,10 @@ class ExternalSharesController extends Controller {
* Test whether the specified remote is accessible
*
* @param string $remote
* @param bool $checkVersion
* @return bool
*/
protected function testUrl($remote) {
protected function testUrl($remote, $checkVersion = false) {
try {
$client = $this->clientService->newClient();
$response = json_decode($client->get(
......@@ -109,7 +110,11 @@ class ExternalSharesController extends Controller {
]
)->getBody());
return !empty($response->version) && version_compare($response->version, '7.0.0', '>=');
if ($checkVersion) {
return !empty($response->version) && version_compare($response->version, '7.0.0', '>=');
} else {
return is_object($response);
}
} catch (\Exception $e) {
return false;
}
......@@ -124,9 +129,17 @@ class ExternalSharesController extends Controller {
* @return DataResponse
*/
public function testRemote($remote) {
if ($this->testUrl('https://' . $remote . '/status.php')) {
if (
$this->testUrl('https://' . $remote . '/ocs-provider') ||
$this->testUrl('https://' . $remote . '/ocs-provider/index.php') ||
$this->testUrl('https://' . $remote . '/status.php', true)
) {
return new DataResponse('https');
} elseif ($this->testUrl('http://' . $remote . '/status.php')) {
} elseif (
$this->testUrl('http://' . $remote . '/ocs-provider') ||
$this->testUrl('http://' . $remote . '/ocs-provider/index.php') ||
$this->testUrl('http://' . $remote . '/status.php', true)
) {
return new DataResponse('http');
} else {
return new DataResponse(false);
......
......@@ -218,20 +218,26 @@ class Storage extends DAV implements ISharedStorage {
}
/**
* check if the configured remote is a valid ownCloud instance
* check if the configured remote is a valid federated share provider
*
* @return bool
*/
protected function testRemote() {
try {
$result = file_get_contents($this->remote . '/status.php');
$data = json_decode($result);
return is_object($data) and !empty($data->version);
return $this->testRemoteUrl($this->remote . '/ocs-provider/index.php')
|| $this->testRemoteUrl($this->remote . '/ocs-provider')
|| $this->testRemoteUrl($this->remote . '/status.php');
} catch (\Exception $e) {
return false;
}
}
private function testRemoteUrl($url) {
$result = file_get_contents($url);
$data = json_decode($result);
return (is_object($data) and !empty($data->version));
}
/**
* @return mixed
* @throws ForbiddenException
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment