Add config switch
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
This commit is contained in:
parent
c49b0d3834
commit
7b3855a375
|
@ -943,4 +943,14 @@ class FederatedShareProvider implements IShareProvider {
|
||||||
$result = $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes');
|
$result = $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes');
|
||||||
return ($result === 'yes') ? true : false;
|
return ($result === 'yes') ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if querying sharees on the lookup server is enabled
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isLookupServerQueriesEnabled() {
|
||||||
|
$result = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no');
|
||||||
|
return ($result === 'yes') ? true : false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ class Admin implements ISettings {
|
||||||
$parameters = [
|
$parameters = [
|
||||||
'outgoingServer2serverShareEnabled' => $this->fedShareProvider->isOutgoingServer2serverShareEnabled(),
|
'outgoingServer2serverShareEnabled' => $this->fedShareProvider->isOutgoingServer2serverShareEnabled(),
|
||||||
'incomingServer2serverShareEnabled' => $this->fedShareProvider->isIncomingServer2serverShareEnabled(),
|
'incomingServer2serverShareEnabled' => $this->fedShareProvider->isIncomingServer2serverShareEnabled(),
|
||||||
|
'lookupServerEnabled' => $this->fedShareProvider->isLookupServerQueriesEnabled(),
|
||||||
];
|
];
|
||||||
|
|
||||||
return new TemplateResponse('federatedfilesharing', 'settings-admin', $parameters, '');
|
return new TemplateResponse('federatedfilesharing', 'settings-admin', $parameters, '');
|
||||||
|
|
|
@ -25,4 +25,11 @@ script('federatedfilesharing', 'settings-admin');
|
||||||
<?php p($l->t('Allow users on this server to receive shares from other servers'));?>
|
<?php p($l->t('Allow users on this server to receive shares from other servers'));?>
|
||||||
</label><br/>
|
</label><br/>
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<input type="checkbox" name="lookupServerEnabled" id="lookupServerEnabled" class="checkbox"
|
||||||
|
value="1" <?php if ($_['lookupServerEnabled']) print_unescaped('checked="checked"'); ?> />
|
||||||
|
<label for="lookupServerEnabled">
|
||||||
|
<?php p($l->t('Enable lookups on lookup server'));?>
|
||||||
|
</label><br/>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -65,10 +65,15 @@ class AdminTest extends TestCase {
|
||||||
->expects($this->once())
|
->expects($this->once())
|
||||||
->method('isIncomingServer2serverShareEnabled')
|
->method('isIncomingServer2serverShareEnabled')
|
||||||
->willReturn($state);
|
->willReturn($state);
|
||||||
|
$this->federatedShareProvider
|
||||||
|
->expects($this->once())
|
||||||
|
->method('isLookupServerQueriesEnabled')
|
||||||
|
->willReturn($state);
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'outgoingServer2serverShareEnabled' => $state,
|
'outgoingServer2serverShareEnabled' => $state,
|
||||||
'incomingServer2serverShareEnabled' => $state,
|
'incomingServer2serverShareEnabled' => $state,
|
||||||
|
'lookupServerEnabled' => $state,
|
||||||
];
|
];
|
||||||
$expected = new TemplateResponse('federatedfilesharing', 'settings-admin', $params, '');
|
$expected = new TemplateResponse('federatedfilesharing', 'settings-admin', $params, '');
|
||||||
$this->assertEquals($expected, $this->admin->getForm());
|
$this->assertEquals($expected, $this->admin->getForm());
|
||||||
|
|
|
@ -626,22 +626,36 @@ class ShareesAPIController extends OCSController {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getLookup($search) {
|
protected function getLookup($search) {
|
||||||
$client = $this->clientService->newClient();
|
$isEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no');
|
||||||
|
|
||||||
$response = $client->get('https://lookup.nextcloud.com/users?search='.urlencode($search));
|
|
||||||
$body = json_decode($response->getBody(), true);
|
|
||||||
|
|
||||||
$result = [];
|
$result = [];
|
||||||
foreach ($body as $lookup) {
|
|
||||||
$result[] = [
|
if($isEnabled === 'yes') {
|
||||||
'label' => $lookup['federationId'],
|
try {
|
||||||
'value' => [
|
$client = $this->clientService->newClient();
|
||||||
'shareType' => Share::SHARE_TYPE_REMOTE,
|
$response = $client->get(
|
||||||
'shareWith' => $lookup['federationId'],
|
'https://lookup.nextcloud.com/users?search=' . urlencode($search),
|
||||||
],
|
[
|
||||||
'extra' => $lookup,
|
'timeout' => 10,
|
||||||
];
|
'connect_timeout' => 3,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$body = json_decode($response->getBody(), true);
|
||||||
|
|
||||||
|
$result = [];
|
||||||
|
foreach ($body as $lookup) {
|
||||||
|
$result[] = [
|
||||||
|
'label' => $lookup['federationId'],
|
||||||
|
'value' => [
|
||||||
|
'shareType' => Share::SHARE_TYPE_REMOTE,
|
||||||
|
'shareWith' => $lookup['federationId'],
|
||||||
|
],
|
||||||
|
'extra' => $lookup,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->result['lookup'] = $result;
|
$this->result['lookup'] = $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ use OCA\Files_Sharing\Controller\ShareesAPIController;
|
||||||
use OCA\Files_Sharing\Tests\TestCase;
|
use OCA\Files_Sharing\Tests\TestCase;
|
||||||
use OCP\AppFramework\Http;
|
use OCP\AppFramework\Http;
|
||||||
use OCP\AppFramework\OCS\OCSBadRequestException;
|
use OCP\AppFramework\OCS\OCSBadRequestException;
|
||||||
|
use OCP\Http\Client\IClientService;
|
||||||
use OCP\Share;
|
use OCP\Share;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,6 +61,9 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
/** @var \OCP\Share\IManager|\PHPUnit_Framework_MockObject_MockObject */
|
/** @var \OCP\Share\IManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
protected $shareManager;
|
protected $shareManager;
|
||||||
|
|
||||||
|
/** @var IClientService|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
|
private $clientService;
|
||||||
|
|
||||||
protected function setUp() {
|
protected function setUp() {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
@ -87,6 +91,8 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
|
$this->clientService = $this->createMock(IClientService::class);
|
||||||
|
|
||||||
$this->sharees = new ShareesAPIController(
|
$this->sharees = new ShareesAPIController(
|
||||||
'files_sharing',
|
'files_sharing',
|
||||||
$this->request,
|
$this->request,
|
||||||
|
@ -97,7 +103,8 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
$this->session,
|
$this->session,
|
||||||
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
||||||
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
||||||
$this->shareManager
|
$this->shareManager,
|
||||||
|
$this->clientService
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1386,7 +1393,8 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
$this->session,
|
$this->session,
|
||||||
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
||||||
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
||||||
$this->shareManager
|
$this->shareManager,
|
||||||
|
$this->clientService
|
||||||
])
|
])
|
||||||
->setMethods(array('searchSharees', 'isRemoteSharingAllowed', 'shareProviderExists'))
|
->setMethods(array('searchSharees', 'isRemoteSharingAllowed', 'shareProviderExists'))
|
||||||
->getMock();
|
->getMock();
|
||||||
|
@ -1477,7 +1485,8 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
$this->session,
|
$this->session,
|
||||||
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
||||||
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
||||||
$this->shareManager
|
$this->shareManager,
|
||||||
|
$this->clientService
|
||||||
])
|
])
|
||||||
->setMethods(array('searchSharees', 'isRemoteSharingAllowed'))
|
->setMethods(array('searchSharees', 'isRemoteSharingAllowed'))
|
||||||
->getMock();
|
->getMock();
|
||||||
|
@ -1522,6 +1531,7 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
'groups' => [],
|
'groups' => [],
|
||||||
'remotes' => [],
|
'remotes' => [],
|
||||||
'emails' => [],
|
'emails' => [],
|
||||||
|
'lookup' => [],
|
||||||
], false],
|
], false],
|
||||||
['test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE], 1, 2, false, [], [], ['results' => [], 'exact' => [], 'exactIdMatch' => false],
|
['test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE], 1, 2, false, [], [], ['results' => [], 'exact' => [], 'exactIdMatch' => false],
|
||||||
[
|
[
|
||||||
|
@ -1530,6 +1540,7 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
'groups' => [],
|
'groups' => [],
|
||||||
'remotes' => [],
|
'remotes' => [],
|
||||||
'emails' => [],
|
'emails' => [],
|
||||||
|
'lookup' => [],
|
||||||
], false],
|
], false],
|
||||||
[
|
[
|
||||||
'test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE], 1, 2, false, [
|
'test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE], 1, 2, false, [
|
||||||
|
@ -1551,6 +1562,7 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']],
|
['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']],
|
||||||
],
|
],
|
||||||
'emails' => [],
|
'emails' => [],
|
||||||
|
'lookup' => [],
|
||||||
], true,
|
], true,
|
||||||
],
|
],
|
||||||
// No groups requested
|
// No groups requested
|
||||||
|
@ -1570,6 +1582,7 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']],
|
['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']],
|
||||||
],
|
],
|
||||||
'emails' => [],
|
'emails' => [],
|
||||||
|
'lookup' => [],
|
||||||
], false,
|
], false,
|
||||||
],
|
],
|
||||||
// Share type restricted to user - Only one user
|
// Share type restricted to user - Only one user
|
||||||
|
@ -1585,6 +1598,7 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
'groups' => [],
|
'groups' => [],
|
||||||
'remotes' => [],
|
'remotes' => [],
|
||||||
'emails' => [],
|
'emails' => [],
|
||||||
|
'lookup' => [],
|
||||||
], false,
|
], false,
|
||||||
],
|
],
|
||||||
// Share type restricted to user - Multipage result
|
// Share type restricted to user - Multipage result
|
||||||
|
@ -1602,6 +1616,7 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
'groups' => [],
|
'groups' => [],
|
||||||
'remotes' => [],
|
'remotes' => [],
|
||||||
'emails' => [],
|
'emails' => [],
|
||||||
|
'lookup' => [],
|
||||||
], true,
|
], true,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@ -1636,7 +1651,8 @@ class ShareesAPIControllerTest extends TestCase {
|
||||||
$this->session,
|
$this->session,
|
||||||
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(),
|
||||||
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(),
|
||||||
$this->shareManager
|
$this->shareManager,
|
||||||
|
$this->clientService
|
||||||
])
|
])
|
||||||
->setMethods(array('getShareesForShareIds', 'getUsers', 'getGroups', 'getRemote'))
|
->setMethods(array('getShareesForShareIds', 'getUsers', 'getGroups', 'getRemote'))
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
Loading…
Reference in New Issue