]> source.dussan.org Git - nextcloud-server.git/commitdiff
make recovery settings work
authorBjoern Schiessle <schiessle@owncloud.com>
Mon, 30 Mar 2015 09:49:03 +0000 (11:49 +0200)
committerThomas Müller <thomas.mueller@tmit.eu>
Tue, 7 Apr 2015 11:30:28 +0000 (13:30 +0200)
apps/encryption/appinfo/app.php
apps/encryption/appinfo/application.php [new file with mode: 0644]
apps/encryption/appinfo/encryption.php [deleted file]
apps/encryption/appinfo/routes.php
apps/encryption/js/settings-admin.js
apps/encryption/lib/keymanager.php
apps/encryption/settings/settings-admin.php
apps/encryption/templates/settings-admin.php
lib/private/encryption/manager.php
lib/public/iservercontainer.php

index 72e7fc42ca0444023b2552b65551e06f8af338c6..38f9ff2f040b073470dd1a8f1d9a48e86dfa1bb8 100644 (file)
  *
  */
 
-use OCA\Encryption\AppInfo\Encryption;
+namespace OCA\Encryption\AppInfo;
 
-if (!OC::$CLI) {
+if (!\OC::$CLI) {
        $di = \OC::$server;
-       $app = new Encryption('encryption',
-               [],
-               $di->getEncryptionManager(),
-               $di->getConfig());
-
-       $app->boot();
+       $app = new Application();
 }
 
diff --git a/apps/encryption/appinfo/application.php b/apps/encryption/appinfo/application.php
new file mode 100644 (file)
index 0000000..606c0cc
--- /dev/null
@@ -0,0 +1,196 @@
+<?php
+/**
+ * @author Clark Tomlinson  <clark@owncloud.com>
+ * @since 3/11/15, 11:03 AM
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+namespace OCA\Encryption\AppInfo;
+
+
+use OC\Files\Filesystem;
+use OC\Files\View;
+use OCA\Encryption\Crypto\Crypt;
+use OCA\Encryption\HookManager;
+use OCA\Encryption\Hooks\UserHooks;
+use OCA\Encryption\KeyManager;
+use OCA\Encryption\Recovery;
+use OCA\Encryption\Users\Setup;
+use OCA\Encryption\Util;
+use OCP\App;
+use OCP\AppFramework\IAppContainer;
+use OCP\Encryption\IManager;
+use OCP\IConfig;
+
+
+class Application extends \OCP\AppFramework\App {
+       /**
+        * @var IManager
+        */
+       private $encryptionManager;
+       /**
+        * @var IConfig
+        */
+       private $config;
+
+       /**
+        * @param $appName
+        * @param array $urlParams
+        */
+       public function __construct($urlParams = array()) {
+               parent::__construct('encryption', $urlParams);
+               $this->encryptionManager = \OC::$server->getEncryptionManager();
+               $this->config = \OC::$server->getConfig();
+               $this->registerServices();
+               $this->registerEncryptionModule();
+               $this->registerHooks();
+               $this->registerSettings();
+       }
+
+       /**
+        *
+        */
+       public function registerHooks() {
+               if (!$this->config->getSystemValue('maintenance', false)) {
+
+                       $container = $this->getContainer();
+                       $server = $container->getServer();
+                       // Register our hooks and fire them.
+                       $hookManager = new HookManager();
+
+                       $hookManager->registerHook([
+                               new UserHooks($container->query('KeyManager'),
+                                       $server->getLogger(),
+                                       $container->query('UserSetup'),
+                                       $server->getUserSession(),
+                                       new \OCP\Util(),
+                                       $container->query('Util'),
+                                       $server->getSession()),
+                       ]);
+
+                       $hookManager->fireHooks();
+
+               } else {
+                       // Logout user if we are in maintenance to force re-login
+                       $this->getContainer()->getServer()->getUserSession()->logout();
+               }
+       }
+
+       /**
+        *
+        */
+       public function registerEncryptionModule() {
+               $container = $this->getContainer();
+               $container->registerService('EncryptionModule', function (IAppContainer $c) {
+                       return new \OCA\Encryption\Crypto\Encryption(
+                               $c->query('Crypt'),
+                               $c->query('KeyManager'),
+                               $c->query('Util'));
+               });
+               $module = $container->query('EncryptionModule');
+               $this->encryptionManager->registerEncryptionModule($module);
+       }
+
+       /**
+        *
+        */
+       public function registerServices() {
+               $container = $this->getContainer();
+
+               $container->registerService('Crypt',
+                       function (IAppContainer $c) {
+                               $server = $c->getServer();
+                               return new Crypt($server->getLogger(),
+                                       $server->getUserSession(),
+                                       $server->getConfig());
+                       });
+
+               $container->registerService('KeyManager',
+                       function (IAppContainer $c) {
+                               $server = $c->getServer();
+
+                               return new KeyManager($server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
+                                       $c->query('Crypt'),
+                                       $server->getConfig(),
+                                       $server->getUserSession(),
+                                       $server->getSession(),
+                                       $server->getLogger()
+                               );
+                       });
+
+
+               $container->registerService('Recovery',
+                       function (IAppContainer $c) {
+                               $server = $c->getServer();
+
+                               return new Recovery(
+                                       $server->getUserSession(),
+                                       $c->query('Crypt'),
+                                       $server->getSecureRandom(),
+                                       $c->query('KeyManager'),
+                                       $server->getConfig(),
+                                       $server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID));
+                       });
+
+                       $container->registerService('RecoveryController', function (IAppContainer $c) {
+                       $server = $c->getServer();
+                       return new \OCA\Encryption\Controller\RecoveryController(
+                               $c->getAppName(),
+                               $server->getRequest(),
+                               $server->getConfig(),
+                               $server->getL10N($c->getAppName()),
+                               $c->query('Recovery'));
+               });
+
+               $container->registerService('UserSetup',
+                       function (IAppContainer $c) {
+                               $server = $c->getServer();
+                               return new Setup($server->getLogger(),
+                                       $server->getUserSession(),
+                                       $c->query('Crypt'),
+                                       $c->query('KeyManager'));
+                       });
+
+               $container->registerService('Util',
+                       function (IAppContainer $c) {
+                               $server = $c->getServer();
+
+                               return new Util(new View(),
+                                       new Filesystem(),
+                                       $c->query('Crypt'),
+                                       $c->query('KeyManager'),
+                                       $server->getLogger(),
+                                       $server->getUserSession(),
+                                       $server->getConfig()
+                               );
+                       });
+
+       }
+
+       /**
+        *
+        */
+       public function registerSettings() {
+
+//             script('encryption', 'encryption');
+//             script('encryption', 'detect-migration');
+
+
+               // Register settings scripts
+               App::registerAdmin('encryption', 'settings/settings-admin');
+               App::registerPersonal('encryption', 'settings/settings-personal');
+       }
+}
diff --git a/apps/encryption/appinfo/encryption.php b/apps/encryption/appinfo/encryption.php
deleted file mode 100644 (file)
index 6aad921..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-/**
- * @author Clark Tomlinson  <clark@owncloud.com>
- * @since 3/11/15, 11:03 AM
- * @copyright Copyright (c) 2015, ownCloud, Inc.
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program.  If not, see <http://www.gnu.org/licenses/>
- *
- */
-namespace OCA\Encryption\AppInfo;
-
-
-use OC\Files\Filesystem;
-use OC\Files\View;
-use OCA\Encryption\Crypto\Crypt;
-use OCA\Encryption\HookManager;
-use OCA\Encryption\Hooks\UserHooks;
-use OCA\Encryption\KeyManager;
-use OCA\Encryption\Recovery;
-use OCA\Encryption\Users\Setup;
-use OCA\Encryption\Util;
-use OCP\App;
-use OCP\AppFramework\IAppContainer;
-use OCP\Encryption\IManager;
-use OCP\IConfig;
-
-
-class Encryption extends \OCP\AppFramework\App {
-       /**
-        * @var IManager
-        */
-       private $encryptionManager;
-       /**
-        * @var IConfig
-        */
-       private $config;
-
-       /**
-        * @param $appName
-        * @param array $urlParams
-        * @param IManager $encryptionManager
-        * @param IConfig $config
-        */
-       public function __construct($appName, $urlParams = array(), IManager $encryptionManager, IConfig $config) {
-               parent::__construct($appName, $urlParams);
-               $this->encryptionManager = $encryptionManager;
-               $this->config = $config;
-       }
-
-       /**
-        *
-        */
-       public function boot() {
-               $this->registerServices();
-               $this->registerEncryptionModule();
-               $this->registerHooks();
-               $this->registerSettings();
-       }
-
-       /**
-        *
-        */
-       public function registerHooks() {
-               if (!$this->config->getSystemValue('maintenance', false)) {
-
-                       $container = $this->getContainer();
-                       $server = $container->getServer();
-                       // Register our hooks and fire them.
-                       $hookManager = new HookManager();
-
-                       $hookManager->registerHook([
-                               new UserHooks($container->query('KeyManager'),
-                                       $server->getLogger(),
-                                       $container->query('UserSetup'),
-                                       $server->getUserSession(),
-                                       new \OCP\Util(),
-                                       $container->query('Util'),
-                                       $server->getSession()),
-                       ]);
-
-                       $hookManager->fireHooks();
-
-               } else {
-                       // Logout user if we are in maintenance to force re-login
-                       $this->getContainer()->getServer()->getUserSession()->logout();
-               }
-       }
-
-       /**
-        *
-        */
-       public function registerEncryptionModule() {
-               $container = $this->getContainer();
-               $container->registerService('EncryptionModule', function (IAppContainer $c) {
-                       return new \OCA\Encryption\Crypto\Encryption(
-                               $c->query('Crypt'),
-                               $c->query('KeyManager'),
-                               $c->query('Util'));
-               });
-               $module = $container->query('EncryptionModule');
-               $this->encryptionManager->registerEncryptionModule($module);
-       }
-
-       /**
-        *
-        */
-       public function registerServices() {
-               $container = $this->getContainer();
-
-               $container->registerService('Crypt',
-                       function (IAppContainer $c) {
-                               $server = $c->getServer();
-                               return new Crypt($server->getLogger(),
-                                       $server->getUserSession(),
-                                       $server->getConfig());
-                       });
-
-               $container->registerService('KeyManager',
-                       function (IAppContainer $c) {
-                               $server = $c->getServer();
-
-                               return new KeyManager($server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
-                                       $c->query('Crypt'),
-                                       $server->getConfig(),
-                                       $server->getUserSession(),
-                                       $server->getSession(),
-                                       $server->getLogger()
-                               );
-                       });
-
-
-               $container->registerService('Recovery',
-                       function (IAppContainer $c) {
-                               $server = $c->getServer();
-
-                               return new Recovery(
-                                       $server->getUserSession(),
-                                       $c->query('Crypt'),
-                                       $server->getSecureRandom(),
-                                       $c->query('KeyManager'),
-                                       $server->getConfig(),
-                                       $server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID));
-                       });
-
-               $container->registerService('UserSetup',
-                       function (IAppContainer $c) {
-                               $server = $c->getServer();
-                               return new Setup($server->getLogger(),
-                                       $server->getUserSession(),
-                                       $c->query('Crypt'),
-                                       $c->query('KeyManager'));
-                       });
-
-               $container->registerService('Util',
-                       function (IAppContainer $c) {
-                               $server = $c->getServer();
-
-                               return new Util(new View(),
-                                       new Filesystem(),
-                                       $c->query('Crypt'),
-                                       $c->query('KeyManager'),
-                                       $server->getLogger(),
-                                       $server->getUserSession(),
-                                       $server->getConfig()
-                               );
-                       });
-
-       }
-
-       /**
-        *
-        */
-       public function registerSettings() {
-
-//             script('encryption', 'encryption');
-//             script('encryption', 'detect-migration');
-
-
-               // Register settings scripts
-               App::registerAdmin('encryption', 'settings/settings-admin');
-               App::registerPersonal('encryption', 'settings/settings-personal');
-       }
-}
index a86f3717ce9c044468d2bab348b3f6305c42aa36..b2c00c8334932da05e6b1e3d5cb5a4a0f8a2b037 100644 (file)
  */
 
 
