[Pkg-owncloud-commits] [owncloud] 71/215: Add occ commands to manage the encryption modules

David Prévot taffit at moszumanska.debian.org
Tue May 5 01:01:24 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit f6d4bdb1fd936741252802b8e0bc79a7bd4c3905
Author: Joas Schilling <nickvergessen at owncloud.com>
Date:   Thu Apr 16 17:41:32 2015 +0200

    Add occ commands to manage the encryption modules
---
 core/command/encryption/disable.php          | 56 ++++++++++++++++++
 core/command/encryption/enable.php           | 58 ++++++++++++++++++
 core/command/encryption/listmodules.php      | 88 ++++++++++++++++++++++++++++
 core/command/encryption/setdefaultmodule.php | 77 ++++++++++++++++++++++++
 core/register_command.php                    |  4 ++
 5 files changed, 283 insertions(+)

diff --git a/core/command/encryption/disable.php b/core/command/encryption/disable.php
new file mode 100644
index 0000000..b5fce5c
--- /dev/null
+++ b/core/command/encryption/disable.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen at owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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 OC\Core\Command\Encryption;
+
+use OCP\IConfig;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Disable extends Command {
+	/** @var IConfig */
+	protected $config;
+
+	/**
+	 * @param IConfig $config
+	 */
+	public function __construct(IConfig $config) {
+		parent::__construct();
+		$this->config = $config;
+	}
+
+	protected function configure() {
+		$this
+			->setName('encryption:disable')
+			->setDescription('Disable encryption')
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output) {
+		if ($this->config->getAppValue('core', 'encryption_enabled', 'no') !== 'yes') {
+			$output->writeln('Encryption is already disabled');
+		} else {
+			$this->config->setAppValue('core', 'encryption_enabled', 'no');
+			$output->writeln('Encryption disabled');
+		}
+	}
+}
diff --git a/core/command/encryption/enable.php b/core/command/encryption/enable.php
new file mode 100644
index 0000000..0b403f8
--- /dev/null
+++ b/core/command/encryption/enable.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen at owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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 OC\Core\Command\Encryption;
+
+use OCP\IConfig;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Enable extends Command {
+	/** @var IConfig */
+	protected $config;
+
+	/**
+	 * @param IConfig $config
+	 */
+	public function __construct(IConfig $config) {
+		parent::__construct();
+		$this->config = $config;
+	}
+
+	protected function configure() {
+		$this
+			->setName('encryption:enable')
+			->setDescription('Enable encryption')
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output) {
+		if ($this->config->getAppValue('core', 'encryption_enabled', 'no') === 'yes') {
+			$output->writeln('Encryption is already enabled');
+		} else {
+			$this->config->setAppValue('core', 'encryption_enabled', 'yes');
+			$output->writeln('Encryption enabled');
+		}
+
+		$output->writeln('Default module: ' . $this->config->getAppValue('core', 'default_encryption_module', 'OC_DEFAULT_MODULE'));
+	}
+}
diff --git a/core/command/encryption/listmodules.php b/core/command/encryption/listmodules.php
new file mode 100644
index 0000000..d3fdb2d
--- /dev/null
+++ b/core/command/encryption/listmodules.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen at owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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 OC\Core\Command\Encryption;
+
+use OC\Core\Command\Base;
+use OC\Encryption\Manager;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class ListModules extends Base {
+	/** @var Manager */
+	protected $encryptionManager;
+
+	/**
+	 * @param Manager $encryptionManager
+	 */
+	public function __construct(Manager $encryptionManager) {
+		parent::__construct();
+		$this->encryptionManager = $encryptionManager;
+	}
+
+	protected function configure() {
+		parent::configure();
+
+		$this
+			->setName('encryption:list-modules')
+			->setDescription('List all available encryption modules')
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output) {
+		$encryptionModules = $this->encryptionManager->getEncryptionModules();
+		$defaultEncryptionModuleId = '';
+		try {
+			$defaultEncryptionModule = $this->encryptionManager->getDefaultEncryptionModule();
+			$defaultEncryptionModuleId = $defaultEncryptionModule->getId();
+		} catch (\Exception $e) {}
+
+		$encModules = array();
+		foreach ($encryptionModules as $module) {
+			$encModules[$module->getId()]['displayName'] = $module->getDisplayName();
+			$encModules[$module->getId()]['default'] .= $module->getId() === $defaultEncryptionModuleId;
+		}
+		$this->writeModuleList($input, $output, $encModules);
+	}
+
+	/**
+	 * @param InputInterface $input
+	 * @param OutputInterface $output
+	 * @param array $items
+	 */
+	protected function writeModuleList(InputInterface $input, OutputInterface $output, $items) {
+		switch ($input->getOption('output')) {
+			case 'plain':
+				array_walk($items, function(&$item) {
+					if (!$item['default']) {
+						$item = $item['displayName'];
+					} else {
+						$item = $item['displayName'] . ' [default*]';
+					}
+				});
+				// no break;
+
+			default:
+				parent::writeArrayInOutputFormat($input, $output, $items);
+				break;
+		}
+	}
+}
diff --git a/core/command/encryption/setdefaultmodule.php b/core/command/encryption/setdefaultmodule.php
new file mode 100644
index 0000000..fb82e87
--- /dev/null
+++ b/core/command/encryption/setdefaultmodule.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen at owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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 OC\Core\Command\Encryption;
+
+
+use OC\Encryption\Manager;
+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 SetDefaultModule extends Command {
+	/** @var Manager */
+	protected $encryptionManager;
+
+	/**
+	 * @param Manager $encryptionManager
+	 */
+	public function __construct(Manager $encryptionManager) {
+		parent::__construct();
+		$this->encryptionManager = $encryptionManager;
+	}
+
+	protected function configure() {
+		parent::configure();
+
+		$this
+			->setName('encryption:set-default-module')
+			->setDescription('Set the encryption default module')
+			->addArgument(
+				'module',
+				InputArgument::REQUIRED,
+				'ID of the encryption module that should be used'
+			)
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output) {
+		$moduleId = $input->getArgument('module');
+		$currentDefaultModuleId = '';
+		try {
+			$currentDefaultModule = $this->encryptionManager->getDefaultEncryptionModule();
+			$currentDefaultModuleId = $currentDefaultModule->getId();
+		} catch (\Exception $e) {}
+
+		if ($moduleId === $currentDefaultModuleId) {
+			$output->writeln('"' . $moduleId . '"" is already the default module');
+		} else if ($this->encryptionManager->setDefaultEncryptionModule($moduleId)) {
+			$output->writeln('Set default module to "' . $moduleId . '"');
+		} else {
+			$output->writeln('The specified module "' . $moduleId . '" does not exist');
+		}
+
+		if ($moduleId === $currentDefaultModuleId) {
+		}
+
+	}
+}
diff --git a/core/register_command.php b/core/register_command.php
index 75c0245..b9c7228 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -50,6 +50,10 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
 	$application->add(new OC\Core\Command\Background\Cron(\OC::$server->getConfig()));
 	$application->add(new OC\Core\Command\Background\WebCron(\OC::$server->getConfig()));
 	$application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig()));
+	$application->add(new OC\Core\Command\Encryption\Disable(\OC::$server->getConfig()));
+	$application->add(new OC\Core\Command\Encryption\Enable(\OC::$server->getConfig()));
+	$application->add(new OC\Core\Command\Encryption\ListModules(\OC::$server->getEncryptionManager()));
+	$application->add(new OC\Core\Command\Encryption\SetDefaultModule(\OC::$server->getEncryptionManager()));
 } else {
 	$application->add(new OC\Core\Command\Maintenance\Install(\OC::$server->getConfig()));
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list