aboutsummaryrefslogtreecommitdiffstats
path: root/log-forward
diff options
context:
space:
mode:
Diffstat (limited to 'log-forward')
-rw-r--r--log-forward84
1 files changed, 0 insertions, 84 deletions
diff --git a/log-forward b/log-forward
deleted file mode 100644
index 3867519..0000000
--- a/log-forward
+++ /dev/null
@@ -1,84 +0,0 @@
-#!rsc by RouterOS
-# RouterOS script: log-forward
-# Copyright (c) 2020-2022 Christian Hesse <mail@eworm.de>
-# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md
-#
-# forward log messages via notification
-# https://git.eworm.de/cgit/routeros-scripts/about/doc/log-forward.md
-
-:local 0 "log-forward";
-:global GlobalFunctionsReady;
-:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
-
-:global Identity;
-:global LogForwardFilter;
-:global LogForwardFilterMessage;
-:global LogForwardInclude;
-:global LogForwardIncludeMessage;
-:global LogForwardLast;
-:global LogForwardRateLimit;
-:global NotificationsWithSymbols;
-
-:global EscapeForRegEx;
-:global HexToNum;
-:global IfThenElse;
-:global LogPrintExit2;
-:global QuotedPrintable;
-:global ScriptLock;
-:global SendNotification2;
-:global SymbolForNotification;
-
-$ScriptLock $0;
-
-:if ([ :typeof $LogForwardRateLimit ] = "nothing") do={
- :set LogForwardRateLimit 0;
-}
-
-:if ($LogForwardRateLimit > 30) do={
- :set LogForwardRateLimit ($LogForwardRateLimit - 1);
- $LogPrintExit2 info $0 ("Rate limit in action, not forwarding logs, if any!") true;
-}
-
-:local Count 0;
-:local Duplicates false;
-:local Last [ $IfThenElse ([ :len $LogForwardLast ] > 0) [ $HexToNum $LogForwardLast ] -1 ];
-:local Messages "";
-:local MessageVal;
-:local MessageDups [ :toarray "" ];
-
-:local LogForwardFilterLogForwarding ("^" . [ $EscapeForRegEx ("Error sending e-mail <" . \
- [ $QuotedPrintable ("[" . $Identity . "] " . [ $SymbolForNotification "memo" ] . \
- "Log Forwarding") ] . ">:") ]);
-:foreach Message in=[ /log/find where (!(message="") and !(message~$LogForwardFilterLogForwarding) and \
- !(topics~$LogForwardFilter) and !(message~$LogForwardFilterMessage)) or \
- topics~$LogForwardInclude or message~$LogForwardIncludeMessage ] do={
- :set MessageVal [ /log/get $Message ];
-
- :if ($Last < [ $HexToNum ($MessageVal->".id") ]) do={
- :local DupCount ($MessageDups->($MessageVal->"message"));
- :if ($DupCount < 3) do={
- :set Messages ($Messages . "\n" . [ $IfThenElse ($NotificationsWithSymbols = true) (" \E2\97\8F ") ] . \
- $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={
- $SendNotification2 ({ origin=$0; \
- subject=([ $SymbolForNotification "memo" ] . "Log Forwarding"); \
- message=("The log on " . $Identity . " contains " . [ $IfThenElse ($Count = 1) \
- "this message" ("these " . $Count . " messages") ] . " after " . \
- [ /system/resource/get uptime ] . " uptime." . [ $IfThenElse ($Duplicates = true) \
- (" Multi-repeated messages have been skipped.") ] . "\n" . $Messages) });
-
- :set LogForwardRateLimit ($LogForwardRateLimit + 10);
- :set LogForwardLast ($MessageVal->".id");
-} else={
- :if ($LogForwardRateLimit > 0) do={
- :set LogForwardRateLimit ($LogForwardRateLimit - 1);
- }
-}