]> source.dussan.org Git - nextcloud-server.git/commitdiff
Adding check command to validate server environment - fixes #15429
authorThomas Müller <thomas.mueller@tmit.eu>
Tue, 7 Apr 2015 22:19:23 +0000 (00:19 +0200)
committerThomas Müller <thomas.mueller@tmit.eu>
Tue, 7 Apr 2015 22:19:23 +0000 (00:19 +0200)
console.php
core/command/check.php [new file with mode: 0644]
core/register_command.php
lib/base.php

index a4d829f683a5ff1993b8687dcf99f3de6b5e0605..7536908a5c103f313af1221522dae7b38ba36ff7 100644 (file)
@@ -24,6 +24,7 @@
  */
 
 use Symfony\Component\Console\Application;
+use Symfony\Component\Console\Input\ArgvInput;
 
 define('OC_CONSOLE', 1);
 
@@ -71,6 +72,18 @@ try {
        } else {
                echo "ownCloud is not installed - only a limited number of commands are available" . PHP_EOL;
        }
+       $input = new ArgvInput();
+       if ($input->getFirstArgument() !== 'check') {
+               $errors = \OC_Util::checkServer(\OC::$server->getConfig());
+               if (!empty($errors)) {
+                       foreach ($errors as $error) {
+                               echo $error['error'] . "\n";
+                               echo $error['hint'] . "\n\n";
+                       }
+                       exit(1);
+               }
+       }
+
        $application->run();
 } catch (Exception $ex) {
        echo "An unhandled exception has been thrown:" . PHP_EOL;
diff --git a/core/command/check.php b/core/command/check.php
new file mode 100644 (file)
index 0000000..9d0db3a
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+namespace OC\Core\Command;
+
+use OCP\IConfig;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Check extends Command {
+       /**
+        * @var IConfig
+        */
+       private $config;
+
+       public function __construct(IConfig $config) {
+               parent::__construct();
+               $this->config = $config;
+       }
+
+       protected function configure() {
+               $this
+                       ->setName('check')
+                       ->setDescription('check dependencies of the server environment')
+               ;
+       }
+
+       protected function execute(InputInterface $input, OutputInterface $output) {
+               $errors = \OC_Util::checkServer($this->config);
+               if (!empty($errors)) {
+                       $errors = array_map( function($items) {
+                               return (string)$items['error'];
+                       }, $errors);
+                       echo json_encode($errors);
+                       return 1;
+               }
+               return 0;
+       }
+}
index 67fdb6f808e4343518a6ac85ab818b5fc8e0366f..701fb10d1ba84a901bc398c436f69b60f1f8758d 100644 (file)
@@ -26,6 +26,7 @@
 
 /** @var $application Symfony\Component\Console\Application */
 $application->add(new OC\Core\Command\Status);
+$application->add(new OC\Core\Command\Check(\OC::$server->getConfig()));
 $application->add(new OC\Core\Command\App\CheckCode());
 $application->add(new OC\Core\Command\L10n\CreateJs());
 
index be397e524496fd5f0921291331a12b4c2985c3ff..042419eff1d2c0f571f3fe30e3d6d4001273ae17 100644 (file)
@@ -588,35 +588,36 @@ class OC {
                        ini_set('session.cookie_secure', true);
                }
 
-               $errors = OC_Util::checkServer(\OC::$server->getConfig());
-               if (count($errors) > 0) {
-                       if (self::$CLI) {
-                               // Convert l10n string into regular string for usage in database
-                               $staticErrors = [];
-                               foreach ($errors as $error) {
-                                       echo $error['error'] . "\n";
-                                       echo $error['hint'] . "\n\n";
-                                       $staticErrors[] = [
-                                               'error' => (string) $error['error'],
-                                               'hint' => (string) $error['hint'],
-                                       ];
-                               }
+               if (!defined('OC_CONSOLE')) {
+                       $errors = OC_Util::checkServer(\OC::$server->getConfig());
+                       if (count($errors) > 0) {
+                               if (self::$CLI) {
+                                       // Convert l10n string into regular string for usage in database
+                                       $staticErrors = [];
+                                       foreach ($errors as $error) {
+                                               echo $error['error'] . "\n";
+                                               echo $error['hint'] . "\n\n";
+                                               $staticErrors[] = [
+                                                       'error' => (string)$error['error'],
+                                                       'hint' => (string)$error['hint'],
+                                               ];
+                                       }
 
-                               try {
-                                       \OC::$server->getConfig()->setAppValue('core', 'cronErrors', json_encode($staticErrors));
-                               } catch(\Exception $e) {
-                                       echo('Writing to database failed');
+                                       try {
+                                               \OC::$server->getConfig()->setAppValue('core', 'cronErrors', json_encode($staticErrors));
+                                       } catch (\Exception $e) {
+                                               echo('Writing to database failed');
+                                       }
+                                       exit(1);
+                               } else {
+                                       OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
+                                       OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+                                       exit;
                                }
-                               exit(1);
-                       } else {
-                               OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
-                               OC_Template::printGuestPage('', 'error', array('errors' => $errors));
-                               exit;
-                       }
-               } elseif(self::$CLI && \OC::$server->getConfig()->getSystemValue('installed', false)) {
+                       } elseif (self::$CLI && \OC::$server->getConfig()->getSystemValue('installed', false)) {
                                \OC::$server->getConfig()->deleteAppValue('core', 'cronErrors');
+                       }
                }
-
                //try to set the session lifetime
                $sessionLifeTime = self::getSessionLifeTime();
                @ini_set('gc_maxlifetime', (string)$sessionLifeTime);