Browse Source

Add config switch

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
tags/v11.0RC2
Lukas Reschke 7 years ago
parent
commit
7b3855a375
No account linked to committer's email address

+ 10
- 0
apps/federatedfilesharing/lib/FederatedShareProvider.php View File

$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;
}
} }

+ 1
- 0
apps/federatedfilesharing/lib/Settings/Admin.php View File

$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, '');

+ 7
- 0
apps/federatedfilesharing/templates/settings-admin.php View File

<?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>

+ 5
- 0
apps/federatedfilesharing/tests/Settings/AdminTest.php View File

->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());

+ 28
- 14
apps/files_sharing/lib/Controller/ShareesAPIController.php View File

} }


protected function getLookup($search) { protected function getLookup($search) {
$client = $this->clientService->newClient();

$response = $client->get('https://lookup.nextcloud.com/users?search='.urlencode($search));
$body = json_decode($response->getBody(), true);

$isEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no');
$result = []; $result = [];
foreach ($body as $lookup) {
$result[] = [
'label' => $lookup['federationId'],
'value' => [
'shareType' => Share::SHARE_TYPE_REMOTE,
'shareWith' => $lookup['federationId'],
],
'extra' => $lookup,
];

if($isEnabled === 'yes') {
try {
$client = $this->clientService->newClient();
$response = $client->get(
'https://lookup.nextcloud.com/users?search=' . urlencode($search),
[
'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;
} }



+ 20
- 4
apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php View File

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;


/** /**
/** @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();


->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,
$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
); );
} }


$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();
$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();
'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],
[ [
'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, [
['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
['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
'groups' => [], 'groups' => [],
'remotes' => [], 'remotes' => [],
'emails' => [], 'emails' => [],
'lookup' => [],
], false, ], false,
], ],
// Share type restricted to user - Multipage result // Share type restricted to user - Multipage result
'groups' => [], 'groups' => [],
'remotes' => [], 'remotes' => [],
'emails' => [], 'emails' => [],
'lookup' => [],
], true, ], true,
], ],
]; ];
$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…
Cancel
Save