From d668e17769cfe4ccf82794fa75a3f80995b8e43b Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Tue, 30 May 2017 13:33:17 +0200 Subject: [PATCH] since the default for the master key changed we need to write the setting explicitely to the database if we migrate from a older version Signed-off-by: Bjoern Schiessle --- apps/encryption/appinfo/info.xml | 8 +- .../lib/Migration/SetMasterKeyStatus.php | 77 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 apps/encryption/lib/Migration/SetMasterKeyStatus.php diff --git a/apps/encryption/appinfo/info.xml b/apps/encryption/appinfo/info.xml index e1959ac8a9..f35a87aa4f 100644 --- a/apps/encryption/appinfo/info.xml +++ b/apps/encryption/appinfo/info.xml @@ -19,7 +19,7 @@ user-encryption admin-encryption - 1.7.1 + 2.0.0 @@ -36,4 +36,10 @@ OCA\Encryption\Command\DisableMasterKey OCA\Encryption\Command\MigrateKeys + + + + OCA\Encryption\Migration\SetMasterKeyStatus + + diff --git a/apps/encryption/lib/Migration/SetMasterKeyStatus.php b/apps/encryption/lib/Migration/SetMasterKeyStatus.php new file mode 100644 index 0000000000..a21d0acae2 --- /dev/null +++ b/apps/encryption/lib/Migration/SetMasterKeyStatus.php @@ -0,0 +1,77 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see . + * + */ + + +namespace OCA\Encryption\Migration; + + +use OCP\IConfig; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; + +/** + * Class SetPasswordColumn + * + * @package OCA\Files_Sharing\Migration + */ +class SetMasterKeyStatus implements IRepairStep { + + + /** @var IConfig */ + private $config; + + + public function __construct(IConfig $config) { + $this->config = $config; + } + + /** + * Returns the step's name + * + * @return string + * @since 9.1.0 + */ + public function getName() { + return 'Write default encryption module configuration to the database'; + } + + /** + * @param IOutput $output + */ + public function run(IOutput $output) { + if (!$this->shouldRun()) { + return; + } + + // if no config for the master key is set we set it explicitly to '0' in + // order not to break old installations because the default changed to '1'. + $configAlreadySet = $this->config->getAppValue('encryption', 'useMasterKey', false); + if ($configAlreadySet === false) { + $this->config->setAppValue('encryption', 'useMasterKey', '0'); + } + } + + protected function shouldRun() { + $appVersion = $this->config->getAppValue('encryption', 'installed_version', '0.0.0'); + return version_compare($appVersion, '2.0.0', '<'); + } + +}