Completed
Pull Request — master (#6788)
by Markus
25:08 queued 11:09
created
apps/twofactor_backupcodes/lib/Service/BackupCodeStorage.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
 
79 79
 		$uid = $user->getUID();
80 80
 		foreach (range(1, min([$number, 20])) as $i) {
81
-			$code = $this->random->generate(self::$CODE_LENGTH, ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS);
81
+			$code = $this->random->generate(self::$CODE_LENGTH, ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_DIGITS);
82 82
 
83 83
 			$dbCode = new BackupCode();
84 84
 			$dbCode->setUserId($uid);
@@ -132,7 +132,7 @@  discard block
 block discarded – undo
132 132
 		$codes = $this->mapper->getBackupCodes($user);
133 133
 		$total = count($codes);
134 134
 		$used = 0;
135
-		array_walk($codes, function (BackupCode $code) use (&$used) {
135
+		array_walk($codes, function(BackupCode $code) use (&$used) {
136 136
 			if (1 === (int) $code->getUsed()) {
137 137
 				$used++;
138 138
 			}
Please login to merge, or discard this patch.
Indentation   +128 added lines, -128 removed lines patch added patch discarded remove patch
@@ -33,133 +33,133 @@
 block discarded – undo
33 33
 
34 34
 class BackupCodeStorage {
35 35
 
36
-	private static $CODE_LENGTH = 16;
37
-
38
-	/** @var BackupCodeMapper */
39
-	private $mapper;
40
-
41
-	/** @var IHasher */
42
-	private $hasher;
43
-
44
-	/** @var ISecureRandom */
45
-	private $random;
46
-
47
-	/** @var IManager */
48
-	private $activityManager;
49
-
50
-	/** @var ILogger */
51
-	private $logger;
52
-
53
-	/**
54
-	 * @param BackupCodeMapper $mapper
55
-	 * @param ISecureRandom $random
56
-	 * @param IHasher $hasher
57
-	 * @param IManager $activityManager
58
-	 * @param ILogger $logger
59
-	 */
60
-	public function __construct(BackupCodeMapper $mapper, ISecureRandom $random, IHasher $hasher,
61
-		IManager $activityManager, ILogger $logger) {
62
-		$this->mapper = $mapper;
63
-		$this->hasher = $hasher;
64
-		$this->random = $random;
65
-		$this->activityManager = $activityManager;
66
-		$this->logger = $logger;
67
-	}
68
-
69
-	/**
70
-	 * @param IUser $user
71
-	 * @return string[]
72
-	 */
73
-	public function createCodes(IUser $user, $number = 10) {
74
-		$result = [];
75
-
76
-		// Delete existing ones
77
-		$this->mapper->deleteCodes($user);
78
-
79
-		$uid = $user->getUID();
80
-		foreach (range(1, min([$number, 20])) as $i) {
81
-			$code = $this->random->generate(self::$CODE_LENGTH, ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS);
82
-
83
-			$dbCode = new BackupCode();
84
-			$dbCode->setUserId($uid);
85
-			$dbCode->setCode($this->hasher->hash($code));
86
-			$dbCode->setUsed(0);
87
-			$this->mapper->insert($dbCode);
88
-
89
-			array_push($result, $code);
90
-		}
91
-
92
-		$this->publishEvent($user, 'codes_generated');
93
-
94
-		return $result;
95
-	}
96
-
97
-	/**
98
-	 * Push an event the user's activity stream
99
-	 *
100
-	 * @param IUser $user
101
-	 * @param string $event
102
-	 */
103
-	private function publishEvent(IUser $user, $event) {
104
-		$activity = $this->activityManager->generateEvent();
105
-		$activity->setApp('twofactor_backupcodes')
106
-			->setType('security')
107
-			->setAuthor($user->getUID())
108
-			->setAffectedUser($user->getUID())
109
-			->setSubject($event);
110
-		try {
111
-			$this->activityManager->publish($activity);
112
-		} catch (BadMethodCallException $e) {
113
-			$this->logger->warning('could not publish backup code creation activity', ['app' => 'twofactor_backupcodes']);
114
-			$this->logger->logException($e, ['app' => 'twofactor_backupcodes']);
115
-		}
116
-	}
117
-
118
-	/**
119
-	 * @param IUser $user
120
-	 * @return bool
121
-	 */
122
-	public function hasBackupCodes(IUser $user) {
123
-		$codes = $this->mapper->getBackupCodes($user);
124
-		return count($codes) > 0;
125
-	}
126
-
127
-	/**
128
-	 * @param IUser $user
129
-	 * @return array
130
-	 */
131
-	public function getBackupCodesState(IUser $user) {
132
-		$codes = $this->mapper->getBackupCodes($user);
133
-		$total = count($codes);
134
-		$used = 0;
135
-		array_walk($codes, function (BackupCode $code) use (&$used) {
136
-			if (1 === (int) $code->getUsed()) {
137
-				$used++;
138
-			}
139
-		});
140
-		return [
141
-			'enabled' => $total > 0,
142
-			'total' => $total,
143
-			'used' => $used,
144
-		];
145
-	}
146
-
147
-	/**
148
-	 * @param IUser $user
149
-	 * @param string $code
150
-	 * @return bool
151
-	 */
152
-	public function validateCode(IUser $user, $code) {
153
-		$dbCodes = $this->mapper->getBackupCodes($user);
154
-
155
-		foreach ($dbCodes as $dbCode) {
156
-			if (0 === (int) $dbCode->getUsed() && $this->hasher->verify($code, $dbCode->getCode())) {
157
-				$dbCode->setUsed(1);
158
-				$this->mapper->update($dbCode);
159
-				return true;
160
-			}
161
-		}
162
-		return false;
163
-	}
36
+    private static $CODE_LENGTH = 16;
37
+
38
+    /** @var BackupCodeMapper */
39
+    private $mapper;
40
+
41
+    /** @var IHasher */
42
+    private $hasher;
43
+
44
+    /** @var ISecureRandom */
45
+    private $random;
46
+
47
+    /** @var IManager */
48
+    private $activityManager;
49
+
50
+    /** @var ILogger */
51
+    private $logger;
52
+
53
+    /**
54
+     * @param BackupCodeMapper $mapper
55
+     * @param ISecureRandom $random
56
+     * @param IHasher $hasher
57
+     * @param IManager $activityManager
58
+     * @param ILogger $logger
59
+     */
60
+    public function __construct(BackupCodeMapper $mapper, ISecureRandom $random, IHasher $hasher,
61
+        IManager $activityManager, ILogger $logger) {
62
+        $this->mapper = $mapper;
63
+        $this->hasher = $hasher;
64
+        $this->random = $random;
65
+        $this->activityManager = $activityManager;
66
+        $this->logger = $logger;
67
+    }
68
+
69
+    /**
70
+     * @param IUser $user
71
+     * @return string[]
72
+     */
73
+    public function createCodes(IUser $user, $number = 10) {
74
+        $result = [];
75
+
76
+        // Delete existing ones
77
+        $this->mapper->deleteCodes($user);
78
+
79
+        $uid = $user->getUID();
80
+        foreach (range(1, min([$number, 20])) as $i) {
81
+            $code = $this->random->generate(self::$CODE_LENGTH, ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS);
82
+
83
+            $dbCode = new BackupCode();
84
+            $dbCode->setUserId($uid);
85
+            $dbCode->setCode($this->hasher->hash($code));
86
+            $dbCode->setUsed(0);
87
+            $this->mapper->insert($dbCode);
88
+
89
+            array_push($result, $code);
90
+        }
91
+
92
+        $this->publishEvent($user, 'codes_generated');
93
+
94
+        return $result;
95
+    }
96
+
97
+    /**
98
+     * Push an event the user's activity stream
99
+     *
100
+     * @param IUser $user
101
+     * @param string $event
102
+     */
103
+    private function publishEvent(IUser $user, $event) {
104
+        $activity = $this->activityManager->generateEvent();
105
+        $activity->setApp('twofactor_backupcodes')
106
+            ->setType('security')
107
+            ->setAuthor($user->getUID())
108
+            ->setAffectedUser($user->getUID())
109
+            ->setSubject($event);
110
+        try {
111
+            $this->activityManager->publish($activity);
112
+        } catch (BadMethodCallException $e) {
113
+            $this->logger->warning('could not publish backup code creation activity', ['app' => 'twofactor_backupcodes']);
114
+            $this->logger->logException($e, ['app' => 'twofactor_backupcodes']);
115
+        }
116
+    }
117
+
118
+    /**
119
+     * @param IUser $user
120
+     * @return bool
121
+     */
122
+    public function hasBackupCodes(IUser $user) {
123
+        $codes = $this->mapper->getBackupCodes($user);
124
+        return count($codes) > 0;
125
+    }
126
+
127
+    /**
128
+     * @param IUser $user
129
+     * @return array
130
+     */
131
+    public function getBackupCodesState(IUser $user) {
132
+        $codes = $this->mapper->getBackupCodes($user);
133
+        $total = count($codes);
134
+        $used = 0;
135
+        array_walk($codes, function (BackupCode $code) use (&$used) {
136
+            if (1 === (int) $code->getUsed()) {
137
+                $used++;
138
+            }
139
+        });
140
+        return [
141
+            'enabled' => $total > 0,
142
+            'total' => $total,
143
+            'used' => $used,
144
+        ];
145
+    }
146
+
147
+    /**
148
+     * @param IUser $user
149
+     * @param string $code
150
+     * @return bool
151
+     */
152
+    public function validateCode(IUser $user, $code) {
153
+        $dbCodes = $this->mapper->getBackupCodes($user);
154
+
155
+        foreach ($dbCodes as $dbCode) {
156
+            if (0 === (int) $dbCode->getUsed() && $this->hasher->verify($code, $dbCode->getCode())) {
157
+                $dbCode->setUsed(1);
158
+                $this->mapper->update($dbCode);
159
+                return true;
160
+            }
161
+        }
162
+        return false;
163
+    }
164 164
 
165 165
 }
Please login to merge, or discard this patch.
apps/twofactor_backupcodes/lib/Controller/SettingsController.php 1 patch
Indentation   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -30,46 +30,46 @@
 block discarded – undo
30 30
 
31 31
 class SettingsController extends Controller {
32 32
 
33
-	/** @var BackupCodeStorage */
34
-	private $storage;
33
+    /** @var BackupCodeStorage */
34
+    private $storage;
35 35
 
36
-	/** @var IUserSession */
37
-	private $userSession;
36
+    /** @var IUserSession */
37
+    private $userSession;
38 38
 
39
-	/**
40
-	 * @param string $appName
41
-	 * @param IRequest $request
42
-	 * @param BackupCodeStorage $storage
43
-	 * @param IUserSession $userSession
44
-	 */
45
-	public function __construct($appName, IRequest $request, BackupCodeStorage $storage, IUserSession $userSession) {
46
-		parent::__construct($appName, $request);
47
-		$this->userSession = $userSession;
48
-		$this->storage = $storage;
49
-	}
39
+    /**
40
+     * @param string $appName
41
+     * @param IRequest $request
42
+     * @param BackupCodeStorage $storage
43
+     * @param IUserSession $userSession
44
+     */
45
+    public function __construct($appName, IRequest $request, BackupCodeStorage $storage, IUserSession $userSession) {
46
+        parent::__construct($appName, $request);
47
+        $this->userSession = $userSession;
48
+        $this->storage = $storage;
49
+    }
50 50
 
51
-	/**
52
-	 * @NoAdminRequired
53
-	 * @return JSONResponse
54
-	 */
55
-	public function state() {
56
-		$user = $this->userSession->getUser();
57
-		return $this->storage->getBackupCodesState($user);
58
-	}
51
+    /**
52
+     * @NoAdminRequired
53
+     * @return JSONResponse
54
+     */
55
+    public function state() {
56
+        $user = $this->userSession->getUser();
57
+        return $this->storage->getBackupCodesState($user);
58
+    }
59 59
 
60
-	/**
61
-	 * @NoAdminRequired
62
-	 * @PasswordConfirmationRequired
63
-	 *
64
-	 * @return JSONResponse
65
-	 */
66
-	public function createCodes() {
67
-		$user = $this->userSession->getUser();
68
-		$codes = $this->storage->createCodes($user);
69
-		return new JSONResponse([
70
-			'codes' => $codes,
71
-			'state' => $this->storage->getBackupCodesState($user),
72
-		]);
73
-	}
60
+    /**
61
+     * @NoAdminRequired
62
+     * @PasswordConfirmationRequired
63
+     *
64
+     * @return JSONResponse
65
+     */
66
+    public function createCodes() {
67
+        $user = $this->userSession->getUser();
68
+        $codes = $this->storage->createCodes($user);
69
+        return new JSONResponse([
70
+            'codes' => $codes,
71
+            'state' => $this->storage->getBackupCodesState($user),
72
+        ]);
73
+    }
74 74
 
75 75
 }
Please login to merge, or discard this patch.
apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -47,7 +47,7 @@
 block discarded – undo
47 47
 		$rows = $result->fetchAll();
48 48
 		$result->closeCursor();
49 49
 
50
-		return array_map(function ($row) {
50
+		return array_map(function($row) {
51 51
 			return BackupCode::fromRow($row);
52 52
 		}, $rows);
53 53
 	}
Please login to merge, or discard this patch.
Indentation   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -28,48 +28,48 @@
 block discarded – undo
28 28
 
29 29
 class BackupCodeMapper extends Mapper {
30 30
 
31
-	public function __construct(IDBConnection $db) {
32
-		parent::__construct($db, 'twofactor_backupcodes');
33
-	}
31
+    public function __construct(IDBConnection $db) {
32
+        parent::__construct($db, 'twofactor_backupcodes');
33
+    }
34 34
 
35
-	/**
36
-	 * @param IUser $user
37
-	 * @return BackupCode[]
38
-	 */
39
-	public function getBackupCodes(IUser $user) {
40
-		/* @var IQueryBuilder $qb */
41
-		$qb = $this->db->getQueryBuilder();
35
+    /**
36
+     * @param IUser $user
37
+     * @return BackupCode[]
38
+     */
39
+    public function getBackupCodes(IUser $user) {
40
+        /* @var IQueryBuilder $qb */
41
+        $qb = $this->db->getQueryBuilder();
42 42
 
43
-		$qb->select('id', 'user_id', 'code', 'used')
44
-			->from('twofactor_backupcodes')
45
-			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user->getUID())));
46
-		$result = $qb->execute();
43
+        $qb->select('id', 'user_id', 'code', 'used')
44
+            ->from('twofactor_backupcodes')
45
+            ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user->getUID())));
46
+        $result = $qb->execute();
47 47
 
48
-		$rows = $result->fetchAll();
49
-		$result->closeCursor();
48
+        $rows = $result->fetchAll();
49
+        $result->closeCursor();
50 50
 
51
-		return array_map(function ($row) {
52
-			return BackupCode::fromRow($row);
53
-		}, $rows);
54
-	}
51
+        return array_map(function ($row) {
52
+            return BackupCode::fromRow($row);
53
+        }, $rows);
54
+    }
55 55
 
56
-	/**
57
-	 * @param IUser $user
58
-	 */
59
-	public function deleteCodes(IUser $user) {
60
-		$this->deleteCodesByUserId($user->getUID());
61
-	}
56
+    /**
57
+     * @param IUser $user
58
+     */
59
+    public function deleteCodes(IUser $user) {
60
+        $this->deleteCodesByUserId($user->getUID());
61
+    }
62 62
 
63
-	/**
64
-	 * @param string $uid
65
-	 */
66
-	public function deleteCodesByUserId($uid) {
67
-		/* @var IQueryBuilder $qb */
68
-		$qb = $this->db->getQueryBuilder();
63
+    /**
64
+     * @param string $uid
65
+     */
66
+    public function deleteCodesByUserId($uid) {
67
+        /* @var IQueryBuilder $qb */
68
+        $qb = $this->db->getQueryBuilder();
69 69
 
70
-		$qb->delete('twofactor_backupcodes')
71
-			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($uid)));
72
-		$qb->execute();
73
-	}
70
+        $qb->delete('twofactor_backupcodes')
71
+            ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($uid)));
72
+        $qb->execute();
73
+    }
74 74
 
