0) { ConfigHolder::add('SLX_BROWSER_RELOAD_SECS', $data['reload-minutes'] * 60); } ConfigHolder::add('SLX_BROWSER_URL', $data['url']); LocationInfo::cleanupUrlFilter($data); ConfigHolder::add('SLX_BROWSER_WHITELIST', self::mangleList($data['whitelist'])); ConfigHolder::add('SLX_BROWSER_BLACKLIST', self::mangleList($data['blacklist'])); // Additionally, update runmode "isclient" flag depending on whether split-login is allowed or not if (isset($data['split-login']) && $data['split-login']) { RunMode::updateClientFlag($machineUuid, 'locationinfo', true); } else { // Automatic login RunMode::updateClientFlag($machineUuid, 'locationinfo', false); ConfigHolder::add('SLX_AUTOLOGIN', 'ON', 1000); ConfigHolder::add('SLX_ADDONS', '', 1000); } if (!empty($data['browser'])) { $browser = $data['browser']; if ($browser === 'chromium') { $browser = 'chromium chrome'; } elseif ($browser === 'slx-browser') { $browser = 'slxbrowser slx-browser'; } ConfigHolder::add('SLX_BROWSER', $browser, 1000); // There was probably some reason for this: When split-login is enabled, we force // an interactive browser (full UI). I guess because some users might not // know how to exit the browser otherwise? Past me was stupid enough not to leave // a comment here or in the commit message.... if ($data['split-login'] ?? false) { $data['interactive'] = true; } } // Check if we should enable insecure SSL mode (accept invalid/self-signed certs etc.), // if we should display the full UI, and whether we force HW acceleration for video playback $features = [ 'insecure-ssl' => 'SLX_BROWSER_INSECURE', 'interactive' => 'SLX_BROWSER_INTERACTIVE', 'hw-video' => 'SLX_BROWSER_HWVIDEO', ]; foreach ($features as $key => $var) { if ($data[$key] ?? false) { ConfigHolder::add($var, '1', 1000); } } if (!empty($data['bookmarks'])) { ConfigHolder::add('SLX_BROWSER_BOOKMARKS', $data['bookmarks'], 1000); } if ($data['allow-tty'] === 'yes' || $data['allow-tty'] === 'no') { ConfigHolder::add('SLX_TTY_SWITCH', $data['allow-tty'], 1000); } if (($data['zoom-factor'] ?? 100) != 100) { ConfigHolder::add('SLX_BROWSER_ZOOM', $data['zoom-factor']); } } else { // Not URL panel ConfigHolder::add('SLX_BROWSER_URL', 'http://' . $_SERVER['SERVER_ADDR'] . '/panel/' . $panelUuid); ConfigHolder::add('SLX_AUTOLOGIN', 'ON', 1000); ConfigHolder::add('SLX_ADDONS', '', 1000); } $al = ConfigHolder::get('SLX_AUTOLOGIN'); if (!empty($al) && $al !== 'OFF' && $al != 0) { ConfigHolder::add('SLX_SHUTDOWN_TIMEOUT', '', 1000); } ConfigHolder::add('SLX_LOGOUT_TIMEOUT', '', 1000); ConfigHolder::add('SLX_SCREEN_STANDBY_TIMEOUT', '', 1000); ConfigHolder::add('SLX_SYSTEM_STANDBY_TIMEOUT', '', 1000); } /** * Turn multiline list into space separated list, removing any * comments (starting with #) */ private static function mangleList(string $list): string { return preg_replace('/\s*(#[^\n]*)?(\n|$)/', ' ', $list); } }