Make sure maintenance mode is always casted to bool

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2019-02-06 17:08:41 +01:00
parent a11ef5134c
commit 0c77cd21f9
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
14 changed files with 22 additions and 24 deletions

View File

@ -78,7 +78,7 @@ class MaintenancePlugin extends ServerPlugin {
* @return bool * @return bool
*/ */
public function checkMaintenanceMode() { public function checkMaintenanceMode() {
if ($this->config->getSystemValue('maintenance', false)) { if ($this->config->getSystemValueBool('maintenance')) {
throw new ServiceUnavailable('System in maintenance mode.'); throw new ServiceUnavailable('System in maintenance mode.');
} }
if (Util::needUpgrade()) { if (Util::needUpgrade()) {

View File

@ -75,7 +75,7 @@ class Application extends \OCP\AppFramework\App {
* register hooks * register hooks
*/ */
public function registerHooks() { public function registerHooks() {
if (!$this->config->getSystemValue('maintenance', false)) { if (!$this->config->getSystemValueBool('maintenance')) {
$container = $this->getContainer(); $container = $this->getContainer();
$server = $container->getServer(); $server = $container->getServer();

View File

@ -89,7 +89,7 @@ class DecryptAll extends Command {
*/ */
protected function forceMaintenanceAndTrashbin() { protected function forceMaintenanceAndTrashbin() {
$this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin'); $this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin');
$this->wasMaintenanceModeEnabled = $this->config->getSystemValue('maintenance', false); $this->wasMaintenanceModeEnabled = $this->config->getSystemValueBool('maintenance');
$this->config->setSystemValue('maintenance', true); $this->config->setSystemValue('maintenance', true);
$this->appManager->disableApp('files_trashbin'); $this->appManager->disableApp('files_trashbin');
} }

View File

@ -78,7 +78,7 @@ class EncryptAll extends Command {
*/ */
protected function forceMaintenanceAndTrashbin() { protected function forceMaintenanceAndTrashbin() {
$this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin'); $this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin');
$this->wasMaintenanceModeEnabled = $this->config->getSystemValue('maintenance', false); $this->wasMaintenanceModeEnabled = $this->config->getSystemValueBool('maintenance');
$this->config->setSystemValue('maintenance', true); $this->config->setSystemValue('maintenance', true);
$this->appManager->disableApp('files_trashbin'); $this->appManager->disableApp('files_trashbin');
} }

View File

@ -59,7 +59,7 @@ class Mode extends Command {
} }
protected function execute(InputInterface $input, OutputInterface $output) { protected function execute(InputInterface $input, OutputInterface $output) {
$maintenanceMode = $this->config->getSystemValue('maintenance', false); $maintenanceMode = $this->config->getSystemValueBool('maintenance');
if ($input->getOption('on')) { if ($input->getOption('on')) {
if ($maintenanceMode === false) { if ($maintenanceMode === false) {
$this->config->setSystemValue('maintenance', true); $this->config->setSystemValue('maintenance', true);

View File

@ -106,7 +106,7 @@ class Repair extends Command {
} }
} }
$maintenanceMode = $this->config->getSystemValue('maintenance', false); $maintenanceMode = $this->config->getSystemValueBool('maintenance');
$this->config->setSystemValue('maintenance', true); $this->config->setSystemValue('maintenance', true);
$this->progress = new ProgressBar($output); $this->progress = new ProgressBar($output);

View File

@ -264,7 +264,7 @@ class Upgrade extends Command {
} }
return self::ERROR_SUCCESS; return self::ERROR_SUCCESS;
} else if($this->config->getSystemValue('maintenance', false)) { } else if($this->config->getSystemValueBool('maintenance')) {
//Possible scenario: Nextcloud core is updated but an app failed //Possible scenario: Nextcloud core is updated but an app failed
$output->writeln('<warning>Nextcloud is in maintenance mode</warning>'); $output->writeln('<warning>Nextcloud is in maintenance mode</warning>');
$output->write('<comment>Maybe an upgrade is already in process. Please check the ' $output->write('<comment>Maybe an upgrade is already in process. Please check the '

View File

@ -44,7 +44,7 @@ try {
\OC::$server->getLogger()->debug('Update required, skipping cron', ['app' => 'cron']); \OC::$server->getLogger()->debug('Update required, skipping cron', ['app' => 'cron']);
exit; exit;
} }
if (\OC::$server->getSystemConfig()->getValue('maintenance', false)) { if ((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) {
\OC::$server->getLogger()->debug('We are in maintenance mode, skipping cron', ['app' => 'cron']); \OC::$server->getLogger()->debug('We are in maintenance mode, skipping cron', ['app' => 'cron']);
exit; exit;
} }

View File

@ -285,7 +285,7 @@ class OC {
public static function checkMaintenanceMode() { public static function checkMaintenanceMode() {
// Allow ajax update script to execute without being stopped // Allow ajax update script to execute without being stopped
if (\OC::$server->getSystemConfig()->getValue('maintenance', false) && OC::$SUBURI != '/core/ajax/update.php') { if (((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) && OC::$SUBURI != '/core/ajax/update.php') {
// send http status 503 // send http status 503
http_response_code(503); http_response_code(503);
header('Retry-After: 120'); header('Retry-After: 120');
@ -938,7 +938,7 @@ class OC {
if (function_exists('opcache_reset')) { if (function_exists('opcache_reset')) {
opcache_reset(); opcache_reset();
} }
if (!$systemConfig->getValue('maintenance', false)) { if (!((bool) $systemConfig->getValue('maintenance', false))) {
self::printUpgradePage($systemConfig); self::printUpgradePage($systemConfig);
exit(); exit();
} }
@ -966,7 +966,7 @@ class OC {
// Load minimum set of apps // Load minimum set of apps
if (!\OCP\Util::needUpgrade() if (!\OCP\Util::needUpgrade()
&& !$systemConfig->getValue('maintenance', false)) { && !((bool) $systemConfig->getValue('maintenance', false))) {
// For logged-in users: Load everything // For logged-in users: Load everything
if(\OC::$server->getUserSession()->isLoggedIn()) { if(\OC::$server->getUserSession()->isLoggedIn()) {
OC_App::loadApps(); OC_App::loadApps();
@ -979,7 +979,7 @@ class OC {
if (!self::$CLI) { if (!self::$CLI) {
try { try {
if (!$systemConfig->getValue('maintenance', false) && !\OCP\Util::needUpgrade()) { if (!((bool) $systemConfig->getValue('maintenance', false)) && !\OCP\Util::needUpgrade()) {
OC_App::loadApps(array('filesystem', 'logging')); OC_App::loadApps(array('filesystem', 'logging'));
OC_App::loadApps(); OC_App::loadApps();
} }

View File

@ -119,7 +119,7 @@ class Application {
if ($this->config->getSystemValue('installed', false)) { if ($this->config->getSystemValue('installed', false)) {
if (\OCP\Util::needUpgrade()) { if (\OCP\Util::needUpgrade()) {
throw new NeedsUpdateException(); throw new NeedsUpdateException();
} elseif ($this->config->getSystemValue('maintenance', false)) { } elseif ($this->config->getSystemValueBool('maintenance')) {
$this->writeMaintenanceModeInfo($input, $output); $this->writeMaintenanceModeInfo($input, $output);
} else { } else {
OC_App::loadApps(); OC_App::loadApps();

View File

@ -260,7 +260,7 @@ class Router implements IRouter {
$this->loadRoutes($app); $this->loadRoutes($app);
} else if (substr($url, 0, 6) === '/core/' or substr($url, 0, 10) === '/settings/') { } else if (substr($url, 0, 6) === '/core/' or substr($url, 0, 10) === '/settings/') {
\OC::$REQUESTEDAPP = $url; \OC::$REQUESTEDAPP = $url;
if (!\OC::$server->getConfig()->getSystemValue('maintenance', false) && !Util::needUpgrade()) { if (!\OC::$server->getConfig()->getSystemValueBool('maintenance') && !Util::needUpgrade()) {
\OC_App::loadApps(); \OC_App::loadApps();
} }
$this->loadRoutes('core'); $this->loadRoutes('core');

View File

@ -104,7 +104,7 @@ class Updater extends BasicEmitter {
$this->emit('\OC\Updater', 'setDebugLogLevel', [ $logLevel, $this->logLevelNames[$logLevel] ]); $this->emit('\OC\Updater', 'setDebugLogLevel', [ $logLevel, $this->logLevelNames[$logLevel] ]);
$this->config->setSystemValue('loglevel', ILogger::DEBUG); $this->config->setSystemValue('loglevel', ILogger::DEBUG);
$wasMaintenanceModeEnabled = $this->config->getSystemValue('maintenance', false); $wasMaintenanceModeEnabled = $this->config->getSystemValueBool('maintenance');
if(!$wasMaintenanceModeEnabled) { if(!$wasMaintenanceModeEnabled) {
$this->config->setSystemValue('maintenance', true); $this->config->setSystemValue('maintenance', true);
@ -614,4 +614,3 @@ class Updater extends BasicEmitter {
} }
} }

View File

@ -106,7 +106,7 @@ class OC_App {
* if $types is set to non-empty array, only apps of those types will be loaded * if $types is set to non-empty array, only apps of those types will be loaded
*/ */
public static function loadApps(array $types = []): bool { public static function loadApps(array $types = []): bool {
if (\OC::$server->getSystemConfig()->getValue('maintenance', false)) { if ((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) {
return false; return false;
} }
// Load the enabled apps here // Load the enabled apps here

View File

@ -33,7 +33,7 @@ require_once __DIR__ . '/../lib/versioncheck.php';
require_once __DIR__ . '/../lib/base.php'; require_once __DIR__ . '/../lib/base.php';
if (\OCP\Util::needUpgrade() if (\OCP\Util::needUpgrade()
|| \OC::$server->getSystemConfig()->getValue('maintenance', false)) { || \OC::$server->getConfig()->getSystemValueBool('maintenance')) {
// since the behavior of apps or remotes are unpredictable during // since the behavior of apps or remotes are unpredictable during
// an upgrade, return a 503 directly // an upgrade, return a 503 directly
http_response_code(503); http_response_code(503);
@ -103,4 +103,3 @@ try {
.' http://www.freedesktop.org/wiki/Specifications/open-collaboration-services.'."\n"; .' http://www.freedesktop.org/wiki/Specifications/open-collaboration-services.'."\n";
OC_API::respond(new \OC\OCS\Result(null, \OCP\API::RESPOND_NOT_FOUND, $txt), $format); OC_API::respond(new \OC\OCS\Result(null, \OCP\API::RESPOND_NOT_FOUND, $txt), $format);
} }