From 426e574b85d363cd5a1fa256034dc2a281fc7272 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 15 May 2020 17:24:05 +0200 Subject: [remoteaccess] New module --- modules-available/remoteaccess/page.inc.php | 100 ++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 modules-available/remoteaccess/page.inc.php (limited to 'modules-available/remoteaccess/page.inc.php') diff --git a/modules-available/remoteaccess/page.inc.php b/modules-available/remoteaccess/page.inc.php new file mode 100644 index 00000000..edbe0ff8 --- /dev/null +++ b/modules-available/remoteaccess/page.inc.php @@ -0,0 +1,100 @@ + $group) { + Database::exec("UPDATE remoteaccess_group SET groupname = :name, wolcount = :wol, + passwd = :passwd, active = :active WHERE groupid = :id", [ + 'id' => $id, + 'name' => isset($group['groupname']) ? $group['groupname'] : $id, + 'wol' => isset($group['wolcount']) ? $group['wolcount'] : 0, + 'passwd' => isset($group['passwd']) ? $group['passwd'] : 0, + 'active' => isset($group['active']) && $group['active'] ? 1 : 0, + ]); + } + Property::set(RemoteAccess::PROP_ALLOWED_VNC_NET, Request::post('allowed-source', '', 'string')); + Property::set(RemoteAccess::PROP_TRY_VIRT_HANDOVER, Request::post('virt-handover', false, 'int')); + Message::addSuccess('settings-saved'); + } elseif ($action === 'set-locations') { + $groupid = Request::post('groupid', Request::REQUIRED, 'int'); + $group = Database::queryFirst("SELECT groupname FROM remoteaccess_group WHERE groupid = :groupid"); + if ($group === false) { + Message::addError('group-not-found', $groupid); + Util::redirect('?do=remoteaccess'); + } + $locations = array_values(Request::post('location', [], 'array')); + if (empty($locations)) { + Database::exec("DELETE FROM remoteaccess_x_location WHERE groupid = :id", ['id' => $groupid]); + } else { + Database::exec("INSERT IGNORE INTO remoteaccess_x_location (groupid, locationid) + VALUES :values", ['values' => array_map(function($item) use ($groupid) { return [$groupid, $item]; }, $locations)]); + Database::exec("DELETE FROM remoteaccess_x_location WHERE groupid = :id AND locationid NOT IN (:locations)", + ['id' => $groupid, 'locations' => $locations]); + } + Message::addSuccess('group-updated', $group['groupname']); + } + if (Request::isPost()) { + Util::redirect('?do=remoteaccess'); + } + } + + protected function doRender() + { + $groupid = Request::get('groupid', false, 'int'); + if ($groupid === false) { + // Edit list of groups and their settings + $groups = Database::queryAll("SELECT g.groupid, g.groupname, g.wolcount, g.passwd, + Count(l.locationid) AS locs, If(g.active, 'checked', '') AS checked + FROM remoteaccess_group g LEFT JOIN remoteaccess_x_location l USING (groupid) + GROUP BY g.groupid, g.groupname + ORDER BY g.groupname ASC"); + $data = [ + 'allowed-source' => Property::get(RemoteAccess::PROP_ALLOWED_VNC_NET), + 'virt-handover_checked' => Property::get(RemoteAccess::PROP_TRY_VIRT_HANDOVER) ? 'checked' : '', + 'groups' => $groups, + ]; + Render::addTemplate('edit-settings', $data); + } else { + // Edit locations for group + $group = Database::queryFirst("SELECT groupid, groupname FROM remoteaccess_group WHERE groupid = :id", + ['id' => $groupid]); + if ($group === false) { + Message::addError('group-not-found', $groupid); + return; + } + $locationList = Location::getLocationsAssoc(); + $enabled = RemoteAccess::getEnabledLocations($groupid); + foreach ($enabled as $lid) { + if (isset($locationList[$lid])) { + $locationList[$lid]['checked'] = 'checked'; + } + } + Render::addTemplate('edit-group', $group + ['locations' => array_values($locationList)]); + } + } + +} -- cgit v1.2.3-55-g7522