75 75
 }
Please login to merge, or discard this patch.
apps/twofactor_backupcodes/lib/Db/BackupCode.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -34,13 +34,13 @@
 block discarded – undo
34 34
  */
35 35
 class BackupCode extends Entity {
36 36
 
37
-	/** @var string */
38
-	protected $userId;
37
+    /** @var string */
38
+    protected $userId;
39 39
 
40
-	/** @var string */
41
-	protected $code;
40
+    /** @var string */
41
+    protected $code;
42 42
 
43
-	/** @var int */
44
-	protected $used;
43
+    /** @var int */
44
+    protected $used;
45 45
 
46 46
 }
Please login to merge, or discard this patch.
apps/twofactor_backupcodes/appinfo/routes.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -21,17 +21,17 @@
 block discarded – undo
21 21
  */
22 22
 // @codeCoverageIgnoreStart
23 23
 return [
24
-	'routes' => [
25
-		[
26
-			'name' => 'settings#state',
27
-			'url' => '/settings/state',
28
-			'verb' => 'GET'
29
-		],
30
-		[
31
-			'name' => 'settings#createCodes',
32
-			'url' => '/settings/create',
33
-			'verb' => 'POST'
34
-		],
35
-	]
24
+    'routes' => [
25
+        [
26
+            'name' => 'settings#state',
27
+            'url' => '/settings/state',
28
+            'verb' => 'GET'
29
+        ],
30
+        [
31
+            'name' => 'settings#createCodes',
32
+            'url' => '/settings/create',
33
+            'verb' => 'POST'
34
+        ],
35
+    ]
36 36
 ];
