aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INITIAL-COMMANDS.md2
-rw-r--r--README.d/03-check-certs.avifbin9339 -> 12089 bytes
-rw-r--r--README.md5
-rw-r--r--certificate-renew-issued.rsc6
-rw-r--r--doc/netwatch-notify.md9
-rw-r--r--global-functions.rsc14
-rw-r--r--mod/notification-matrix.rsc34
-rw-r--r--mod/notification-telegram.rsc7
-rw-r--r--netwatch-notify.rsc2
9 files changed, 50 insertions, 29 deletions
diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md
index 0320fe8..4a12197 100644
--- a/INITIAL-COMMANDS.md
+++ b/INITIAL-COMMANDS.md
@@ -23,7 +23,7 @@ Run the complete base installation:
:if ([ :len [ /certificate/find where fingerprint="46494e30379059df18be52124305e606fc59070e5b21076ce113954b60517cda" or fingerprint="69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470" ] ] != 2) do={
:error "Something is wrong with your certificates!";
};
- /file/remove "letsencrypt-E1.pem";
+ /file/remove [ find where name="letsencrypt-E1.pem" ];
:delay 1s;
/system/script/set name=("global-config-overlay-" . [ /system/clock/get date ] . "-" . [ /system/clock/get time ]) [ find where name="global-config-overlay" ];
:foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={
diff --git a/README.d/03-check-certs.avif b/README.d/03-check-certs.avif
index 33bdc40..0477c39 100644
--- a/README.d/03-check-certs.avif
+++ b/README.d/03-check-certs.avif
Binary files differ
diff --git a/README.md b/README.md
index 4516736..b6e529d 100644
--- a/README.md
+++ b/README.md
@@ -91,11 +91,12 @@ a sensitive property, the passphrase.
For basic verification we rename the certificates and print them by
fingerprint. Make sure exactly these two certificates ("*E1*" and
-"*ISRG-Root-X2*") are shown.
+"*ISRG-Root-X2*") are shown. Also remove the left over file.
/certificate/set name="E1" [ find where common-name="E1" ];
/certificate/set name="ISRG-Root-X2" [ find where common-name="ISRG Root X2" ];
- /certificate/print proplist=name where fingerprint="46494e30379059df18be52124305e606fc59070e5b21076ce113954b60517cda" or fingerprint="69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470";
+ /certificate/print proplist=name,fingerprint where fingerprint="46494e30379059df18be52124305e606fc59070e5b21076ce113954b60517cda" or fingerprint="69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470";
+ /file/remove [ find where name="letsencrypt-E1.pem" ];
![screenshot: check certs](README.d/03-check-certs.avif)
diff --git a/certificate-renew-issued.rsc b/certificate-renew-issued.rsc
index 77ed3d0..7815443 100644
--- a/certificate-renew-issued.rsc
+++ b/certificate-renew-issued.rsc
@@ -36,13 +36,13 @@
/certificate/export-certificate ($CertVal->"name") type=pkcs12 \
file-name=("cert-issued/" . $CertVal->"common-name") \
export-passphrase=($CertIssuedExportPass->($CertVal->"common-name"));
- $LogPrint info $ScriptName ("Issued a new certificate for \"" . $CertVal->"common-name" . \
- "\", exported to \"cert-issued/" . $CertVal->"common-name" . ".p12\".");
+ $LogPrint info $ScriptName ("Issued a new certificate for '" . $CertVal->"common-name" . \
+ "', exported to 'cert-issued/" . $CertVal->"common-name" . ".p12'.");
} else={
$LogPrint warning $ScriptName ("Failed creating directory, not exporting certificate.");
}
} else={
- $LogPrint info $ScriptName ("Issued a new certificate for \"" . $CertVal->"common-name" . "\".");
+ $LogPrint info $ScriptName ("Issued a new certificate for '" . $CertVal->"common-name" . "'.");
}
}
} on-error={ }
diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md
index 90cd830..2db32bb 100644
--- a/doc/netwatch-notify.md
+++ b/doc/netwatch-notify.md
@@ -104,6 +104,15 @@ powered off, but accessibility is of interest.
Go and get your coffee ☕️ before sending the print job.
+### No log on failed resolve
+
+A message is writting to log after three failed attemts to resolve a host.
+However this can cause some noise for hosts that are expected to have
+failures, for example when the name is dynamically added by
+[`dhcp-to-dns`](dhcp-to-dns.md). This can be suppressed:
+
+ /tool/netwatch/add comment="notify, name=client, resolve=client.dhcp.example.com, no-resolve-fail" host=10.0.0.0;
+
### Add a note in notification
For some extra information it is possible to add a text note. This is
diff --git a/global-functions.rsc b/global-functions.rsc
index 918ea9a..66765bf 100644
--- a/global-functions.rsc
+++ b/global-functions.rsc
@@ -58,6 +58,7 @@
:global ParseDate;
:global ParseKeyValueStore;
:global PrettyPrint;
+:global ProtocolStrip;
:global RandomDelay;
:global RequiredRouterOS;
:global ScriptFromTerminal;
@@ -150,7 +151,7 @@
$WaitForFile $FileName;
/certificate/import file-name=$FileName passphrase="" as-value;
:delay 1s;
- /file/remove $FileName;
+ /file/remove [ find where name=$FileName ];
:foreach Cert in=[ /certificate/find where name~("^" . $FileName . "_[0-9]+\$") ] do={
$CertificateNameByCN [ /certificate/get $Cert common-name ];
@@ -885,6 +886,17 @@
:put [ $Unix2Dos $Input ];
}
+# strip protocol from from url string
+:set ProtocolStrip do={
+ :local Input [ :tostr $1 ];
+
+ :local Pos [ :find $Input "://" ];
+ :if ([ :typeof $Pos ] = "nil") do={
+ :return $Input;
+ }
+ :return [ :pick $Input ($Pos + 3) [ :len $Input ] ];
+}
+
# delay a random amount of seconds
:set RandomDelay do={
:local Time [ :tonum $1 ];
diff --git a/mod/notification-matrix.rsc b/mod/notification-matrix.rsc
index 3e3a33e..9442f54 100644
--- a/mod/notification-matrix.rsc
+++ b/mod/notification-matrix.rsc
@@ -76,6 +76,7 @@
:global EitherOr;
:global FetchUserAgentStr;
:global LogPrint;
+ :global ProtocolStrip;
:global SymbolForNotification;
:local PrepareText do={
@@ -86,21 +87,15 @@
}
:local Return "";
- :local Chars {
- "plain"={ "\\"; "\""; "\n" };
- "format"={ "\\"; "\""; "\n"; "&"; "<"; ">" };
- }
- :local Subs {
- "plain"={ "\\\\"; "\\\""; "\\n" };
- "format"={ "\\\\"; "&quot;"; "<br/>"; "&amp;"; "&lt;"; "&gt;" };
- }
+ :local Chars { "\""; "\n"; "&"; "<"; ">" };
+ :local Subs { "&quot;"; "<br/>"; "&amp;"; "&lt;"; "&gt;" };
:for I from=0 to=([ :len $Input ] - 1) do={
:local Char [ :pick $Input $I ];
- :local Replace [ :find ($Chars->$2) $Char ];
+ :local Replace [ :find $Chars $Char ];
:if ([ :typeof $Replace ] = "num") do={
- :set Char ($Subs->$2->$Replace);
+ :set Char ($Subs->$Replace);
}
:set Return ($Return . $Char);
}
@@ -117,17 +112,18 @@
}
:local Headers ({ [ $FetchUserAgentStr ($Notification->"origin") ] });
- :local Plain [ $PrepareText ("## [" . $IdentityExtra . $Identity . "] " . \
- ($Notification->"subject") . "\n```\n" . ($Notification->"message") . "\n```") "plain" ];
+ :local Plain ("## [" . $IdentityExtra . $Identity . "] " . \
+ ($Notification->"subject") . "\n```\n" . ($Notification->"message") . "\n```");
:local Formatted ("<h2>" . [ $PrepareText ("[" . $IdentityExtra . $Identity . "] " . \
- ($Notification->"subject")) "format" ] . "</h2>" . "<pre><code>" . \
- [ $PrepareText ($Notification->"message") "format" ] . "</code></pre>");
+ ($Notification->"subject")) ] . "</h2>" . "<pre><code>" . \
+ [ $PrepareText ($Notification->"message") ] . "</code></pre>");
:if ([ :len ($Notification->"link") ] > 0) do={
- :set Plain ($Plain . "\\n" . [ $SymbolForNotification "link" ] . \
- [ $PrepareText ("[" . $Notification->"link" . "](" . $Notification->"link" . ")") "plain" ]);
+ :local Label [ $ProtocolStrip ($Notification->"link") ];
+ :set Plain ($Plain . "\n" . [ $SymbolForNotification "link" ] . \
+ "[" . $Label . "](" . $Notification->"link" . ")");
:set Formatted ($Formatted . "<br/>" . [ $SymbolForNotification "link" ] . \
- "<a href=\\\"" . [ $PrepareText ($Notification->"link") "format" ] . "\\\">" . \
- [ $PrepareText ($Notification->"link") "format" ] . "</a>");
+ "<a href=\"" . [ $PrepareText ($Notification->"link") ] . "\">" . \
+ [ $PrepareText $Label ] . "</a>");
}
:do {
@@ -146,7 +142,7 @@
:local Text ([ $SymbolForNotification "alarm-clock" ] . \
"This message was queued since " . [ /system/clock/get date ] . \
" " . [ /system/clock/get time ] . " and may be obsolete.");
- :set Plain ($Plain . "\\n" . $Text);
+ :set Plain ($Plain . "\n" . $Text);
:set Formatted ($Formatted . "<br/>" . $Text);
:set ($MatrixQueue->[ :len $MatrixQueue ]) { headers=$Headers; \
accesstoken=$AccessToken; homeserver=$HomeServer; room=$Room; \
diff --git a/mod/notification-telegram.rsc b/mod/notification-telegram.rsc
index c78a8ad..745367a 100644
--- a/mod/notification-telegram.rsc
+++ b/mod/notification-telegram.rsc
@@ -76,6 +76,7 @@
:global EitherOr;
:global IfThenElse;
:global LogPrint;
+ :global ProtocolStrip;
:global SymbolForNotification;
:global UrlEncode;
@@ -117,7 +118,7 @@
($Notification->"subject")) "plain" ] . "__*\n\n");
:local LenSubject [ :len $Text ];
:local LenMessage [ :len ($Notification->"message") ];
- :local LenLink [ :len ($Notification->"link") ];
+ :local LenLink ([ :len ($Notification->"link") ] * 2);
:local LenSum ($LenSubject + $LenMessage + $LenLink);
:if ($LenSum > 3968) do={
:set Text ($Text . [ $EscapeMD ([ :pick ($Notification->"message") 0 (3840 - $LenSubject - $LenLink) ] . "...") "body" ]);
@@ -126,7 +127,9 @@
:set Text ($Text . [ $EscapeMD ($Notification->"message") "body" ]);
}
:if ($LenLink > 0) do={
- :set Text ($Text . "\n" . [ $SymbolForNotification "link" ] . [ $EscapeMD ($Notification->"link") "plain" ]);
+ :set Text ($Text . "\n" . [ $SymbolForNotification "link" ] . \
+ "[" . [ $EscapeMD [ $ProtocolStrip ($Notification->"link") ] "plain" ] . "]" . \
+ "(" . [ $EscapeMD ($Notification->"link") "plain" ] . ")");
}
:if ($Truncated = true) do={
:set Text ($Text . "\n" . [ $SymbolForNotification "scissors" ] . \
diff --git a/netwatch-notify.rsc b/netwatch-notify.rsc
index 0b6c366..9b0beb9 100644
--- a/netwatch-notify.rsc
+++ b/netwatch-notify.rsc
@@ -116,7 +116,7 @@
}
} on-error={
:set ($Metric->"resolve-failcnt") ($Metric->"resolve-failcnt" + 1);
- :if ($Metric->"resolve-failcnt" = 3) do={
+ :if ($Metric->"resolve-failcnt" = 3 && $HostInfo->"no-resolve-fail" != true) do={
$LogPrint warning $ScriptName ("Resolving name '" . $HostInfo->"resolve" . [ $IfThenElse \
($HostInfo->"resolve" != $HostInfo->"name") ("' for " . $Type . " '" . \
$HostInfo->"name") "" ] . "' failed.");