Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions appinfo/Migrations/Version20170913113840.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php
/**
* @author Sujith Haridasan <sharidasan@owncloud.com>
*
* @copyright Copyright (c) 2017, ownCloud GmbH
* @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\Migrations;

use OCP\Migration\ISimpleMigration;
use OCP\Migration\IOutput;

class Version20170913113840 implements ISimpleMigration {

/**
* @param IOutput $out
*/
public function run(IOutput $out) {
$installedVersion = \OC::$server->getConfig()->getSystemValue('version', '0.0.0');

if (version_compare('10.0.3', $installedVersion, '>=') === true) {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now this is the only modification I made. This is equivalent to 10.0.3 >= $installeddVersion.

Since we are heading towards 10.0.3, this should be good enough. The UI changed from 10.0.2.
So till version < 10.0.2, the upgrade should work as it did. Or lets say if userSpecificKey is added to appconfig for versions less than 10.0.2, then, nothing would prohibit the code flow.

Now once the upgrade reaches 10.0.2 which is still less than 10.0.3, goes inside the if condition. And then tries to check if the condition is met with the inner if condition ( the one with lots of &&). And adds the userSpecificKey if the condition is true and UI will not have dropdown list.

Lets say if version >= 10.0.2, then the inner if condition may/may not be hit. Because if the encryption is enabled then either of the types would be selected. If not then again falls back to userSpecificKey. This logic applies till, including version 10.0.3.

Though technically the version check is redundant imho. Because unless explicitly selected for masterkey or enabled masterkey via command line => its userSpecificKey. Which sticks with the inner if condition.

$encryptionEnable = \OC::$server->getAppConfig()->getValue('encryption', 'enabled', 'yes');
$coreEncryptionEnable = \OC::$server->getAppConfig()->getValue('core', 'encryption_enabled', 'yes');
$userSpecificKey = \OC::$server->getAppConfig()->getValue('encryption', 'userSpecificKey', '');
$masterKey = \OC::$server->getAppConfig()->getValue('encryption', 'useMasterKey', '');

if (($userSpecificKey === '') && ($masterKey === '') &&
($encryptionEnable === 'yes') && ($coreEncryptionEnable === 'yes')) {
\OC::$server->getConfig()->setAppValue('encryption', 'userSpecificKey', '1');
}
}
}
}

3 changes: 2 additions & 1 deletion appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@
<admin>admin-encryption</admin>
</documentation>
<rememberlogin>false</rememberlogin>
<version>1.3.0</version>
<version>1.3.1</version>
<category>security</category>
<types>
<filesystem/>
</types>
<use-migrations>true</use-migrations>
<dependencies>
<lib>openssl</lib>
<owncloud min-version="10.0" max-version="10.0" />
Expand Down