From 445a76bb1b0249a642a9a3f2e400c1221be7993f Mon Sep 17 00:00:00 2001 From: VicDeo Date: Wed, 6 Jul 2016 23:08:58 +0300 Subject: [PATCH] Bypass upgrade page when occ controller is requested (#25363) --- lib/base.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/base.php b/lib/base.php index 07d8f3b788bfe..1a6d1b8d3f653 100644 --- a/lib/base.php +++ b/lib/base.php @@ -847,10 +847,14 @@ public static function handleRequest() { } $request = \OC::$server->getRequest(); + // Check if requested URL matches 'index.php/occ' + $isOccControllerRequested = preg_match('|/index\.php$|', $request->getScriptName()) === 1 + && strpos($request->getPathInfo(), '/occ/') === 0; + $requestPath = $request->getRawPathInfo(); if (substr($requestPath, -3) !== '.js') { // we need these files during the upgrade self::checkMaintenanceMode($request); - self::checkUpgrade(); + $needUpgrade = self::checkUpgrade(!$isOccControllerRequested); } // emergency app disabling @@ -868,8 +872,16 @@ public static function handleRequest() { exit(); } - // Always load authentication apps - OC_App::loadApps(['authentication']); + try { + // Always load authentication apps + OC_App::loadApps(['authentication']); + } catch (\OC\NeedsUpdateException $e) { + if ($isOccControllerRequested && $needUpgrade){ + OC::$server->getRouter()->match(\OC::$server->getRequest()->getRawPathInfo()); + return; + } + throw $e; + } // Load minimum set of apps if (!self::checkUpgrade(false)