summaryrefslogtreecommitdiffstats
path: root/modules-available/remoteaccess/baseconfig/getconfig.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/remoteaccess/baseconfig/getconfig.inc.php')
-rw-r--r--modules-available/remoteaccess/baseconfig/getconfig.inc.php61
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);
+}