Merge pull request #15510 from owncloud/cron-singleuser

block cron when in single user mode
This commit is contained in:
Thomas Müller 2015-04-10 14:38:50 +02:00
commit a163243e31
5 changed files with 37 additions and 17 deletions

View File

@ -41,6 +41,11 @@ try {
exit; exit;
} }
if (\OC::$server->getSystemConfig()->getValue('singleuser', false)) {
\OCP\Util::writeLog('cron', 'We are in admin only mode, skipping cron', \OCP\Util::DEBUG);
exit;
}
// load all apps to get all api routes properly setup // load all apps to get all api routes properly setup
OC_App::loadApps(); OC_App::loadApps();

View File

@ -294,28 +294,38 @@ class OC {
header('Retry-After: 120'); header('Retry-After: 120');
// render error page // render error page
$tmpl = new OC_Template('', 'update.user', 'guest'); $template = new OC_Template('', 'update.user', 'guest');
OC_Util::addscript('maintenance-check'); OC_Util::addscript('maintenance-check');
$tmpl->printPage(); $template->printPage();
die(); die();
} }
} }
public static function checkSingleUserMode() { public static function checkSingleUserMode($lockIfNoUserLoggedIn = false) {
if (!\OC::$server->getSystemConfig()->getValue('singleuser', false)) {
return;
}
$user = OC_User::getUserSession()->getUser(); $user = OC_User::getUserSession()->getUser();
$group = OC_Group::getManager()->get('admin'); if ($user) {
if ($user && \OC::$server->getSystemConfig()->getValue('singleuser', false) && !$group->inGroup($user)) { $group = \OC::$server->getGroupManager()->get('admin');
if ($group->inGroup($user)) {
return;
}
} else {
if(!$lockIfNoUserLoggedIn) {
return;
}
}
// send http status 503 // send http status 503
header('HTTP/1.1 503 Service Temporarily Unavailable'); header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 120'); header('Retry-After: 120');
// render error page // render error page
$tmpl = new OC_Template('', 'singleuser.user', 'guest'); $template = new OC_Template('', 'singleuser.user', 'guest');
$tmpl->printPage(); $template->printPage();
die(); die();
} }
}
/** /**
* check if the instance needs to preform an upgrade * check if the instance needs to preform an upgrade

View File

@ -60,6 +60,9 @@ class MaintenancePlugin extends \Sabre\DAV\ServerPlugin
* @return bool * @return bool
*/ */
public function checkMaintenanceMode() { public function checkMaintenanceMode() {
if (\OC::$server->getSystemConfig()->getValue('singleuser', false)) {
throw new \Sabre\DAV\Exception\ServiceUnavailable();
}
if (\OC_Config::getValue('maintenance', false)) { if (\OC_Config::getValue('maintenance', false)) {
throw new \Sabre\DAV\Exception\ServiceUnavailable(); throw new \Sabre\DAV\Exception\ServiceUnavailable();
} }

View File

@ -27,7 +27,9 @@
require_once '../lib/base.php'; require_once '../lib/base.php';
if (\OCP\Util::needUpgrade() || \OC::$server->getSystemConfig()->getValue('maintenance', false)) { if (\OCP\Util::needUpgrade()
|| \OC::$server->getSystemConfig()->getValue('maintenance', false)
|| \OC::$server->getSystemConfig()->getValue('singleuser', false)) {
// 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
OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);

View File

@ -37,7 +37,7 @@ try {
} }
OC::checkMaintenanceMode(); OC::checkMaintenanceMode();
OC::checkSingleUserMode(); OC::checkSingleUserMode(true);
$request = \OC::$server->getRequest(); $request = \OC::$server->getRequest();
$pathInfo = $request->getPathInfo(); $pathInfo = $request->getPathInfo();