diff options
Diffstat (limited to 'modules-available')
-rw-r--r-- | modules-available/remoteaccess/hooks/cron.inc.php | 3 | ||||
-rw-r--r-- | modules-available/remoteaccess/inc/remoteaccess.inc.php | 17 |
2 files changed, 12 insertions, 8 deletions
diff --git a/modules-available/remoteaccess/hooks/cron.inc.php b/modules-available/remoteaccess/hooks/cron.inc.php index 3e0e130b..2ee6e375 100644 --- a/modules-available/remoteaccess/hooks/cron.inc.php +++ b/modules-available/remoteaccess/hooks/cron.inc.php @@ -1,6 +1,3 @@ <?php -if (!Module::isAvailable('rebootcontrol')) - return; - RemoteAccess::ensureMachinesRunning(); 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) |