diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2020-07-25 21:53:39 +0200 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2020-07-26 00:54:16 +0200 |
commit | 89c6a2bc1fa34498e82f7b9b6e8e7160c46dc3fd (patch) | |
tree | 157c15557e18c254279d18f70e0890a6239a45e2 /apps/settings/lib | |
parent | 34c3d0a97708b9d5cbd6a0667c4f0be881e7a6de (diff) | |
download | nextcloud-server-89c6a2bc1fa34498e82f7b9b6e8e7160c46dc3fd.tar.gz nextcloud-server-89c6a2bc1fa34498e82f7b9b6e8e7160c46dc3fd.zip |
Add setup checks for php default charset and output buffering.
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'apps/settings/lib')
-rw-r--r-- | apps/settings/lib/Controller/CheckSetupController.php | 6 | ||||
-rw-r--r-- | apps/settings/lib/SetupChecks/PhpDefaultCharset.php | 42 | ||||
-rw-r--r-- | apps/settings/lib/SetupChecks/PhpOutputBuffering.php | 43 |
3 files changed, 91 insertions, 0 deletions
diff --git a/apps/settings/lib/Controller/CheckSetupController.php b/apps/settings/lib/Controller/CheckSetupController.php index 3fd4407f7c9..6e45edee18f 100644 --- a/apps/settings/lib/Controller/CheckSetupController.php +++ b/apps/settings/lib/Controller/CheckSetupController.php @@ -53,6 +53,8 @@ use OC\DB\SchemaWrapper; use OC\IntegrityCheck\Checker; use OC\Lock\NoopLockingProvider; use OC\MemoryInfo; +use OCA\Settings\SetupChecks\PhpDefaultCharset; +use OCA\Settings\SetupChecks\PhpOutputBuffering; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataDisplayResponse; use OCP\AppFramework\Http\DataResponse; @@ -683,6 +685,8 @@ Raw output * @return DataResponse */ public function check() { + $phpDefaultCharset = new PhpDefaultCharset(); + $phpOutputBuffering = new PhpOutputBuffering(); return new DataResponse( [ 'isGetenvServerWorking' => !empty(getenv('PATH')), @@ -723,6 +727,8 @@ Raw output 'isMysqlUsedWithoutUTF8MB4' => $this->isMysqlUsedWithoutUTF8MB4(), 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed' => $this->isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed(), 'reverseProxyGeneratedURL' => $this->urlGenerator->getAbsoluteURL('index.php'), + PhpDefaultCharset::class => ['pass' => $phpDefaultCharset->run(), 'description' => $phpDefaultCharset->description(), 'severity' => $phpDefaultCharset->severity()], + PhpOutputBuffering::class => ['pass' => $phpOutputBuffering->run(), 'description' => $phpOutputBuffering->description(), 'severity' => $phpOutputBuffering->severity()], ] ); } diff --git a/apps/settings/lib/SetupChecks/PhpDefaultCharset.php b/apps/settings/lib/SetupChecks/PhpDefaultCharset.php new file mode 100644 index 00000000000..0e50a8db1fc --- /dev/null +++ b/apps/settings/lib/SetupChecks/PhpDefaultCharset.php @@ -0,0 +1,42 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2020 Daniel Kesselberg <mail@danielkesselberg.de> + * + * @author Daniel Kesselberg <mail@danielkesselberg.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Settings\SetupChecks; + +class PhpDefaultCharset { + public function description(): string { + return 'PHP configuration option default_charset should be UTF-8'; + } + + public function severity(): string { + return 'warning'; + } + + public function run(): bool { + return strtoupper(trim(ini_get('default_charset'))) === 'UTF-8'; + } +} diff --git a/apps/settings/lib/SetupChecks/PhpOutputBuffering.php b/apps/settings/lib/SetupChecks/PhpOutputBuffering.php new file mode 100644 index 00000000000..c89ec273e71 --- /dev/null +++ b/apps/settings/lib/SetupChecks/PhpOutputBuffering.php @@ -0,0 +1,43 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2020 Daniel Kesselberg <mail@danielkesselberg.de> + * + * @author Daniel Kesselberg <mail@danielkesselberg.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Settings\SetupChecks; + +class PhpOutputBuffering { + public function description(): string { + return 'PHP configuration option output_buffering must be disabled'; + } + + public function severity(): string { + return 'error'; + } + + public function run(): bool { + $value = trim(ini_get('output_buffering')); + return $value === '' || $value === '0'; + } +} |