From ae048fb16bc6b2b2d7e5084db18c62cb379ffe1d Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 27 Apr 2020 13:38:32 +0200 Subject: [rebootcontrol/statistics] Move subnet size handling to hook --- .../rebootcontrol/hooks/client-update.inc.php | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 modules-available/rebootcontrol/hooks/client-update.inc.php diff --git a/modules-available/rebootcontrol/hooks/client-update.inc.php b/modules-available/rebootcontrol/hooks/client-update.inc.php new file mode 100644 index 00000000..48c16b66 --- /dev/null +++ b/modules-available/rebootcontrol/hooks/client-update.inc.php @@ -0,0 +1,24 @@ += 8 && $subnet[1] < 32) { + $start = ip2long($ip); + if ($start !== false) { + $maskHost = (int)(pow(2, 32 - $subnet[1]) - 1); + $maskNet = ~$maskHost & 0xffffffff; + $end = $start | $maskHost; + $start &= $maskNet; + $netparams = ['start' => sprintf('%u', $start), 'end' => sprintf('%u', $end), 'now' => $NOW]; + $affected = Database::exec('UPDATE reboot_subnet + SET lastseen = :now, seencount = seencount + 1 + WHERE start = :start AND end = :end', $netparams); + if ($affected === 0) { + // New entry + Database::exec('INSERT INTO reboot_subnet (start, end, fixed, isdirect, lastseen, seencount) + VALUES (:start, :end, 0, 0, :now, 1)', $netparams); + } + } + } +} -- cgit v1.2.3-55-g7522