diff options
Diffstat (limited to 'modules-available/remoteaccess/inc')
-rw-r--r-- | modules-available/remoteaccess/inc/remoteaccess.inc.php | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/modules-available/remoteaccess/inc/remoteaccess.inc.php b/modules-available/remoteaccess/inc/remoteaccess.inc.php index fc719b37..37d33d45 100644 --- a/modules-available/remoteaccess/inc/remoteaccess.inc.php +++ b/modules-available/remoteaccess/inc/remoteaccess.inc.php @@ -19,11 +19,18 @@ class RemoteAccess public static function ensureMachinesRunning() { - $res = Database::simpleQuery("SELECT rg.groupid, rg.wolcount, GROUP_CONCAT(rxl.locationid) AS locs FROM remoteaccess_group rg - INNER JOIN remoteaccess_x_location rxl USING (groupid) - WHERE rg.active = 1 - GROUP BY groupid"); + if (!Module::isAvailable('rebootcontrol')) { + error_log("Not waking remote access machines: rebootcontrol missing"); + return; + } + + $res = Database::simpleQuery("SELECT rg.groupid, rg.groupname, rg.wolcount, GROUP_CONCAT(rxl.locationid) AS locs FROM remoteaccess_group rg + INNER JOIN remoteaccess_x_location rxl USING (groupid) + WHERE rg.active = 1 + GROUP BY groupid"); + // Consider machines we tried to wake in the past 90 seconds as online + $wolDeadline = time() - 90; while ($row = $res->fetch(PDO::FETCH_ASSOC)) { if ($row['wolcount'] <= 0) continue; @@ -33,7 +40,7 @@ class RemoteAccess continue; $active = Database::queryFirst("SELECT Count(*) AS cnt FROM machine m INNER JOIN remoteaccess_machine rm USING (machineuuid) - WHERE m.locationid IN ($locs) AND m.state = 'IDLE'"); + WHERE m.locationid IN ($locs) AND (m.state = 'IDLE' OR rm.woltime > $wolDeadline)"); $active = (isset($active['cnt']) ? $active['cnt'] : 0); $wantNum = $row['wolcount'] - $active; if ($wantNum <= 0) |