37 37
 // @codeCoverageIgnoreEnd
Please login to merge, or discard this patch.
apps/encryption/templates/altmail.php 2 patches
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -4,8 +4,8 @@
 block discarded – undo
4 4
 
5 5
 print_unescaped($l->t("Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n", array($_['password'])));
6 6
 if ( isset($_['expiration']) ) {
7
-	print_unescaped($l->t("The share will expire on %s.", array($_['expiration'])));
8
-	print_unescaped("\n\n");
7
+    print_unescaped($l->t("The share will expire on %s.", array($_['expiration'])));
8
+    print_unescaped("\n\n");
9 9
 }
10 10
 // TRANSLATORS term at the end of a mail
11 11
 p($l->t("Cheers!"));
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
 /** @var array $_ */
4 4
 
5 5
 print_unescaped($l->t("Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n", array($_['password'])));
6
-if ( isset($_['expiration']) ) {
6
+if (isset($_['expiration'])) {
7 7
 	print_unescaped($l->t("The share will expire on %s.", array($_['expiration'])));
8 8
 	print_unescaped("\n\n");
9 9
 }
@@ -12,5 +12,5 @@  discard block
 block discarded – undo
12 12
 ?>
13 13
 
14 14
 	--
15
-<?php p($theme->getName() . ' - ' . $theme->getSlogan()); ?>
15
+<?php p($theme->getName().' - '.$theme->getSlogan()); ?>
16 16
 <?php print_unescaped("\n".$theme->getBaseUrl());
Please login to merge, or discard this patch.
apps/encryption/templates/settings-personal.php 2 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2
-	/** @var array $_ */
3
-	/** @var \OCP\IL10N $l */
2
+    /** @var array $_ */
3
+    /** @var \OCP\IL10N $l */
4 4
 script('encryption', 'settings-personal');
5 5
 script('core', 'multiselect');
6 6
 ?>
@@ -20,8 +20,8 @@  discard block
 block discarded – undo
20 20
 			<br />
21 21
 			<?php p( $l->t( "Set your old private key password to your current log-in password:" ) ); ?>
22 22
 			<?php if (  $_["recoveryEnabledForUser"] ):
23
-					p( $l->t( " If you don't remember your old password you can ask your administrator to recover your files." ) );
24
-			endif; ?>
23
+                    p( $l->t( " If you don't remember your old password you can ask your administrator to recover your files." ) );
24
+            endif; ?>
25 25
 			<br />
26 26
 			<input
27 27
 				type="password"
Please login to merge, or discard this patch.
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -7,49 +7,49 @@  discard block
 block discarded – undo
7 7
 <form id="ocDefaultEncryptionModule" class="section">
8 8
 	<h2 data-anchor-name="basic-encryption-module"><?php p($l->t('Basic encryption module')); ?></h2>
9 9
 
10
-	<?php if ($_["initialized"] === \OCA\Encryption\Session::NOT_INITIALIZED ): ?>
10
+	<?php if ($_["initialized"] === \OCA\Encryption\Session::NOT_INITIALIZED): ?>
11 11
 
12 12
 	<?php p($l->t("Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again.")); ?>
13 13
 
14
-	<?php elseif ( $_["initialized"] === \OCA\Encryption\Session::INIT_EXECUTED ): ?>
14
+	<?php elseif ($_["initialized"] === \OCA\Encryption\Session::INIT_EXECUTED): ?>
15 15
 		<p>
16 16
 			<a name="changePKPasswd" />
17 17
 			<label for="changePrivateKeyPasswd">
18
-				<em><?php p( $l->t( "Your private key password no longer matches your log-in password." ) ); ?></em>
18
+				<em><?php p($l->t("Your private key password no longer matches your log-in password.")); ?></em>
19 19
 			</label>
20 20
 			<br />
21
-			<?php p( $l->t( "Set your old private key password to your current log-in password:" ) ); ?>
22
-			<?php if (  $_["recoveryEnabledForUser"] ):
23
-					p( $l->t( " If you don't remember your old password you can ask your administrator to recover your files." ) );
21
+			<?php p($l->t("Set your old private key password to your current log-in password:")); ?>
22
+			<?php if ($_["recoveryEnabledForUser"]):
23
+					p($l->t(" If you don't remember your old password you can ask your administrator to recover your files."));
24 24
 			endif; ?>
25 25
 			<br />
26 26
 			<input
27 27
 				type="password"
28 28
 				name="changePrivateKeyPassword"
29 29
 				id="oldPrivateKeyPassword" />
30
-			<label for="oldPrivateKeyPassword"><?php p($l->t( "Old log-in password" )); ?></label>
30
+			<label for="oldPrivateKeyPassword"><?php p($l->t("Old log-in password")); ?></label>
31 31
 			<br />
32 32
 			<input
33 33
 				type="password"
34 34
 				name="changePrivateKeyPassword"
35 35
 				id="newPrivateKeyPassword" />
36
-			<label for="newRecoveryPassword"><?php p($l->t( "Current log-in password" )); ?></label>
36
+			<label for="newRecoveryPassword"><?php p($l->t("Current log-in password")); ?></label>
37 37
 			<br />
38 38
 			<button
39 39
 				type="button"
40 40
 				name="submitChangePrivateKeyPassword"
41
-				disabled><?php p($l->t( "Update Private Key Password" )); ?>
41
+				disabled><?php p($l->t("Update Private Key Password")); ?>
42 42
 			</button>
43 43
 			<span class="msg"></span>
44 44
 		</p>
45 45
 
46
-	<?php elseif ( $_["recoveryEnabled"] && $_["privateKeySet"] &&  $_["initialized"] === \OCA\Encryption\Session::INIT_SUCCESSFUL ): ?>
46
+	<?php elseif ($_["recoveryEnabled"] && $_["privateKeySet"] && $_["initialized"] === \OCA\Encryption\Session::INIT_SUCCESSFUL): ?>
47 47
 		<br />
48 48
 		<p id="userEnableRecovery">
49
-			<label for="userEnableRecovery"><?php p( $l->t( "Enable password recovery:" ) ); ?></label>
49
+			<label for="userEnableRecovery"><?php p($l->t("Enable password recovery:")); ?></label>
50 50
 			<span class="msg"></span>
51 51
 			<br />
52
-			<em><?php p( $l->t( "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" ) ); ?></em>
52
+			<em><?php p($l->t("Enabling this option will allow you to reobtain access to your encrypted files in case of password loss")); ?></em>
53 53
 			<br />
54 54
 			<input
55 55
 			type="radio"
@@ -57,8 +57,8 @@  discard block
 block discarded – undo
57 57
 			id="userEnableRecoveryCheckbox"
58 58
 			name="userEnableRecovery"
59 59
 			value="1"
60
-			<?php echo ( $_["recoveryEnabledForUser"] ? 'checked="checked"' : '' ); ?> />
61
-			<label for="userEnableRecoveryCheckbox"><?php p( $l->t( "Enabled" ) ); ?></label>
60
+			<?php echo ($_["recoveryEnabledForUser"] ? 'checked="checked"' : ''); ?> />
61
+			<label for="userEnableRecoveryCheckbox"><?php p($l->t("Enabled")); ?></label>
62 62
 			<br />
63 63
 
64 64
 			<input
@@ -67,8 +67,8 @@  discard block
 block discarded – undo
67 67
 			id="userDisableRecoveryCheckbox"
68 68
 			name="userEnableRecovery"
69 69
 			value="0"
70
-			<?php echo ( $_["recoveryEnabledForUser"] === false ? 'checked="checked"' : '' ); ?> />
71
-			<label for="userDisableRecoveryCheckbox"><?php p( $l->t( "Disabled" ) ); ?></label>
70
+			<?php echo ($_["recoveryEnabledForUser"] === false ? 'checked="checked"' : ''); ?> />
71
+			<label for="userDisableRecoveryCheckbox"><?php p($l->t("Disabled")); ?></label>
72 72
 		</p>
73 73
 	<?php endif; ?>
74 74
 </form>
Please login to merge, or discard this patch.
apps/encryption/templates/mail.php 2 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -15,10 +15,10 @@
 block discarded – undo
15 15
 					<td width="20px">&nbsp;</td>
16 16
 					<td style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">
17 17
 						<?php
18
-						print_unescaped($l->t('Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section "basic encryption module" of your personal settings and update your encryption password by entering this password into the "old log-in password" field and your current login-password.<br><br>', array($_['password'])));
19
-						// TRANSLATORS term at the end of a mail
20
-						p($l->t('Cheers!'));
21
-						?>
18
+                        print_unescaped($l->t('Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section "basic encryption module" of your personal settings and update your encryption password by entering this password into the "old log-in password" field and your current login-password.<br><br>', array($_['password'])));
19
+                        // TRANSLATORS term at the end of a mail
20
+                        p($l->t('Cheers!'));
21
+                        ?>
22 22
 					</td>
23 23
 				</tr>
24 24
 				<tr><td colspan="2">&nbsp;</td></tr>
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -27,7 +27,7 @@  discard block
 block discarded – undo
27 27
 	<tr><td>
28 28
 			<table cellspacing="0" cellpadding="0" border="0" width="600px">
29 29
 				<tr>
30
-					<td colspan="2" bgcolor="<?php p($theme->getColorPrimary());?>">
30
+					<td colspan="2" bgcolor="<?php p($theme->getColorPrimary()); ?>">
31 31
 						<img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('', 'logo-mail.png'))); ?>" alt="<?php p($theme->getName()); ?>"/>
