summaryrefslogtreecommitdiffstats
path: root/modules-available/statistics
diff options
context:
space:
mode:
authorSimon Rettberg2022-09-13 10:37:37 +0200
committerSimon Rettberg2022-09-13 10:37:37 +0200
commit4e94a4ee26d8404a57d854e81a911355e2d14f93 (patch)
treefa2cd86ae99c9f0895cdaa6104f4a85af7ee2357 /modules-available/statistics
parent[statistics] Add NIC speed filter/display (diff)
downloadslx-admin-4e94a4ee26d8404a57d854e81a911355e2d14f93.tar.gz
slx-admin-4e94a4ee26d8404a57d854e81a911355e2d14f93.tar.xz
slx-admin-4e94a4ee26d8404a57d854e81a911355e2d14f93.zip
[statistics] Filter: Allow mac address with ':' and no separator at all
Closes #3914
Diffstat (limited to 'modules-available/statistics')
-rw-r--r--modules-available/statistics/inc/statisticsfilter.inc.php22
1 files changed, 21 insertions, 1 deletions
diff --git a/modules-available/statistics/inc/statisticsfilter.inc.php b/modules-available/statistics/inc/statisticsfilter.inc.php
index c54c56d1..d23ba92c 100644
--- a/modules-available/statistics/inc/statisticsfilter.inc.php
+++ b/modules-available/statistics/inc/statisticsfilter.inc.php
@@ -256,7 +256,7 @@ abstract class StatisticsFilter
'clientip' => new IpStatisticsFilter(),
'hostname' => new SimpleStatisticsFilter('hostname', self::OP_STRCMP, 'pc.fqdn.example.com'),
'machineuuid' => new SimpleStatisticsFilter('machineuuid', self::OP_STRCMP, '88888888-4444-4444-121212121212'),
- 'macaddr' => new SimpleStatisticsFilter('macaddr', self::OP_STRCMP, '11-22-33-44-55-66'),
+ 'macaddr' => new MacAddressStatisticsFilter(),
'firstseen' => new DateStatisticsFilter('firstseen', '2020-10-15 14:00'),
'lastseen' => new DateStatisticsFilter('lastseen', '2020-10-15 14:00'),
'lastboot' => new DateStatisticsFilter('lastboot', '2020-10-15 14:00'),
@@ -730,6 +730,26 @@ class NicSpeedStatisticsFilter extends StatisticsFilter
}
+class MacAddressStatisticsFilter extends SimpleStatisticsFilter
+{
+ public function __construct()
+ {
+ parent::__construct('macaddr', self::OP_STRCMP, '11-22-33-44-55-66');
+ }
+
+ public function whereClause(string $operator, $argument, array &$args, array &$joins): string
+ {
+ // Allow just 12 hex digits, and convert ':' to '-', which we unfortunately settled on for the DB format
+ if (preg_match('/^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i',
+ $argument, $out)) {
+ $argument = $out[1] . '-' . $out[2] . '-' . $out[3] . '-' . $out[4] . '-' . $out[5] . '-' . $out[6];
+ } elseif (strpos($argument, ':') !== false) {
+ $argument = str_replace(':', '-', $argument);
+ }
+ return parent::whereClause($operator, $argument, $args, $joins);
+ }
+}
+
class AnyHardwarePropStatisticsFilter extends StatisticsFilter
{