diff --git a/apps/federation/appinfo/application.php b/apps/federation/appinfo/application.php index e91506a30b..72a30f9ae0 100644 --- a/apps/federation/appinfo/application.php +++ b/apps/federation/appinfo/application.php @@ -73,7 +73,8 @@ class Application extends \OCP\AppFramework\App { \OC::$server->getHTTPClientService(), \OC::$server->getLogger(), \OC::$server->getJobList(), - \OC::$server->getSecureRandom() + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() ); }); diff --git a/apps/federation/appinfo/routes.php b/apps/federation/appinfo/routes.php index f45db43e4e..8c1629a4fc 100644 --- a/apps/federation/appinfo/routes.php +++ b/apps/federation/appinfo/routes.php @@ -35,6 +35,11 @@ $application->registerRoutes( 'url' => '/trusted-servers/{id}', 'verb' => 'DELETE' ], + [ + 'name' => 'Settings#autoAddServers', + 'url' => '/auto-add-servers', + 'verb' => 'POST' + ], ] ] ); diff --git a/apps/federation/backgroundjob/getsharedsecret.php b/apps/federation/backgroundjob/getsharedsecret.php index 665c6ec6cc..3e8597cd78 100644 --- a/apps/federation/backgroundjob/getsharedsecret.php +++ b/apps/federation/backgroundjob/getsharedsecret.php @@ -85,7 +85,8 @@ class GetSharedSecret extends QueuedJob{ \OC::$server->getHTTPClientService(), \OC::$server->getLogger(), $this->jobList, - \OC::$server->getSecureRandom() + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() ); } } diff --git a/apps/federation/backgroundjob/requestsharedsecret.php b/apps/federation/backgroundjob/requestsharedsecret.php index b61026a4d6..b73b620b4b 100644 --- a/apps/federation/backgroundjob/requestsharedsecret.php +++ b/apps/federation/backgroundjob/requestsharedsecret.php @@ -77,7 +77,8 @@ class RequestSharedSecret extends QueuedJob { \OC::$server->getHTTPClientService(), \OC::$server->getLogger(), $this->jobList, - \OC::$server->getSecureRandom() + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() ); } } diff --git a/apps/federation/controller/settingscontroller.php b/apps/federation/controller/settingscontroller.php index 8d52232812..2e28cd60cf 100644 --- a/apps/federation/controller/settingscontroller.php +++ b/apps/federation/controller/settingscontroller.php @@ -26,6 +26,7 @@ use OCA\Federation\TrustedServers; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; +use OCP\IConfig; use OCP\IL10N; use OCP\IRequest; @@ -86,6 +87,16 @@ class SettingsController extends Controller { return new DataResponse(); } + /** + * enable/disable to automatically add servers to the list of trusted servers + * once a federated share was created and accepted successfully + * + * @param bool $autoAddServers + */ + public function autoAddServers($autoAddServers) { + $this->trustedServers->setAutoAddServers($autoAddServers); + } + /** * check if the server should be added to the list of trusted servers or not * diff --git a/apps/federation/js/settings-admin.js b/apps/federation/js/settings-admin.js index 1bc7a8cc0a..7d531b39d8 100644 --- a/apps/federation/js/settings-admin.js +++ b/apps/federation/js/settings-admin.js @@ -70,4 +70,13 @@ $(document).ready(function () { }); + $("#ocFederationSettings #autoAddServers").change(function() { + $.post( + OC.generateUrl('/apps/federation/auto-add-servers'), + { + autoAddServers: $(this).is(":checked") + } + ); + }); + }); diff --git a/apps/federation/lib/trustedservers.php b/apps/federation/lib/trustedservers.php index f3ac6e24fc..96a2917807 100644 --- a/apps/federation/lib/trustedservers.php +++ b/apps/federation/lib/trustedservers.php @@ -25,6 +25,7 @@ namespace OCA\Federation; use OCP\AppFramework\Http; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; +use OCP\IConfig; use OCP\ILogger; use OCP\Security\ISecureRandom; @@ -52,25 +53,31 @@ class TrustedServers { /** @var ISecureRandom */ private $secureRandom; + /** @var IConfig */ + private $config; + /** * @param DbHandler $dbHandler * @param IClientService $httpClientService * @param ILogger $logger * @param IJobList $jobList * @param ISecureRandom $secureRandom + * @param IConfig $config */ public function __construct( DbHandler $dbHandler, IClientService $httpClientService, ILogger $logger, IJobList $jobList, - ISecureRandom $secureRandom + ISecureRandom $secureRandom, + IConfig $config ) { $this->dbHandler = $dbHandler; $this->httpClientService = $httpClientService; $this->logger = $logger; $this->jobList = $jobList; $this->secureRandom = $secureRandom; + $this->config = $config; } /** @@ -97,6 +104,28 @@ class TrustedServers { return $result; } + /** + * enable/disable to automatically add servers to the list of trusted servers + * once a federated share was created and accepted successfully + * + * @param bool $status + */ + public function setAutoAddServers($status) { + $value = $status ? '1' : '0'; + $this->config->setAppValue('federation', 'autoAddServers', $value); + } + + /** + * return if we automatically add servers to the list of trusted servers + * once a federated share was created and accepted successfully + * + * @return bool + */ + public function getAutoAddServers() { + $value = $this->config->getAppValue('federation', 'autoAddServers', '1'); + return $value === '1'; + } + /** * get shared secret for the given server * diff --git a/apps/federation/settings/settings-admin.php b/apps/federation/settings/settings-admin.php index c160b7ee82..76ae0c3b6e 100644 --- a/apps/federation/settings/settings-admin.php +++ b/apps/federation/settings/settings-admin.php @@ -33,9 +33,11 @@ $trustedServers = new \OCA\Federation\TrustedServers( \OC::$server->getHTTPClientService(), \OC::$server->getLogger(), \OC::$server->getJobList(), - \OC::$server->getSecureRandom() + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() ); $template->assign('trustedServers', $trustedServers->getServers()); +$template->assign('autoAddServers', $trustedServers->getAutoAddServers()); return $template->fetchPage(); diff --git a/apps/federation/templates/settings-admin.php b/apps/federation/templates/settings-admin.php index f9087137d5..854bb74417 100644 --- a/apps/federation/templates/settings-admin.php +++ b/apps/federation/templates/settings-admin.php @@ -10,9 +10,9 @@ style('federation', 'settings-admin')

t('Federation')); ?>

t('ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing.')); ?> -

- - +

+ /> +

Trusted ownCloud Servers