use ocs discover endpoint to test remote
This commit is contained in:
parent
52d217d775
commit
080a62231e
2 changed files with 27 additions and 8 deletions
|
@ -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);
|
||||
|
|
14
apps/files_sharing/lib/external/storage.php
vendored
14
apps/files_sharing/lib/external/storage.php
vendored
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue