aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulia Kirschenheuter <6078378+JuliaKirschenheuter@users.noreply.github.com>2023-11-06 17:29:45 +0100
committerGitHub <noreply@github.com>2023-11-06 17:29:45 +0100
commit9d5d0cbb95f271a973df344e52e5fed1ac44c14c (patch)
tree99d18470f12ae8c7a2091a4477186bfa9b9a0acb
parent7f5f93268c2a363c6744cfd3b11498d99a8617b4 (diff)
parentf412c8d8c91ef341dd4e7fbfb519b8b8ef04b8fe (diff)
downloadnextcloud-server-9d5d0cbb95f271a973df344e52e5fed1ac44c14c.tar.gz
nextcloud-server-9d5d0cbb95f271a973df344e52e5fed1ac44c14c.zip
Merge branch 'master' into fix/41267-Contrast_of_focused_Search_and_Search_contacts_is_not_enough
-rw-r--r--core/Command/SetupChecks.php94
-rw-r--r--core/register_command.php1
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
4 files changed, 97 insertions, 0 deletions
diff --git a/core/Command/SetupChecks.php b/core/Command/SetupChecks.php
new file mode 100644
index 00000000000..ed0d22bdfc0
--- /dev/null
+++ b/core/Command/SetupChecks.php
@@ -0,0 +1,94 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023 Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @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;
+
+use OCP\SetupCheck\ISetupCheckManager;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class SetupChecks extends Base {
+ public function __construct(
+ private ISetupCheckManager $setupCheckManager,
+ ) {
+ parent::__construct();
+ }
+
+ protected function configure(): void {
+ parent::configure();
+
+ $this
+ ->setName('setupchecks')
+ ->setDescription('Run setup checks and output the results')
+ ;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int {
+ $results = $this->setupCheckManager->runAll();
+ switch ($input->getOption('output')) {
+ case self::OUTPUT_FORMAT_JSON:
+ case self::OUTPUT_FORMAT_JSON_PRETTY:
+ $this->writeArrayInOutputFormat($input, $output, $results);
+ break;
+ default:
+ foreach ($results as $category => $checks) {
+ $output->writeln("\t{$category}:");
+ foreach ($checks as $title => $check) {
+ $styleTag = match ($check->getSeverity()) {
+ 'success' => 'info',
+ 'error' => 'error',
+ 'warning' => 'comment',
+ default => null,
+ };
+ $emoji = match ($check->getSeverity()) {
+ 'success' => '✓',
+ 'error' => '✗',
+ 'warning' => '⚠',
+ default => 'ℹ',
+ };
+ $verbosity = ($check->getSeverity() === 'error' ? OutputInterface::VERBOSITY_QUIET : OutputInterface::VERBOSITY_NORMAL);
+ $description = $check->getDescription();
+ $output->writeln(
+ "\t\t".
+ ($styleTag !== null ? "<{$styleTag}>" : '').
+ "{$emoji} ".
+ $title.
+ ($description !== null ? ': '.$description : '').
+ ($styleTag !== null ? "</{$styleTag}>" : ''),
+ $verbosity
+ );
+ }
+ }
+ }
+ foreach ($results as $category => $checks) {
+ foreach ($checks as $title => $check) {
+ if ($check->getSeverity() !== 'success') {
+ return self::FAILURE;
+ }
+ }
+ }
+ return self::SUCCESS;
+ }
+}
diff --git a/core/register_command.php b/core/register_command.php
index d9e5dfcd775..975dcf6c05f 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -214,6 +214,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\Security\RemoveCertificate(\OC::$server->getCertificateManager()));
$application->add(\OC::$server->get(\OC\Core\Command\Security\BruteforceAttempts::class));
$application->add(\OC::$server->get(\OC\Core\Command\Security\BruteforceResetAttempts::class));
+ $application->add(\OC::$server->get(\OC\Core\Command\SetupChecks::class));
} else {
$application->add(\OC::$server->get(\OC\Core\Command\Maintenance\Install::class));
}
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index b2d0b225574..0aebab5d181 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -1059,6 +1059,7 @@ return array(
'OC\\Core\\Command\\Security\\ImportCertificate' => $baseDir . '/core/Command/Security/ImportCertificate.php',
'OC\\Core\\Command\\Security\\ListCertificates' => $baseDir . '/core/Command/Security/ListCertificates.php',
'OC\\Core\\Command\\Security\\RemoveCertificate' => $baseDir . '/core/Command/Security/RemoveCertificate.php',
+ 'OC\\Core\\Command\\SetupChecks' => $baseDir . '/core/Command/SetupChecks.php',
'OC\\Core\\Command\\Status' => $baseDir . '/core/Command/Status.php',
'OC\\Core\\Command\\SystemTag\\Add' => $baseDir . '/core/Command/SystemTag/Add.php',
'OC\\Core\\Command\\SystemTag\\Delete' => $baseDir . '/core/Command/SystemTag/Delete.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 7e73255b29b..ac6207eeb07 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -1092,6 +1092,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Core\\Command\\Security\\ImportCertificate' => __DIR__ . '/../../..' . '/core/Command/Security/ImportCertificate.php',
'OC\\Core\\Command\\Security\\ListCertificates' => __DIR__ . '/../../..' . '/core/Command/Security/ListCertificates.php',
'OC\\Core\\Command\\Security\\RemoveCertificate' => __DIR__ . '/../../..' . '/core/Command/Security/RemoveCertificate.php',
+ 'OC\\Core\\Command\\SetupChecks' => __DIR__ . '/../../..' . '/core/Command/SetupChecks.php',
'OC\\Core\\Command\\Status' => __DIR__ . '/../../..' . '/core/Command/Status.php',
'OC\\Core\\Command\\SystemTag\\Add' => __DIR__ . '/../../..' . '/core/Command/SystemTag/Add.php',
'OC\\Core\\Command\\SystemTag\\Delete' => __DIR__ . '/../../..' . '/core/Command/SystemTag/Delete.php',