32 32
 					</td>
33 33
 				</tr>
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
 					<td style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">--<br>
53 53
 						<?php p($theme->getName()); ?> -
54 54
 						<?php p($theme->getSlogan()); ?>
55
-						<br><a href="<?php p($theme->getBaseUrl()); ?>"><?php p($theme->getBaseUrl());?></a>
55
+						<br><a href="<?php p($theme->getBaseUrl()); ?>"><?php p($theme->getBaseUrl()); ?></a>
56 56
 					</td>
57 57
 				</tr>
58 58
 				<tr>
Please login to merge, or discard this patch.
apps/encryption/lib/Migration.php 3 patches
Indentation   +355 added lines, -355 removed lines patch added patch discarded remove patch
@@ -32,359 +32,359 @@
 block discarded – undo
32 32
 
33 33
 class Migration {
34 34
 
35
-	private $moduleId;
36
-	/** @var \OC\Files\View */
37
-	private $view;
38
-	/** @var \OCP\IDBConnection */
39
-	private $connection;
40
-	/** @var IConfig */
41
-	private $config;
42
-	/** @var  ILogger */
43
-	private $logger;
44
-	/** @var string*/
45
-	protected $installedVersion;
46
-
47
-	/**
48
-	 * @param IConfig $config
49
-	 * @param View $view
50
-	 * @param IDBConnection $connection
51
-	 * @param ILogger $logger
52
-	 */
53
-	public function __construct(IConfig $config, View $view, IDBConnection $connection, ILogger $logger) {
54
-		$this->view = $view;
55
-		$this->view->disableCacheUpdate();
56
-		$this->connection = $connection;
57
-		$this->moduleId = \OCA\Encryption\Crypto\Encryption::ID;
58
-		$this->config = $config;
59
-		$this->logger = $logger;
60
-		$this->installedVersion = $this->config->getAppValue('files_encryption', 'installed_version', '-1');
61
-	}
62
-
63
-	public function finalCleanUp() {
64
-		$this->view->deleteAll('files_encryption/public_keys');
65
-		$this->updateFileCache();
66
-		$this->config->deleteAppValue('files_encryption', 'installed_version');
67
-	}
68
-
69
-	/**
70
-	 * update file cache, copy unencrypted_size to the 'size' column
71
-	 */
72
-	private function updateFileCache() {
73
-		// make sure that we don't update the file cache multiple times
74
-		// only update during the first run
75
-		if ($this->installedVersion !== '-1') {
76
-			$query = $this->connection->getQueryBuilder();
77
-			$query->update('filecache')
78
-				->set('size', 'unencrypted_size')
79
-				->where($query->expr()->eq('encrypted', $query->createParameter('encrypted')))
80
-				->setParameter('encrypted', 1);
81
-			$query->execute();
82
-		}
83
-	}
84
-
85
-	/**
86
-	 * iterate through users and reorganize the folder structure
87
-	 */
88
-	public function reorganizeFolderStructure() {
89
-		$this->reorganizeSystemFolderStructure();
90
-
91
-		$limit = 500;
92
-		$offset = 0;
93
-		do {
94
-			$users = \OCP\User::getUsers('', $limit, $offset);
95
-			foreach ($users as $user) {
96
-				$this->reorganizeFolderStructureForUser($user);
97
-			}
98
-			$offset += $limit;
99
-		} while (count($users) >= $limit);
100
-	}
101
-
102
-	/**
103
-	 * reorganize system wide folder structure
104
-	 */
105
-	public function reorganizeSystemFolderStructure() {
106
-
107
-		$this->createPathForKeys('/files_encryption');
108
-
109
-		// backup system wide folders
110
-		$this->backupSystemWideKeys();
111
-
112
-		// rename system wide mount point
113
-		$this->renameFileKeys('', '/files_encryption/keys');
114
-
115
-		// rename system private keys
116
-		$this->renameSystemPrivateKeys();
117
-
118
-		$storage = $this->view->getMount('')->getStorage();
119
-		$storage->getScanner()->scan('files_encryption');
120
-	}
121
-
122
-
123
-	/**
124
-	 * reorganize folder structure for user
125
-	 *
126
-	 * @param string $user
127
-	 */
128
-	public function reorganizeFolderStructureForUser($user) {
129
-		// backup all keys
130
-		\OC_Util::tearDownFS();
131
-		\OC_Util::setupFS($user);
132
-		if ($this->backupUserKeys($user)) {
133
-			// rename users private key
134
-			$this->renameUsersPrivateKey($user);
135
-			$this->renameUsersPublicKey($user);
136
-			// rename file keys
137
-			$path = '/files_encryption/keys';
138
-			$this->renameFileKeys($user, $path);
139
-			$trashPath = '/files_trashbin/keys';
140
-			if (\OC_App::isEnabled('files_trashbin') && $this->view->is_dir($user . '/' . $trashPath)) {
141
-				$this->renameFileKeys($user, $trashPath, true);
142
-				$this->view->deleteAll($trashPath);
143
-			}
144
-			// delete old folders
145
-			$this->deleteOldKeys($user);
146
-			$this->view->getMount('/' . $user)->getStorage()->getScanner()->scan('files_encryption');
147
-		}
148
-	}
149
-
150
-	/**
151
-	 * update database
152
-	 */
153
-	public function updateDB() {
154
-
155
-		// make sure that we don't update the file cache multiple times
156
-		// only update during the first run
157
-		if ($this->installedVersion === '-1') {
158
-			return;
159
-		}
160
-
161
-		// delete left-over from old encryption which is no longer needed
162
-		$this->config->deleteAppValue('files_encryption', 'ocsid');
163
-		$this->config->deleteAppValue('files_encryption', 'types');
164
-		$this->config->deleteAppValue('files_encryption', 'enabled');
165
-
166
-		$oldAppValues = $this->connection->getQueryBuilder();
167
-		$oldAppValues->select('*')
168
-			->from('appconfig')
169
-			->where($oldAppValues->expr()->eq('appid', $oldAppValues->createParameter('appid')))
170
-			->setParameter('appid', 'files_encryption');
171
-		$appSettings = $oldAppValues->execute();
172
-
173
-		while ($row = $appSettings->fetch()) {
174
-			// 'installed_version' gets deleted at the end of the migration process
175
-			if ($row['configkey'] !== 'installed_version' ) {
176
-				$this->config->setAppValue('encryption', $row['configkey'], $row['configvalue']);
177
-				$this->config->deleteAppValue('files_encryption', $row['configkey']);
178
-			}
179
-		}
180
-
181
-		$oldPreferences = $this->connection->getQueryBuilder();
182
-		$oldPreferences->select('*')
183
-			->from('preferences')
184
-			->where($oldPreferences->expr()->eq('appid', $oldPreferences->createParameter('appid')))
185
-			->setParameter('appid', 'files_encryption');
186
-		$preferenceSettings = $oldPreferences->execute();
187
-
188
-		while ($row = $preferenceSettings->fetch()) {
189
-			$this->config->setUserValue($row['userid'], 'encryption', $row['configkey'], $row['configvalue']);
190
-			$this->config->deleteUserValue($row['userid'], 'files_encryption', $row['configkey']);
191
-		}
192
-	}
193
-
194
-	/**
195
-	 * create backup of system-wide keys
196
-	 */
197
-	private function backupSystemWideKeys() {
198
-		$backupDir = 'encryption_migration_backup_' . date("Y-m-d_H-i-s");
199
-		$this->view->mkdir($backupDir);
200
-		$this->view->copy('files_encryption', $backupDir . '/files_encryption');
201
-	}
202
-
203
-	/**
204
-	 * create backup of user specific keys
205
-	 *
206
-	 * @param string $user
207
-	 * @return bool
208
-	 */
209
-	private function backupUserKeys($user) {
210
-		$encryptionDir = $user . '/files_encryption';
211
-		if ($this->view->is_dir($encryptionDir)) {
212
-			$backupDir = $user . '/encryption_migration_backup_' . date("Y-m-d_H-i-s");
213
-			$this->view->mkdir($backupDir);
214
-			$this->view->copy($encryptionDir, $backupDir);
215
-			return true;
216
-		}
217
-		return false;
218
-	}
219
-
220
-	/**
221
-	 * rename system-wide private keys
222
-	 */
223
-	private function renameSystemPrivateKeys() {
224
-		$dh = $this->view->opendir('files_encryption');
225
-		$this->createPathForKeys('/files_encryption/' . $this->moduleId );
226
-		if (is_resource($dh)) {
227
-			while (($privateKey = readdir($dh)) !== false) {
228
-				if (!\OC\Files\Filesystem::isIgnoredDir($privateKey) ) {
229
-					if (!$this->view->is_dir('/files_encryption/' . $privateKey)) {
230
-						$this->view->rename('files_encryption/' . $privateKey, 'files_encryption/' . $this->moduleId . '/' . $privateKey);
231
-						$this->renameSystemPublicKey($privateKey);
232
-					}
233
-				}
234
-			}
235
-			closedir($dh);
236
-		}
237
-	}
238
-
239
-	/**
240
-	 * rename system wide public key
241
-	 *
242
-	 * @param string $privateKey private key for which we want to rename the corresponding public key
243
-	 */
244
-	private function renameSystemPublicKey($privateKey) {
245
-		$publicKey = substr($privateKey,0 , strrpos($privateKey, '.privateKey')) . '.publicKey';
246
-		$this->view->rename('files_encryption/public_keys/' . $publicKey, 'files_encryption/' . $this->moduleId . '/' . $publicKey);
247
-	}
248
-
249
-	/**
250
-	 * rename user-specific private keys
251
-	 *
252
-	 * @param string $user
253
-	 */
254
-	private function renameUsersPrivateKey($user) {
255
-		$oldPrivateKey = $user . '/files_encryption/' . $user . '.privateKey';
256
-		$newPrivateKey = $user . '/files_encryption/' . $this->moduleId . '/' . $user . '.privateKey';
257
-		if ($this->view->file_exists($oldPrivateKey)) {
258
-			$this->createPathForKeys(dirname($newPrivateKey));
259
-			$this->view->rename($oldPrivateKey, $newPrivateKey);
260
-		}
261
-	}
262
-
263
-	/**
264
-	 * rename user-specific public keys
265
-	 *
266
-	 * @param string $user
267
-	 */
268
-	private function renameUsersPublicKey($user) {
269
-		$oldPublicKey = '/files_encryption/public_keys/' . $user . '.publicKey';
270
-		$newPublicKey = $user . '/files_encryption/' . $this->moduleId . '/' . $user . '.publicKey';
271
-		if ($this->view->file_exists($oldPublicKey)) {
272
-			$this->createPathForKeys(dirname($newPublicKey));
273
-			$this->view->rename($oldPublicKey, $newPublicKey);
274
-		}
275
-	}
276
-
277
-	/**
278
-	 * rename file keys
279
-	 *
280
-	 * @param string $user
281
-	 * @param string $path
282
-	 * @param bool $trash
283
-	 */
284
-	private function renameFileKeys($user, $path, $trash = false) {
285
-
286
-		if ($this->view->is_dir($user . '/' . $path) === false) {
287
-			$this->logger->info('Skip dir /' . $user . '/' . $path . ': does not exist');
288
-			return;
289
-		}
290
-
291
-		$dh = $this->view->opendir($user . '/' . $path);
292
-
293
-		if (is_resource($dh)) {
294
-			while (($file = readdir($dh)) !== false) {
295
-				if (!\OC\Files\Filesystem::isIgnoredDir($file)) {
296
-					if ($this->view->is_dir($user . '/' . $path . '/' . $file)) {
297
-						$this->renameFileKeys($user, $path . '/' . $file, $trash);
298
-					} else {
299
-						$target = $this->getTargetDir($user, $path, $file, $trash);
300
-						if ($target !== false) {
301
-							$this->createPathForKeys(dirname($target));
302
-							$this->view->rename($user . '/' . $path . '/' . $file, $target);
303
-						} else {
304
-							$this->logger->warning(
305
-								'did not move key "' . $file
306
-								. '" could not find the corresponding file in /data/' . $user . '/files.'
307
-							. 'Most likely the key was already moved in a previous migration run and is already on the right place.');
308
-						}
309
-					}
310
-				}
311
-			}
312
-			closedir($dh);
313
-		}
314
-	}
315
-
316
-	/**
317
-	 * get system mount points
318
-	 * wrap static method so that it can be mocked for testing
319
-	 *
320
-	 * @internal
321
-	 * @return array
322
-	 */
323
-	protected function getSystemMountPoints() {
324
-		return \OC_Mount_Config::getSystemMountPoints();
325
-	}
326
-
327
-	/**
328
-	 * generate target directory
329
-	 *
330
-	 * @param string $user
331
-	 * @param string $keyPath
332
-	 * @param string $filename
333
-	 * @param bool $trash
334
-	 * @return string
335
-	 */
336
-	private function getTargetDir($user, $keyPath, $filename, $trash) {
337
-		if ($trash) {
338
-			$filePath = substr($keyPath, strlen('/files_trashbin/keys/'));
339
-			$targetDir = $user . '/files_encryption/keys/files_trashbin/' . $filePath . '/' . $this->moduleId . '/' . $filename;
340
-		} else {
341
-			$filePath = substr($keyPath, strlen('/files_encryption/keys/'));
342
-			$targetDir = $user . '/files_encryption/keys/files/' . $filePath . '/' . $this->moduleId . '/' . $filename;
343
-		}
344
-
345
-		if ($user === '') {
346
-			// for system wide mounts we need to check if the mount point really exists
347
-			$normalized = \OC\Files\Filesystem::normalizePath($filePath);
348
-			$systemMountPoints = $this->getSystemMountPoints();
349
-			foreach ($systemMountPoints as $mountPoint) {
350
-				$normalizedMountPoint = \OC\Files\Filesystem::normalizePath($mountPoint['mountpoint']) . '/';
351
-				if (strpos($normalized, $normalizedMountPoint) === 0)
352
-					return $targetDir;
353
-			}
354
-		} else if ($trash === false && $this->view->file_exists('/' . $user. '/files/' . $filePath)) {
355
-			return $targetDir;
356
-		} else if ($trash === true && $this->view->file_exists('/' . $user. '/files_trashbin/' . $filePath)) {
357
-				return $targetDir;
358
-			}
359
-
360
-		return false;
361
-	}
362
-
363
-	/**
364
-	 * delete old keys
365
-	 *
366
-	 * @param string $user
367
-	 */
368
-	private function deleteOldKeys($user) {
369
-		$this->view->deleteAll($user . '/files_encryption/keyfiles');
370
-		$this->view->deleteAll($user . '/files_encryption/share-keys');
371
-	}
372
-
373
-	/**
374
-	 * create directories for the keys recursively
375
-	 *
376
-	 * @param string $path
377
-	 */
378
-	private function createPathForKeys($path) {
379
-		if (!$this->view->file_exists($path)) {
380
-			$sub_dirs = explode('/', $path);
381
-			$dir = '';
382
-			foreach ($sub_dirs as $sub_dir) {
383
-				$dir .= '/' . $sub_dir;
384
-				if (!$this->view->is_dir($dir)) {
385
-					$this->view->mkdir($dir);
386
-				}
387
-			}
388
-		}
389
-	}
35
+    private $moduleId;
36
+    /** @var \OC\Files\View */
37
+    private $view;
38
+    /** @var \OCP\IDBConnection */
39
+    private $connection;
40
+    /** @var IConfig */
41
+    private $config;
42
+    /** @var  ILogger */
43
+    private $logger;
44
+    /** @var string*/
45
+    protected $installedVersion;
46
+
47
+    /**
48
+     * @param IConfig $config
49
+     * @param View $view
50
+     * @param IDBConnection $connection
51
+     * @param ILogger $logger
52
+     */
53
+    public function __construct(IConfig $config, View $view, IDBConnection $connection, ILogger $logger) {
54
+        $this->view = $view;
55
+        $this->view->disableCacheUpdate();
56
+        $this->connection = $connection;
57
+        $this->moduleId = \OCA\Encryption\Crypto\Encryption::ID;
58
+        $this->config = $config;
59
+        $this->logger = $logger;
60
+        $this->installedVersion = $this->config->getAppValue('files_encryption', 'installed_version', '-1');
61
+    }
62
+
63
+    public function finalCleanUp() {
64
+        $this->view->deleteAll('files_encryption/public_keys');
65
+        $this->updateFileCache();
66
+        $this->config->deleteAppValue('files_encryption', 'installed_version');
67
+    }
68
+
69
+    /**
70
+     * update file cache, copy unencrypted_size to the 'size' column
71
+     */
72
+    private function updateFileCache() {
73
+        // make sure that we don't update the file cache multiple times
74
+        // only update during the first run
75
+        if ($this->installedVersion !== '-1') {
76
+            $query = $this->connection->getQueryBuilder();
77
+            $query->update('filecache')
78
+                ->set('size', 'unencrypted_size')
79
+                ->where($query->expr()->eq('encrypted', $query->createParameter('encrypted')))
80
+                ->setParameter('encrypted', 1);
81
+            $query->execute();
82
+        }
83
+    }
84
+
85
+    /**
86
+     * iterate through users and reorganize the folder structure
87
+     */
88
+    public function reorganizeFolderStructure() {
89
+        $this->reorganizeSystemFolderStructure();
90
+
91
+        $limit = 500;
92
+        $offset = 0;
93
+        do {
94
+            $users = \OCP\User::getUsers('', $limit, $offset);
95
+            foreach ($users as $user) {
96
+                $this->reorganizeFolderStructureForUser($user);
97
+            }
98
+            $offset += $limit;
99
+        } while (count($users) >= $limit);
100
+    }
101
+
102
+    /**
103
+     * reorganize system wide folder structure
104
+     */
105
+    public function reorganizeSystemFolderStructure() {
106
+
107
+        $this->createPathForKeys('/files_encryption');
108
+
109
+        // backup system wide folders
110
+        $this->backupSystemWideKeys();
111
+
112
+        // rename system wide mount point
113
+        $this->renameFileKeys('', '/files_encryption/keys');
114
+
115
+        // rename system private keys
116
+        $this->renameSystemPrivateKeys();
117
+
118
+        $storage = $this->view->getMount('')->getStorage();
119
+        $storage->getScanner()->scan('files_encryption');
120
+    }
121
+
122
+
123
+    /**
124
+     * reorganize folder structure for user
125
+     *
126
+     * @param string $user
127
+     */
128
+    public function reorganizeFolderStructureForUser($user) {
129
+        // backup all keys
130
+        \OC_Util::tearDownFS();
131
+        \OC_Util::setupFS($user);
132
+        if ($this->backupUserKeys($user)) {
133
+            // rename users private key
134
+            $this->renameUsersPrivateKey($user);
135
+            $this->renameUsersPublicKey($user);
136
+            // rename file keys
137
+            $path = '/files_encryption/keys';
138
+            $this->renameFileKeys($user, $path);
139
+            $trashPath = '/files_trashbin/keys';
140
+            if (\OC_App::isEnabled('files_trashbin') && $this->view->is_dir($user . '/' . $trashPath)) {
141
+                $this->renameFileKeys($user, $trashPath, true);
142
+                $this->view->deleteAll($trashPath);
143
+            }
144
+            // delete old folders
145
+            $this->deleteOldKeys($user);
146
+            $this->view->getMount('/' . $user)->getStorage()->getScanner()->scan('files_encryption');
147
+        }
148
+    }
149
+
150
+    /**
151
+     * update database
152
+     */
153
+    public function updateDB() {
154
+
155
+        // make sure that we don't update the file cache multiple times
156
+        // only update during the first run
157
+        if ($this->installedVersion === '-1') {
158
+            return;
159
+        }
160
+
161
+        // delete left-over from old encryption which is no longer needed
162
+        $this->config->deleteAppValue('files_encryption', 'ocsid');
163
+        $this->config->deleteAppValue('files_encryption', 'types');
164
+        $this->config->deleteAppValue('files_encryption', 'enabled');
165
+
166
+        $oldAppValues = $this->connection->getQueryBuilder();
167
+        $oldAppValues->select('*')
168
+            ->from('appconfig')
169
+            ->where($oldAppValues->expr()->eq('appid', $oldAppValues->createParameter('appid')))
170
+            ->setParameter('appid', 'files_encryption');
171
+        $appSettings = $oldAppValues->execute();
172
+
173
+        while ($row = $appSettings->fetch()) {
174
+            // 'installed_version' gets deleted at the end of the migration process
175
+            if ($row['configkey'] !== 'installed_version' ) {
176
+                $this->config->setAppValue('encryption', $row['configkey'], $row['configvalue']);
177
+                $this->config->deleteAppValue('files_encryption', $row['configkey']);
178
+            }
179
+        }
180
+
181
+        $oldPreferences = $this->connection->getQueryBuilder();
182
+        $oldPreferences->select('*')
183
+            ->from('preferences')
184
+            ->where($oldPreferences->expr()->eq('appid', $oldPreferences->createParameter('appid')))
185
+            ->setParameter('appid', 'files_encryption');
186
+        $preferenceSettings = $oldPreferences->execute();
187
+
188
+        while ($row = $preferenceSettings->fetch()) {
189
+            $this->config->setUserValue($row['userid'], 'encryption', $row['configkey'], $row['configvalue']);
190
+            $this->config->deleteUserValue($row['userid'], 'files_encryption', $row['configkey']);
191
+        }
192
+    }
193
+
194
+    /**
195
+     * create backup of system-wide keys
196
+     */
197
+    private function backupSystemWideKeys() {
198
+        $backupDir = 'encryption_migration_backup_' . date("Y-m-d_H-i-s");
199
+        $this->view->mkdir($backupDir);
200
+        $this->view->copy('files_encryption', $backupDir . '/files_encryption');
201
+    }
202
+
203
+    /**
204
+     * create backup of user specific keys
205
+     *
206
+     * @param string $user
207
+     * @return bool
208
+     */
209
+    private function backupUserKeys($user) {
210
+        $encryptionDir = $user . '/files_encryption';
211
+        if ($this->view->is_dir($encryptionDir)) {
212
+            $backupDir = $user . '/encryption_migration_backup_' . date("Y-m-d_H-i-s");
213
+            $this->view->mkdir($backupDir);
214
+            $this->view->copy($encryptionDir, $backupDir);
215
+            return true;
216
+        }
217
+        return false;
218
+    }
219
+
220
+    /**
221
+     * rename system-wide private keys
222
+     */
223
+    private function renameSystemPrivateKeys() {
224
+        $dh = $this->view->opendir('files_encryption');
225
+        $this->createPathForKeys('/files_encryption/' . $this->moduleId );
226
+        if (is_resource($dh)) {
227
+            while (($privateKey = readdir($dh)) !== false) {
228
+                if (!\OC\Files\Filesystem::isIgnoredDir($privateKey) ) {
229
+                    if (!$this->view->is_dir('/files_encryption/' . $privateKey)) {
230
+                        $this->view->rename('files_encryption/' . $privateKey, 'files_encryption/' . $this->moduleId . '/' . $privateKey);
231
+                        $this->renameSystemPublicKey($privateKey);
232
+                    }
233
+                }
234
+            }
235
+            closedir($dh);
236
+        }
237
+    }
238
+
239
+    /**
240
+     * rename system wide public key
241
+     *
242
+     * @param string $privateKey private key for which we want to rename the corresponding public key
243
+     */
244
+    private function renameSystemPublicKey($privateKey) {
245
+        $publicKey = substr($privateKey,0 , strrpos($privateKey, '.privateKey')) . '.publicKey';
246
+        $this->view->rename('files_encryption/public_keys/' . $publicKey, 'files_encryption/' . $this->moduleId . '/' . $publicKey);
247
+    }
248
+
249
+    /**
250
+     * rename user-specific private keys
251
+     *
252
+     * @param string $user
253
+     */
254
+    private function renameUsersPrivateKey($user) {
255
+        $oldPrivateKey = $user . '/files_encryption/' . $user . '.privateKey';
256
+        $newPrivateKey = $user . '/files_encryption/' . $this->moduleId . '/' . $user . '.privateKey';
257
+        if ($this->view->file_exists($oldPrivateKey)) {
258
+            $this->createPathForKeys(dirname($newPrivateKey));
259
+            $this->view->rename($oldPrivateKey, $newPrivateKey);
260
+        }
261
+    }
262
+
263
+    /**
264
+     * rename user-specific public keys
265
+     *
266
+     * @param string $user
267
+     */
268
+    private function renameUsersPublicKey($user) {
269
+        $oldPublicKey = '/files_encryption/public_keys/' . $user . '.publicKey';
270
+        $newPublicKey = $user . '/files_encryption/' . $this->moduleId . '/' . $user . '.publicKey';
271
+        if ($this->view->file_exists($oldPublicKey)) {
272
+            $this->createPathForKeys(dirname($newPublicKey));
273
+            $this->view->rename($oldPublicKey, $newPublicKey);
274
+        }
275
+    }
276
+
277
+    /**
278
+     * rename file keys
279
+     *
280
+     * @param string $user
281
+     * @param string $path
282
+     * @param bool $trash
283
+     */
284
+    private function renameFileKeys($user, $path, $trash = false) {
285
+
286
+        if ($this->view->is_dir($user . '/' . $path) === false) {
287
+            $this->logger->info('Skip dir /' . $user . '/' . $path . ': does not exist');
288
+            return;
289
+        }
290
+
291
+        $dh = $this->view->opendir($user . '/' . $path);
292
+
293
+        if (is_resource($dh)) {
294
+            while (($file = readdir($dh)) !== false) {
295
+                if (!\OC\Files\Filesystem::isIgnoredDir($file)) {
296
+                    if ($this->view->is_dir($user . '/' . $path . '/' . $file)) {
297
+                        $this->renameFileKeys($user, $path . '/' . $file, $trash);
298
+                    } else {
299
+                        $target = $this->getTargetDir($user, $path, $file, $trash);
300
+                        if ($target !== false) {
301
+                            $this->createPathForKeys(dirname($target));
302
+                            $this->view->rename($user . '/' . $path . '/' . $file, $target);
303
+                        } else {
304
+                            $this->logger->warning(
305
+                                'did not move key "' . $file
306
+                                . '" could not find the corresponding file in /data/' . $user . '/files.'
307
+                            . 'Most likely the key was already moved in a previous migration run and is already on the right place.');
308
+                        }
309
+                    }
310
+                }
311
+            }
312
+            closedir($dh);
313
+        }
314
+    }
315
+
316
+    /**
317
+     * get system mount points
318
+     * wrap static method so that it can be mocked for testing
319
+     *
320
+     * @internal
321
+     * @return array
322
+     */
323
+    protected function getSystemMountPoints() {
324
+        return \OC_Mount_Config::getSystemMountPoints();
325
+    }
326
+
327
+    /**
328
+     * generate target directory
329
+     *
330
+     * @param string $user
331
+     * @param string $keyPath
332
+     * @param string $filename
333
+     * @param bool $trash
334
+     * @return string
335
+     */
336
+    private function getTargetDir($user, $keyPath, $filename, $trash) {
337
+        if ($trash) {
338
+            $filePath = substr($keyPath, strlen('/files_trashbin/keys/'));
339
+            $targetDir = $user . '/files_encryption/keys/files_trashbin/' . $filePath . '/' . $this->moduleId . '/' . $filename;
340
+        } else {
341
+            $filePath = substr($keyPath, strlen('/files_encryption/keys/'));
342
+            $targetDir = $user . '/files_encryption/keys/files/' . $filePath . '/' . $this->moduleId . '/' . $filename;
343
+        }
344
+
345
+        if ($user === '') {
346
+            // for system wide mounts we need to check if the mount point really exists
347
+            $normalized = \OC\Files\Filesystem::normalizePath($filePath);
348
+            $systemMountPoints = $this->getSystemMountPoints();
349
+            foreach ($systemMountPoints as $mountPoint) {
350
+                $normalizedMountPoint = \OC\Files\Filesystem::normalizePath($mountPoint['mountpoint']) . '/';
351
+                if (strpos($normalized, $normalizedMountPoint) === 0)
352
+                    return $targetDir;
353
+            }
354
+        } else if ($trash === false && $this->view->file_exists('/' . $user. '/files/' . $filePath)) {
355
+            return $targetDir;
356
+        } else if ($trash === true && $this->view->file_exists('/' . $user. '/files_trashbin/' . $filePath)) {
357
+                return $targetDir;
358
+            }
359
+
360
+        return false;
361
+    }
362
+
363
+    /**
364
+     * delete old keys
365
+     *
366
+     * @param string $user
367
+     */
368
+    private function deleteOldKeys($user) {
369
+        $this->view->deleteAll($user . '/files_encryption/keyfiles');
370
+        $this->view->deleteAll($user . '/files_encryption/share-keys');
371
+    }
372
+
373
+    /**
374
+     * create directories for the keys recursively
375
+     *
376
+     * @param string $path
377
+     */
378
+    private function createPathForKeys($path) {
379
+        if (!$this->view->file_exists($path)) {
380
+            $sub_dirs = explode('/', $path);
381
+            $dir = '';
382
+            foreach ($sub_dirs as $sub_dir) {
383
+                $dir .= '/' . $sub_dir;
384
+                if (!$this->view->is_dir($dir)) {
385
+                    $this->view->mkdir($dir);
386
+                }
387
+            }
388
+        }
389
+    }
390 390
 }
