From 6b5d3a94ed1b62728957b04b36a08327837b0b5f Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 12 Jul 2017 18:39:21 +0200 Subject: [runmode] Tweaks, support NO_CONFIG and systemd target --- .../locationinfo/hooks/runmode/config.json | 5 +++- .../locationinfo/inc/locationinfo.inc.php | 8 ++++++ .../runmode/baseconfig/getconfig.inc.php | 29 ++++++++++++++++++++++ modules-available/runmode/inc/runmode.inc.php | 14 +++++++++-- 4 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 modules-available/runmode/baseconfig/getconfig.inc.php diff --git a/modules-available/locationinfo/hooks/runmode/config.json b/modules-available/locationinfo/hooks/runmode/config.json index 8c1ebad8..c88b20cf 100644 --- a/modules-available/locationinfo/hooks/runmode/config.json +++ b/modules-available/locationinfo/hooks/runmode/config.json @@ -1,4 +1,7 @@ { "getModeName": "LocationInfo::getPanelName", - "isClient": false + "isClient": false, + "configHook": "LocationInfo::configHook", + "noSysconfig": true, + "systemdDefaultTarget": "multi-user" } \ No newline at end of file diff --git a/modules-available/locationinfo/inc/locationinfo.inc.php b/modules-available/locationinfo/inc/locationinfo.inc.php index 36a77d4f..6e6cfcd7 100644 --- a/modules-available/locationinfo/inc/locationinfo.inc.php +++ b/modules-available/locationinfo/inc/locationinfo.inc.php @@ -86,4 +86,12 @@ class LocationInfo return $ret['panelname']; } + public static function configHook($machineUuid, $panelUuid) + { + // TODO Panel type + ConfigHolder::add('SLX_BROWSER_URL', 'http://' . $_SERVER['SERVER_ADDR'] . '/panel/' . $panelUuid); + ConfigHolder::add('SLX_ADDONS', '', 1000); + ConfigHolder::add('SLX_LOGOUT_TIMEOUT', 1000); + } + } diff --git a/modules-available/runmode/baseconfig/getconfig.inc.php b/modules-available/runmode/baseconfig/getconfig.inc.php new file mode 100644 index 00000000..fe04b5ef --- /dev/null +++ b/modules-available/runmode/baseconfig/getconfig.inc.php @@ -0,0 +1,29 @@ + $machineUuid)); + if ($res === false) + return; + $config = RunMode::getModuleConfig($res['module']); + if ($config === false || $config->configHook === false) + return; + if (!Module::isAvailable($res['module'])) + return; // Not really possible because getModuleConfig would have failed but we should make sure + call_user_func($config->configHook, $machineUuid, $res['modeid'], $res['modedata']); + if ($config->systemdDefaultTarget !== false) { + ConfigHolder::add('SLX_SYSTEMD_TARGET', $config->systemdDefaultTarget, 10000); + } + if ($config->noSysconfig) { + ConfigHolder::add('SLX_NO_CONFIG_TGZ', '1', 10000); + } + // Disable exam mode - not sure if this is generally a good idea; for now, all modes we can think of would + // not make sense that way so do this for now + if (ConfigHolder::get('SLX_EXAM') !== false) { + ConfigHolder::add('SLX_EXAM', '', 100001); + ConfigHolder::add('SLX_EXAM_START', '', 100001); + ConfigHolder::add('SLX_AUTOLOGIN', '', 100001); + } +}; + +$foofoo($uuid); \ No newline at end of file diff --git a/modules-available/runmode/inc/runmode.inc.php b/modules-available/runmode/inc/runmode.inc.php index 5b59f1c1..916866f1 100644 --- a/modules-available/runmode/inc/runmode.inc.php +++ b/modules-available/runmode/inc/runmode.inc.php @@ -11,7 +11,7 @@ class RunMode * @param string $module name of module * @return RunModeModuleConfig|false */ - private static function getModuleConfig($module) + public static function getModuleConfig($module) { if (isset(self::$moduleConfigs[$module])) return self::$moduleConfigs[$module]; @@ -154,10 +154,18 @@ class RunModeModuleConfig * @var string Name of function that turns a modeId into a string */ public $getModeName = false; + /** + * @var string Name of function that is called to add additional config entries + */ + public $configHook = false; /** * @var bool Consider this a normal client that should e.g. be shown in client statistics by default */ public $isClient = false; + /** + * @var bool If true, config.tgz should not be downloaded by the client + */ + public $noSysconfig = false; public function __construct($file) { @@ -168,7 +176,9 @@ class RunModeModuleConfig $this->loadType($data, 'systemdDisableTargets', 'array'); $this->loadType($data, 'systemdEnableTargets', 'array'); $this->loadType($data, 'getModeName', 'string'); - $this->loadType($data, 'isClient', 'string'); + $this->loadType($data, 'configHook', 'string'); + $this->loadType($data, 'isClient', 'boolean'); + $this->loadType($data, 'noSysconfig', 'boolean'); } private function loadType($data, $key, $type) -- cgit v1.2.3-55-g7522