summaryrefslogtreecommitdiffstats
path: root/apps/files_encryption/command
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-01-22 16:10:45 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-01-22 16:10:45 +0100
commitfc1865449d30f78e55e2830555a92bf4e8c1dfcd (patch)
treef6b94ef2253fb71ae93677dfc47fe42e4b0ccb20 /apps/files_encryption/command
parentb5b491d1bb12a869ddae7878e8aa441109419a00 (diff)
downloadnextcloud-server-fc1865449d30f78e55e2830555a92bf4e8c1dfcd.tar.gz
nextcloud-server-fc1865449d30f78e55e2830555a92bf4e8c1dfcd.zip
adding console command to migrate encryption keys - refs #13450
Diffstat (limited to 'apps/files_encryption/command')
-rw-r--r--apps/files_encryption/command/migratekeys.php74
1 files changed, 74 insertions, 0 deletions
diff --git a/apps/files_encryption/command/migratekeys.php b/apps/files_encryption/command/migratekeys.php
new file mode 100644
index 00000000000..200d7367da6
--- /dev/null
+++ b/apps/files_encryption/command/migratekeys.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Copyright (c) 2015 Thomas Müller <thomas.mueller@tmit.eu>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_Encryption\Command;
+
+use OCA\Files_Encryption\Migration;
+use OCP\IUserBackend;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class MigrateKeys extends Command {
+
+ /** @var \OC\User\Manager */
+ private $userManager;
+
+ public function __construct(\OC\User\Manager $userManager) {
+ $this->userManager = $userManager;
+ parent::__construct();
+ }
+
+ protected function configure() {
+ $this
+ ->setName('encryption:migrate-keys')
+ ->setDescription('migrate encryption keys')
+ ->addArgument(
+ 'user_id',
+ InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
+ 'will migrate keys of the given user(s)'
+ );
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+
+ // perform system reorganization
+ $migration = new Migration();
+ $output->writeln("Reorganize system folder structure");
+ $migration->reorganizeSystemFolderStructure();
+
+ $users = $input->getArgument('user_id');
+ if (!empty($users)) {
+ foreach ($users as $user) {
+ if ($this->userManager->userExists($user)) {
+ $output->writeln("Migrating keys <info>$user</info>");
+ $migration->reorganizeFolderStructureForUser($user);
+ } else {
+ $output->writeln("<error>Unknown user $user</error>");
+ }
+ }
+ } else {
+ foreach($this->userManager->getBackends() as $backend) {
+ $name = get_class($backend);
+
+ if ($backend instanceof IUserBackend) {
+ $name = $backend->getBackendName();
+ }
+
+ $output->writeln("Migrating keys for users on backend <info>$name</info>");
+ $users = $backend->getUsers();
+ foreach ($users as $user) {
+ $output->writeln(" <info>$user</info>");
+ $migration->reorganizeFolderStructureForUser($user);
+ }
+ }
+ }
+
+ }
+}