-use OCP\AppFramework\App;
+namespace OCA\Encryption\AppInfo;
 
-(new App('encryption'))->registerRoutes($this, array('routes' => array(
+(new Application())->registerRoutes($this, array('routes' => array(
 
        [
-               'name' => 'recovery#adminRecovery',
+               'name' => 'Recovery#adminRecovery',
                'url' => '/ajax/adminRecovery',
                'verb' => 'POST'
        ],
        [
-               'name' => 'recovery#userRecovery',
+               'name' => 'Recovery#userRecovery',
                'url' => '/ajax/userRecovery',
                'verb' => 'POST'
        ]
index 2242c1f71248e5bc022f9444438a7a6f587e8839..e5d3bebb2089d2c610159692594e707531d94b19 100644 (file)
@@ -17,7 +17,7 @@ $(document).ready(function(){
                        var confirmPassword = $( '#repeatEncryptionRecoveryPassword' ).val();
                        OC.msg.startSaving('#encryptionSetRecoveryKey .msg');
                        $.post(
-                               OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' )
+                               OC.generateUrl('/apps/encryption/ajax/adminRecovery')
                                , { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword, confirmPassword: confirmPassword }
                                ,  function( result ) {
                                        OC.msg.finishedSaving('#encryptionSetRecoveryKey .msg', result);
@@ -44,7 +44,7 @@ $(document).ready(function(){
                var confirmNewPassword = $('#repeatedNewEncryptionRecoveryPassword').val();
                OC.msg.startSaving('#encryptionChangeRecoveryKey .msg');
                $.post(
-               OC.filePath( 'files_encryption', 'ajax', 'changeRecoveryPassword.php' )
+               OC.filePath( 'encryption', 'ajax', 'changeRecoveryPassword.php' )
                        , { oldPassword: oldRecoveryPassword, newPassword: newRecoveryPassword, confirmPassword: confirmNewPassword }
                        ,  function( data ) {
                                        OC.msg.finishedSaving('#encryptionChangeRecoveryKey .msg', data);
index b3961c8566e992a9d53543166a0d9e905ae7c2ec..68fb722c5eaa62a1da337bc85e67b253919b49f5 100644 (file)
@@ -193,7 +193,7 @@ class KeyManager {
 
                if ($encryptedKey) {
                        $this->setPrivateKey($uid, $encryptedKey);
-                       $this->config->setAppValue('encryption', 'recoveryAdminEnabled', 1);
+                       $this->config->setAppValue('encryption', 'recoveryAdminEnabled', 0);
                        return true;
                }
                return false;
index 813956aa0af64d720665b26d38b9e9180cf2bb9a..a34d30d1de58ead5341cb7f7a71083fd147ba5b5 100644 (file)
@@ -18,7 +18,4 @@ $recoveryAdminEnabled = \OC::$server->getConfig()->getAppValue('encryption', 're
 $tmpl->assign('recoveryEnabled', $recoveryAdminEnabled);
 $tmpl->assign('initStatus', KeyManager::$session->get('initStatus'));
 
-\OCP\Util::addscript('files_encryption', 'settings-admin');
-\OCP\Util::addscript('core', 'multiselect');
-
 return $tmpl->fetchPage();
index 252701e9ed0ad9a12b75089daad99517f71d20d2..616c593f6fbfa62068d6536cbc74635e5e1314d0 100644 (file)
@@ -1,6 +1,8 @@
 <?php
-       /** @var array $_ */
-       /** @var OC_L10N $l */
+/** @var array $_ */
+/** @var OC_L10N $l */
+script('encryption', 'settings-admin');
+script('core', 'multiselect');
 ?>
 <form id="encryption" class="section">
        <h2><?php p($l->t('ownCloud basic encryption module')); ?></h2>
index fa50d32218dff648c6720f4ea6461faed0e06870..7cd49d1c0e2b4fa006e58fc5332b753b5aa4852a 100644 (file)
@@ -66,12 +66,15 @@ class Manager implements \OCP\Encryption\IManager {
        public function registerEncryptionModule(IEncryptionModule $module) {
                $id = $module->getId();
                $name = $module->getDisplayName();
+
+               // FIXME why do we load the same encryption module multiple times
+               /*
                if (isset($this->encryptionModules[$id])) {
                        $message = 'Id "' . $id . '" already used by encryption module "' . $name . '"';
                        throw new Exceptions\ModuleAlreadyExistsException($message);
 
                }
-
+*/
                $defaultEncryptionModuleId = $this->getDefaultEncryptionModuleId();
 
                if (empty($defaultEncryptionModuleId)) {
index d7df884adf88062891d47ba95268accc6e79970f..2db1fc32499afea0c75c18952f08945a8f1f00cb 100644 (file)
@@ -172,6 +172,18 @@ interface IServerContainer {
         */
        function getL10N($app, $lang = null);
 
+       /**
+        * @return \OC\Encryption\Manager
+        */
+       function getEncryptionManager();
+
+       /**
+        * @param string $encryptionModuleId encryption module ID
+        *
+        * @return \OCP\Encryption\Keys\IStorage
+        */
+       function getEncryptionKeyStorage($encryptionModuleId);
+
        /**
         * Returns the URL generator
         *