aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Dubiniuk <victor.dubiniuk@gmail.com>2016-02-05 21:09:27 +0300
committerVictor Dubiniuk <victor.dubiniuk@gmail.com>2016-02-05 21:10:22 +0300
commitfef7fc12480207f13732f68f097d28dfbd84b2d5 (patch)
treebe946f15d082833e2ea06d22ba4547bc70b1d2aa
parent7568c402751f8387bcf8149cb303f02618205980 (diff)
downloadnextcloud-server-fef7fc12480207f13732f68f097d28dfbd84b2d5.tar.gz
nextcloud-server-fef7fc12480207f13732f68f097d28dfbd84b2d5.zip
CLI commands to check app and core signatures
-rw-r--r--core/command/integrity/checkapp.php69
-rw-r--r--core/command/integrity/checkcore.php66
-rw-r--r--core/register_command.php7
3 files changed, 142 insertions, 0 deletions
diff --git a/core/command/integrity/checkapp.php b/core/command/integrity/checkapp.php
new file mode 100644
index 00000000000..26fa9dd655a
--- /dev/null
+++ b/core/command/integrity/checkapp.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * @author Bart Visscher <bartv@thisnet.nl>
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Christian Kampka <christian@kampka.net>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Victor Dubiniuk <dubiniuk@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, 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\Integrity;
+
+use OC\IntegrityCheck\Checker;
+use OC\Core\Command\Base;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * Class SignApp
+ *
+ * @package OC\Core\Command\Integrity
+ */
+class CheckApp extends Base {
+ public function __construct(Checker $checker) {
+ parent::__construct();
+ $this->checker = $checker;
+ }
+
+ /**
+ * {@inheritdoc }
+ */
+ protected function configure() {
+ parent::configure();
+ $this
+ ->setName('integrity:check-app')
+ ->setDescription('Check an app integrity using a signature.')
+ ->addArgument('appid', null, InputArgument::REQUIRED, 'Application to check');
+ }
+
+ /**
+ * {@inheritdoc }
+ */
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $appid = $input->getArgument('appid');
+ $result = $this->checker->verifyAppSignature($appid);
+ $this->writeArrayInOutputFormat($input, $output, $result);
+ }
+
+}
diff --git a/core/command/integrity/checkcore.php b/core/command/integrity/checkcore.php
new file mode 100644
index 00000000000..366076441ee
--- /dev/null
+++ b/core/command/integrity/checkcore.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * @author Bart Visscher <bartv@thisnet.nl>
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Christian Kampka <christian@kampka.net>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Victor Dubiniuk <dubiniuk@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, 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\Integrity;
+
+use OC\IntegrityCheck\Checker;
+use OC\Core\Command\Base;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * Class SignApp
+ *
+ * @package OC\Core\Command\Integrity
+ */
+class CheckCore extends Base {
+ public function __construct(Checker $checker) {
+ parent::__construct();
+ $this->checker = $checker;
+ }
+
+ /**
+ * {@inheritdoc }
+ */
+ protected function configure() {
+ parent::configure();
+ $this
+ ->setName('integrity:check-core')
+ ->setDescription('Check a core integrity using a signature.');
+ }
+
+ /**
+ * {@inheritdoc }
+ */
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $result = $this->checker->verifyCoreSignature();
+ $this->writeArrayInOutputFormat($input, $output, $result);
+ }
+}
diff --git a/core/register_command.php b/core/register_command.php
index 5f9a2675873..2e9e80fe8d7 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -43,6 +43,13 @@ $application->add(new \OC\Core\Command\Integrity\SignCore(
\OC::$server->getIntegrityCodeChecker(),
new \OC\IntegrityCheck\Helpers\FileAccessHelper()
));
+$application->add(new \OC\Core\Command\Integrity\CheckApp(
+ \OC::$server->getIntegrityCodeChecker()
+));
+$application->add(new \OC\Core\Command\Integrity\CheckCore(
+ \OC::$server->getIntegrityCodeChecker()
+));
+
if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\App\Disable(\OC::$server->getAppManager()));