Please login to merge, or discard this patch.
Spacing   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -137,13 +137,13 @@  discard block
 block discarded – undo
137 137
 			$path = '/files_encryption/keys';
138 138
 			$this->renameFileKeys($user, $path);
139 139
 			$trashPath = '/files_trashbin/keys';
140
-			if (\OC_App::isEnabled('files_trashbin') && $this->view->is_dir($user . '/' . $trashPath)) {
140
+			if (\OC_App::isEnabled('files_trashbin') && $this->view->is_dir($user.'/'.$trashPath)) {
141 141
 				$this->renameFileKeys($user, $trashPath, true);
142 142
 				$this->view->deleteAll($trashPath);
143 143
 			}
144 144
 			// delete old folders
145 145
 			$this->deleteOldKeys($user);
146
-			$this->view->getMount('/' . $user)->getStorage()->getScanner()->scan('files_encryption');
146
+			$this->view->getMount('/'.$user)->getStorage()->getScanner()->scan('files_encryption');
147 147
 		}
148 148
 	}
149 149
 
@@ -172,7 +172,7 @@  discard block
 block discarded – undo
172 172
 
173 173
 		while ($row = $appSettings->fetch()) {
174 174
 			// 'installed_version' gets deleted at the end of the migration process
175
-			if ($row['configkey'] !== 'installed_version' ) {
175
+			if ($row['configkey'] !== 'installed_version') {
176 176
 				$this->config->setAppValue('encryption', $row['configkey'], $row['configvalue']);
177 177
 				$this->config->deleteAppValue('files_encryption', $row['configkey']);
178 178
 			}
@@ -195,9 +195,9 @@  discard block
 block discarded – undo
195 195
 	 * create backup of system-wide keys
196 196
 	 */
197 197
 	private function backupSystemWideKeys() {
198
-		$backupDir = 'encryption_migration_backup_' . date("Y-m-d_H-i-s");
198
+		$backupDir = 'encryption_migration_backup_'.date("Y-m-d_H-i-s");
199 199
 		$this->view->mkdir($backupDir);
200
-		$this->view->copy('files_encryption', $backupDir . '/files_encryption');
200
+		$this->view->copy('files_encryption', $backupDir.'/files_encryption');
201 201
 	}
202 202
 
203 203
 	/**
@@ -207,9 +207,9 @@  discard block
 block discarded – undo
207 207
 	 * @return bool
208 208
 	 */
209 209
 	private function backupUserKeys($user) {
210
-		$encryptionDir = $user . '/files_encryption';
210
+		$encryptionDir = $user.'/files_encryption';
211 211
 		if ($this->view->is_dir($encryptionDir)) {
212
-			$backupDir = $user . '/encryption_migration_backup_' . date("Y-m-d_H-i-s");
212
+			$backupDir = $user.'/encryption_migration_backup_'.date("Y-m-d_H-i-s");
213 213
 			$this->view->mkdir($backupDir);
214 214
 			$this->view->copy($encryptionDir, $backupDir);
215 215
 			return true;
@@ -222,12 +222,12 @@  discard block
 block discarded – undo
222 222
 	 */
223 223
 	private function renameSystemPrivateKeys() {
224 224
 		$dh = $this->view->opendir('files_encryption');
225
-		$this->createPathForKeys('/files_encryption/' . $this->moduleId );
225
+		$this->createPathForKeys('/files_encryption/'.$this->moduleId);
226 226
 		if (is_resource($dh)) {
227 227
 			while (($privateKey = readdir($dh)) !== false) {
228
-				if (!\OC\Files\Filesystem::isIgnoredDir($privateKey) ) {
229
-					if (!$this->view->is_dir('/files_encryption/' . $privateKey)) {
230
-						$this->view->rename('files_encryption/' . $privateKey, 'files_encryption/' . $this->moduleId . '/' . $privateKey);
228
+				if (!\OC\Files\Filesystem::isIgnoredDir($privateKey)) {
229
+					if (!$this->view->is_dir('/files_encryption/'.$privateKey)) {
230
+						$this->view->rename('files_encryption/'.$privateKey, 'files_encryption/'.$this->moduleId.'/'.$privateKey);
231 231
 						$this->renameSystemPublicKey($privateKey);
232 232
 					}
233 233
 				}
@@ -242,8 +242,8 @@  discard block
 block discarded – undo
242 242
 	 * @param string $privateKey private key for which we want to rename the corresponding public key
243 243
 	 */
244 244
 	private function renameSystemPublicKey($privateKey) {
245
-		$publicKey = substr($privateKey,0 , strrpos($privateKey, '.privateKey')) . '.publicKey';
246
-		$this->view->rename('files_encryption/public_keys/' . $publicKey, 'files_encryption/' . $this->moduleId . '/' . $publicKey);
245
+		$publicKey = substr($privateKey, 0, strrpos($privateKey, '.privateKey')).'.publicKey';
246
+		$this->view->rename('files_encryption/public_keys/'.$publicKey, 'files_encryption/'.$this->moduleId.'/'.$publicKey);
247 247
 	}
248 248
 
249 249
 	/**
@@ -252,8 +252,8 @@  discard block
 block discarded – undo
252 252
 	 * @param string $user
253 253
 	 */
254 254
 	private function renameUsersPrivateKey($user) {
255
-		$oldPrivateKey = $user . '/files_encryption/' . $user . '.privateKey';
256
-		$newPrivateKey = $user . '/files_encryption/' . $this->moduleId . '/' . $user . '.privateKey';
255
+		$oldPrivateKey = $user.'/files_encryption/'.$user.'.privateKey';
256
+		$newPrivateKey = $user.'/files_encryption/'.$this->moduleId.'/'.$user.'.privateKey';
257 257
 		if ($this->view->file_exists($oldPrivateKey)) {
258 258
 			$this->createPathForKeys(dirname($newPrivateKey));
259 259
 			$this->view->rename($oldPrivateKey, $newPrivateKey);
@@ -266,8 +266,8 @@  discard block
 block discarded – undo
266 266
 	 * @param string $user
267 267
 	 */
268 268
 	private function renameUsersPublicKey($user) {
269
-		$oldPublicKey = '/files_encryption/public_keys/' . $user . '.publicKey';
270
-		$newPublicKey = $user . '/files_encryption/' . $this->moduleId . '/' . $user . '.publicKey';
269
+		$oldPublicKey = '/files_encryption/public_keys/'.$user.'.publicKey';
270
+		$newPublicKey = $user.'/files_encryption/'.$this->moduleId.'/'.$user.'.publicKey';
271 271
 		if ($this->view->file_exists($oldPublicKey)) {
272 272
 			$this->createPathForKeys(dirname($newPublicKey));
273 273
 			$this->view->rename($oldPublicKey, $newPublicKey);
@@ -283,27 +283,27 @@  discard block
 block discarded – undo
283 283
 	 */
284 284
 	private function renameFileKeys($user, $path, $trash = false) {
285 285
 
286
-		if ($this->view->is_dir($user . '/' . $path) === false) {
287
-			$this->logger->info('Skip dir /' . $user . '/' . $path . ': does not exist');
286
+		if ($this->view->is_dir($user.'/'.$path) === false) {
287
+			$this->logger->info('Skip dir /'.$user.'/'.$path.': does not exist');
288 288
 			return;
289 289
 		}
290 290
 
291
-		$dh = $this->view->opendir($user . '/' . $path);
291
+		$dh = $this->view->opendir($user.'/'.$path);
292 292
 
293 293
 		if (is_resource($dh)) {
294 294
 			while (($file = readdir($dh)) !== false) {
295 295
 				if (!\OC\Files\Filesystem::isIgnoredDir($file)) {
296
-					if ($this->view->is_dir($user . '/' . $path . '/' . $file)) {
297
-						$this->renameFileKeys($user, $path . '/' . $file, $trash);
296
+					if ($this->view->is_dir($user.'/'.$path.'/'.$file)) {
297
+						$this->renameFileKeys($user, $path.'/'.$file, $trash);
298 298
 					} else {
299 299
 						$target = $this->getTargetDir($user, $path, $file, $trash);
300 300
 						if ($target !== false) {
301 301
 							$this->createPathForKeys(dirname($target));
302
-							$this->view->rename($user . '/' . $path . '/' . $file, $target);
302
+							$this->view->rename($user.'/'.$path.'/'.$file, $target);
303 303
 						} else {
304 304
 							$this->logger->warning(
305
-								'did not move key "' . $file
306
-								. '" could not find the corresponding file in /data/' . $user . '/files.'
305
+								'did not move key "'.$file
306
+								. '" could not find the corresponding file in /data/'.$user.'/files.'
307 307
 							. 'Most likely the key was already moved in a previous migration run and is already on the right place.');
308 308
 						}
309 309
 					}
@@ -336,10 +336,10 @@  discard block
 block discarded – undo
336 336
 	private function getTargetDir($user, $keyPath, $filename, $trash) {
337 337
 		if ($trash) {
338 338
 			$filePath = substr($keyPath, strlen('/files_trashbin/keys/'));
339
-			$targetDir = $user . '/files_encryption/keys/files_trashbin/' . $filePath . '/' . $this->moduleId . '/' . $filename;
339
+			$targetDir = $user.'/files_encryption/keys/files_trashbin/'.$filePath.'/'.$this->moduleId.'/'.$filename;
340 340
 		} else {
341 341
 			$filePath = substr($keyPath, strlen('/files_encryption/keys/'));
342
-			$targetDir = $user . '/files_encryption/keys/files/' . $filePath . '/' . $this->moduleId . '/' . $filename;
342
+			$targetDir = $user.'/files_encryption/keys/files/'.$filePath.'/'.$this->moduleId.'/'.$filename;
343 343
 		}
344 344
 
345 345
 		if ($user === '') {
@@ -347,13 +347,13 @@  discard block
 block discarded – undo
347 347
 			$normalized = \OC\Files\Filesystem::normalizePath($filePath);
348 348
 			$systemMountPoints = $this->getSystemMountPoints();
349 349
 			foreach ($systemMountPoints as $mountPoint) {
350
-				$normalizedMountPoint = \OC\Files\Filesystem::normalizePath($mountPoint['mountpoint']) . '/';
350
+				$normalizedMountPoint = \OC\Files\Filesystem::normalizePath($mountPoint['mountpoint']).'/';
351 351
 				if (strpos($normalized, $normalizedMountPoint) === 0)
352 352
 					return $targetDir;
353 353
 			}
354
-		} else if ($trash === false && $this->view->file_exists('/' . $user. '/files/' . $filePath)) {
354
+		} else if ($trash === false && $this->view->file_exists('/'.$user.'/files/'.$filePath)) {
355 355
 			return $targetDir;
356
-		} else if ($trash === true && $this->view->file_exists('/' . $user. '/files_trashbin/' . $filePath)) {
356
+		} else if ($trash === true && $this->view->file_exists('/'.$user.'/files_trashbin/'.$filePath)) {
357 357
 				return $targetDir;
358 358
 			}
359 359
 
@@ -366,8 +366,8 @@  discard block
 block discarded – undo
366 366
 	 * @param string $user
367 367
 	 */
368 368
 	private function deleteOldKeys($user) {
369
-		$this->view->deleteAll($user . '/files_encryption/keyfiles');
370
-		$this->view->deleteAll($user . '/files_encryption/share-keys');
369
+		$this->view->deleteAll($user.'/files_encryption/keyfiles');
370
+		$this->view->deleteAll($user.'/files_encryption/share-keys');
371 371
 	}
372 372
 
373 373
 	/**
@@ -380,7 +380,7 @@  discard block
 block discarded – undo
380 380
 			$sub_dirs = explode('/', $path);
381 381
 			$dir = '';
382 382
 			foreach ($sub_dirs as $sub_dir) {
383
-				$dir .= '/' . $sub_dir;
383
+				$dir .= '/'.$sub_dir;
384 384
 				if (!$this->view->is_dir($dir)) {
385 385
 					$this->view->mkdir($dir);
386 386
 				}
Please login to merge, or discard this patch.
Braces   +3 added lines, -2 removed lines patch added patch discarded remove patch
@@ -348,8 +348,9 @@
 block discarded – undo
348 348
 			$systemMountPoints = $this->getSystemMountPoints();
349 349
 			foreach ($systemMountPoints as $mountPoint) {
350 350
 				$normalizedMountPoint = \OC\Files\Filesystem::normalizePath($mountPoint['mountpoint']) . '/';
351
-				if (strpos($normalized, $normalizedMountPoint) === 0)
352
-					return $targetDir;
351
+				if (strpos($normalized, $normalizedMountPoint) === 0) {
352
+									return $targetDir;
353
+				}
353 354
 			}
354 355
 		} else if ($trash === false && $this->view->file_exists('/' . $user. '/files/' . $filePath)) {
355 356
 			return $targetDir;
Please login to merge, or discard this patch.