]> source.dussan.org Git - nextcloud-server.git/commitdiff
check openssl dependency for the encryption app
authorBjörn Schießle <schiessle@owncloud.com>
Fri, 21 Jun 2013 08:37:51 +0000 (10:37 +0200)
committerBjörn Schießle <schiessle@owncloud.com>
Fri, 21 Jun 2013 08:43:22 +0000 (10:43 +0200)
commit 1345201c9da99a82f198e41fba24da6b0d7ae59a
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 16:27:46 2013 +0200

    add l10n support

commit bf2c79c8de8710e839a4a55642a91874c374fa1c
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 16:19:10 2013 +0200

    only init session if openssl extension is loaded

commit cbd52af6afbaa310bb1a534db64ff5e476dfd5d7
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 12:25:40 2013 +0200

    first disable app and than show error page

commit 55baf593179c433642de59552592e6b0f1932880
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 12:17:34 2013 +0200

    typo fixed

commit 1d9bef0b058e7cc3d511b81ae12d5a07660c75b2
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 12:15:40 2013 +0200

    move dependency check to the encryption app

commit c186e95da526f0470e20f014f1bd9513db5518ff
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 11:13:11 2013 +0200

    make sure that openssl is installed and loaded

Conflicts:

apps/files_encryption/appinfo/app.php

apps/files_encryption/appinfo/app.php
apps/files_encryption/hooks/hooks.php

index f55fb6ef766fbd83ee084b0dd8e771458a04f40a..80c04bb0cd2256d53fe6a9dc5e3eec252cabb838 100644 (file)
@@ -10,7 +10,7 @@ OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php';
 OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php';
 OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php';
 
-if(!OC_Config::getValue('maintenance', false)) {
+if (!OC_Config::getValue('maintenance', false)) {
        OC_FileProxy::register(new OCA\Encryption\Proxy());
 
        // User related hooks
@@ -24,22 +24,26 @@ if(!OC_Config::getValue('maintenance', false)) {
 
        stream_wrapper_register('crypt', 'OCA\Encryption\Stream');
 
-// check if we are logged in
-if (OCP\User::isLoggedIn()) {
+       // check if we are logged in
+       if (OCP\User::isLoggedIn()) {
 
-       // ensure filesystem is loaded
-       if(!\OC\Files\Filesystem::$loaded) {
-               \OC_Util::setupFS();
-       }
+               // ensure filesystem is loaded
+               if (!\OC\Files\Filesystem::$loaded) {
+                       \OC_Util::setupFS();
+               }
 
-       $view = new OC_FilesystemView('/');
+               $view = new OC_FilesystemView('/');
+
+               $sessionReady = false;
+               if (extension_loaded("openssl")) {
+                       $session = new \OCA\Encryption\Session($view);
+                       $sessionReady = true;
+               }
 
-       $user = \OCP\USER::getUser();
-       // check if user has a private key
-       if (
-               !$view->file_exists('/' . $user . '/files_encryption/' . $user . '.private.key')
-               && OCA\Encryption\Crypt::mode() === 'server'
-       ) {
+               $user = \OCP\USER::getUser();
+               // check if user has a private key
+               if ($sessionReady === false || (!$view->file_exists('/' . $user . '/files_encryption/' . $user . '.private.key') && OCA\Encryption\Crypt::mode() === 'server')
+               ) {
 
                        // Force the user to log-in again if the encryption key isn't unlocked
                        // (happens when a user is logged in before the encryption app is
index 7698b95cfd36b9c897722df0d37c6fb7d1b544b4..e39e068cc5d341897c5621a142262c8e8974e767 100644 (file)
@@ -38,11 +38,15 @@ class Hooks {
         * @note This method should never be called for users using client side encryption\r
         */\r
        public static function login($params) {\r
-\r
-               // Manually initialise Filesystem{} singleton with correct \r
-               // fake root path, in order to avoid fatal webdav errors\r
-               // NOTE: disabled because this give errors on webdav!\r
-               //\OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' );\r
+               $l = new \OC_L10N('files_encryption');\r
+               //check if openssl is available\r
+               if(!extension_loaded("openssl") ) {\r
+                       $error_msg = $l->t("PHP module OpenSSL is not installed.");\r
+                       $hint = $l->t('Please ask your server administrator to install the module. For now the encryption app was disabled.');\r
+                       \OC_App::disable('files_encryption');\r
+                       \OCP\Util::writeLog('Encryption library', $error_msg . ' ' . $hint, \OCP\Util::ERROR);\r
+                       \OCP\Template::printErrorPage($error_msg, $hint);\r
+               }\r
 \r
                $view = new \OC_FilesystemView('/');\r
 \r