diff options
Diffstat (limited to 'modules-available/remoteaccess/baseconfig')
-rw-r--r-- | modules-available/remoteaccess/baseconfig/getconfig.inc.php | 61 |
1 files changed, 40 insertions, 21 deletions
diff --git a/modules-available/remoteaccess/baseconfig/getconfig.inc.php b/modules-available/remoteaccess/baseconfig/getconfig.inc.php index 3c849b45..182daef1 100644 --- a/modules-available/remoteaccess/baseconfig/getconfig.inc.php +++ b/modules-available/remoteaccess/baseconfig/getconfig.inc.php @@ -1,31 +1,50 @@ <?php -(function ($machineUuid) { +/** @var ?string $uuid */ +/** @var ?string $ip */ + +if ($uuid !== null) { // Leave clients in any runmode alone $res = Database::queryFirst('SELECT machineuuid FROM runmode WHERE machineuuid = :uuid', - array('uuid' => $machineUuid), true); + ['uuid' => $uuid], true); if (is_array($res)) return; // Locations from closest to furthest (order) $locationId = ConfigHolder::get('SLX_LOCATIONS'); - if ($locationId !== false) { - $locationId = (int)$locationId; - $ret = Database::queryFirst("SELECT l.locationid FROM remoteaccess_x_location l - INNER JOIN remoteaccess_group g USING (groupid) - WHERE locationid = :lid AND g.active = 1", - ['lid' => $locationId], true); // TODO Remove true after next point release (2020-05-12) - if ($ret !== false) { - // TODO Properly merge - if (Property::get(RemoteAccess::PROP_TRY_VIRT_HANDOVER)) { - ConfigHolder::add("SLX_REMOTE_VNC", 'vmware virtualbox'); - } else { - ConfigHolder::add("SLX_REMOTE_VNC", 'x11vnc'); - } - ConfigHolder::add("SLX_REMOTE_HOST_ACCESS", Property::get(RemoteAccess::PROP_ALLOWED_VNC_NET)); - ConfigHolder::add('SLX_RUNMODE_MODULE', 'remoteaccess'); - // No saver - ConfigHolder::add('SLX_SCREEN_SAVER_TIMEOUT', '0', 1000); - } + if ($locationId === null) + return; + $locationId = (int)$locationId; + $ret = Database::queryFirst("SELECT l.locationid FROM remoteaccess_x_location l + INNER JOIN remoteaccess_group g USING (groupid) + WHERE locationid = :lid AND g.active = 1", + ['lid' => $locationId], true); // TODO Remove true after next point release (2020-05-12) + if ($ret === false) + return; + // Special case – location admin can limit accessibility of this machine to never, or only when room is closed + $opts = Scheduler::getLocationOptions($locationId); + if ($opts['ra-mode'] === Scheduler::RA_NEVER) + return; // Completely disallowed + if ($opts['ra-mode'] === Scheduler::RA_SELECTIVE) { + // Only when room is closed + if (OpeningTimes::isRoomOpen($locationId, $opts['wol-offset'], $opts['sd-offset'])) + return; // Open, do not interfere with ongoing lectures etc., do nothing + } + // TODO Properly merge + if (Property::get(RemoteAccess::PROP_TRY_VIRT_HANDOVER)) { + ConfigHolder::add("SLX_REMOTE_VNC", 'vmware virtualbox'); + } else { + ConfigHolder::add("SLX_REMOTE_VNC", 'x11vnc'); + } + ConfigHolder::add("SLX_REMOTE_HOST_ACCESS", Property::get(RemoteAccess::PROP_ALLOWED_VNC_NET)); + ConfigHolder::add('SLX_REMOTE_VNC_PORT', Property::get(RemoteAccess::PROP_VNC_PORT, 5900)); + ConfigHolder::add('SLX_RUNMODE_MODULE', 'remoteaccess'); + // No saver + $saverTimeout = ConfigHolder::get('SLX_SCREEN_SAVER_TIMEOUT'); + if (!is_numeric($saverTimeout) || $saverTimeout < 1800) { + ConfigHolder::add('SLX_SCREEN_SAVER_TIMEOUT', '1800', 1000); } -})($uuid);
\ No newline at end of file + ConfigHolder::add('SLX_SCREEN_SAVER_GRACE_TIME', '86400', 1000); + // Autologin will never work as the machine is immediately in use and will never get assigned + ConfigHolder::add('SLX_AUTOLOGIN', 'OFF', 10000); +} |