Compare commits

...

3 commits

Author SHA1 Message Date
Christian Hesse
73530baf99 global-functions: drop $HexToNum 2026-01-13 21:33:26 +01:00
Christian Hesse
c46e44e8a9 log-forward: fix indention 2026-01-13 21:28:26 +01:00
Christian Hesse
44663f0c38 log-forward: use comparison for ids
This was introduced with RouterOS 7.22beta1.
2026-01-13 21:28:26 +01:00
2 changed files with 23 additions and 38 deletions

View file

@ -47,7 +47,6 @@
:global GetRandom20CharHex;
:global GetRandomNumber;
:global Grep;
:global HexToNum;
:global HumanReadableNum;
:global IfThenElse;
:global IsDefaultRouteReachable;
@ -717,19 +716,6 @@
:return [];
}
# convert from hex (string) to num
:set HexToNum do={
:local Input [ :tostr $1 ];
:global HexToNum;
:if ([ :pick $Input 0 ] = "*") do={
:return [ $HexToNum [ :pick $Input 1 [ :len $Input ] ] ];
}
:return [ :tonum ("0x" . $Input) ];
}
# return human readable number
:set HumanReadableNum do={
:local Input [ :tonum $1 ];

View file

@ -24,7 +24,6 @@
:global LogForwardRateLimit;
:global EitherOr;
:global HexToNum;
:global IfThenElse;
:global LogForwardFilterLogForwarding;
:global LogPrint;
@ -38,6 +37,9 @@
:error false;
}
# LogForwardLast is not initialized, by intention: we want
# to catch *0 on first invocation!
:if ([ :typeof $LogForwardRateLimit ] = "nothing") do={
:set LogForwardRateLimit 0;
}
@ -51,7 +53,6 @@
:local Count 0;
:local Duplicates false;
:local Last [ $IfThenElse ([ :len $LogForwardLast ] > 0) [ $HexToNum $LogForwardLast ] -1 ];
:local Messages "";
:local Warning false;
:local MessageVal;
@ -63,32 +64,30 @@
:set LogForwardIncludeMessage [ $EitherOr $LogForwardIncludeMessage [] ];
:local LogForwardFilterLogForwardingCached [ $EitherOr [ $LogForwardFilterLogForwarding ] ("\$^") ];
:foreach Message in=[ /log/find where (!(message="") and \
!(message~$LogForwardFilterLogForwardingCached) and \
!(topics~$LogForwardFilter) and !(message~$LogForwardFilterMessage)) or \
topics~$LogForwardInclude or message~$LogForwardIncludeMessage ] do={
:foreach Message in=[ /log/find where .id>$LogForwardLast and \
((!(message="") and !(message~$LogForwardFilterLogForwardingCached) and \
!(topics~$LogForwardFilter) and !(message~$LogForwardFilterMessage)) or \
topics~$LogForwardInclude or message~$LogForwardIncludeMessage) ] do={
:set MessageVal [ /log/get $Message ];
:local Bullet "information";
:if ($Last < [ $HexToNum ($MessageVal->".id") ]) do={
:local DupCount ($MessageDups->($MessageVal->"message"));
:if ($MessageVal->"topics" ~ "(warning)") do={
:set Warning true;
:set Bullet "large-orange-circle";
}
:if ($MessageVal->"topics" ~ "(emergency|alert|critical|error)") do={
:set Warning true;
:set Bullet "large-red-circle";
}
:if ($DupCount < 3) do={
:set Messages ($Messages . "\n" . [ $SymbolForNotification $Bullet ] . \
$MessageVal->"time" . " " . [ :tostr ($MessageVal->"topics") ] . " " . $MessageVal->"message");
} else={
:set Duplicates true;
}
:set ($MessageDups->($MessageVal->"message")) ($DupCount + 1);
:set Count ($Count + 1);
:local DupCount ($MessageDups->($MessageVal->"message"));
:if ($MessageVal->"topics" ~ "(warning)") do={
:set Warning true;
:set Bullet "large-orange-circle";
}
:if ($MessageVal->"topics" ~ "(emergency|alert|critical|error)") do={
:set Warning true;
:set Bullet "large-red-circle";
}
:if ($DupCount < 3) do={
:set Messages ($Messages . "\n" . [ $SymbolForNotification $Bullet ] . \
$MessageVal->"time" . " " . [ :tostr ($MessageVal->"topics") ] . " " . $MessageVal->"message");
} else={
:set Duplicates true;
}
:set ($MessageDups->($MessageVal->"message")) ($DupCount + 1);
:set Count ($Count + 1);
}
:if ($Count > 0) do={