Compare commits

..

19 commits

Author SHA1 Message Date
Christian Hesse
a95077c14b fw-addr-lists.d/allow: use rsc.eworm.de in the list 2025-11-07 23:16:02 +01:00
Christian Hesse
7803d3f81a fw-addr-lists.d/{allow,block}: use short url rsc.eworm.de 2025-11-07 23:16:02 +01:00
Christian Hesse
0e23facf82 Makefile: clean up and add phony targets 2025-11-07 23:16:02 +01:00
Christian Hesse
33e8af1924 global-functions: $ScriptInstallUpdate: extra actions on 'not found' only 2025-11-07 23:16:02 +01:00
Christian Hesse
1a93c61bfd global-functions: $ScriptInstallUpdate: either or...
... but not both.
2025-11-07 23:16:02 +01:00
Christian Hesse
b0a85436e1 global-functions: $ScriptInstallUpdate: give hint on ignore
Fixes: https://github.com/eworm-de/routeros-scripts/issues/112
2025-11-07 23:16:02 +01:00
Christian Hesse
9dc1c3b96c contrib/checksums.sh: output to stdout...
... and let the Makefile redirect.
2025-11-07 23:16:02 +01:00
Christian Hesse
049f4ea608 Merge branch 'contrib' into next 2025-11-07 23:16:02 +01:00
Christian Hesse
24e3c12f02 contrib/notification: format the values italic 2025-11-07 23:16:02 +01:00
Christian Hesse
dbf332383a contrib/notification: update date format 2025-11-07 23:16:02 +01:00
Christian Hesse
76ddd94537 contrib/{logo-color,notification}: add navigation structure 2025-11-07 23:16:02 +01:00
Christian Hesse
552dbbd9b9 contrib/*: unify html code 2025-11-07 23:16:02 +01:00
Christian Hesse
a66f8edbd1 contrib/html.sh: drop comman from id/anchor 2025-11-07 23:16:02 +01:00
Christian Hesse
51a4a07032 contrib/html.sh: properly handle anchors 2025-11-07 23:16:02 +01:00
Christian Hesse
45ee884d8a contrib/html.sh: link the logo with relative path 2025-11-07 23:16:02 +01:00
Christian Hesse
6317fb8f40 contrib/html.sh: add a margin on left and right...
... for windows in landscape (wider than high).
2025-11-07 23:16:02 +01:00
Christian Hesse
a4d4365735 contrib/html.sh: link the stylesheet from top level...
... and copy it there in Makefile.
2025-11-07 22:11:25 +01:00
Christian Hesse
a5ac5138be contrib/html.sh: include stylesheet via link 2025-11-07 22:11:25 +01:00
Christian Hesse
4b8e8adb2d contrib/{logo-color,notification}: use a single style 2025-11-07 22:11:25 +01:00
13 changed files with 24 additions and 37 deletions

View file

@ -61,7 +61,7 @@ Import a certificate by CommonName
Running the function `$CertificateAvailable` with that name as parameter Running the function `$CertificateAvailable` with that name as parameter
makes sure the certificate is available in the device's store: makes sure the certificate is available in the device's store:
$CertificateAvailable "ISRG Root X2" "fetch"; $CertificateAvailable "ISRG Root X2";
If the certificate is actually available already nothing happens, and there If the certificate is actually available already nothing happens, and there
is no output. Otherwise the certificate is downloaded and imported. is no output. Otherwise the certificate is downloaded and imported.

View file

@ -22,11 +22,8 @@ Run the complete base installation:
:local CertFileName "ISRG-Root-X2.pem"; :local CertFileName "ISRG-Root-X2.pem";
:local CertFingerprint "69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470"; :local CertFingerprint "69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470";
:local CertSettings [ /certificate/settings/get ]; :if (!(([ /certificate/settings/get ]->"builtin-trust-anchors") = "trusted" && \
:if (!((($CertSettings->"builtin-trust-anchors") = "trusted" || \ [[ :parse (":return [ :len [ /certificate/builtin/find where common-name=\"" . $CertCommonName . "\" ] ]") ]] > 0)) do={
($CertSettings->"builtin-trust-store") ~ "fetch" || \
($CertSettings->"builtin-trust-store") = "all") && \
[[ :parse (":return [ :len [ /certificate/builtin/find where common-name=\"" . $CertCommonName . "\" ] ]") ]] > 0)) do={
:put "Importing certificate..."; :put "Importing certificate...";
/tool/fetch ($BaseUrl . "certs/" . $CertFileName) dst-path=$CertFileName as-value; /tool/fetch ($BaseUrl . "certs/" . $CertFileName) dst-path=$CertFileName as-value;
:delay 1s; :delay 1s;

View file

@ -77,11 +77,8 @@ download the certificates.
> 💡️ **Hint**: RouterOS 7.19 comes with a builtin certificate store. You > 💡️ **Hint**: RouterOS 7.19 comes with a builtin certificate store. You
> can skip the steps regarding certificate download and import and jump > can skip the steps regarding certificate download and import and jump
> to [installation of scripts](#installation-of-scripts) if you set the > to [installation of scripts](#installation-of-scripts) if you set the
> trust for these builtin trust anchors: > trust for these builtin trust anchors:
> `/certificate/settings/set builtin-trust-anchors=trusted;` > `/certificate/settings/set builtin-trust-anchors=trusted;`
> With RouterOS 7.21 the functionality was changed. Set this at minimum,
> but make sure not to drop other targets:
> `/certificate/settings/set builtin-trust-store=fetch;`
If you intend to download the scripts from a If you intend to download the scripts from a
different location (for example from github.com) install the corresponding different location (for example from github.com) install the corresponding
@ -176,7 +173,7 @@ This last step is required when ever you make changes to your configuration.
> **Info**: It is recommended to edit the configuration using the command > **Info**: It is recommended to edit the configuration using the command
> line interface. If using Winbox on Windows OS, the line endings may be > line interface. If using Winbox on Windows OS, the line endings may be
> missing. To fix this run: > missing. To fix this run:
> `/system/script/set source=[ :tocrlf [ get global-config-overlay source ] ] global-config-overlay;` > `/system/script/set source=[ :tocrlf [ get global-config-overlay source ] ] global-config-overlay;`
Updating scripts Updating scripts

View file

@ -21,7 +21,7 @@
:global CertWarnTime; :global CertWarnTime;
:global Identity; :global Identity;
:global CertificateAvailable; :global CertificateAvailable
:global EscapeForRegEx; :global EscapeForRegEx;
:global IfThenElse; :global IfThenElse;
:global LogPrint; :global LogPrint;
@ -189,7 +189,7 @@
fingerprint!=[ :tostr ($CertVal->"fingerprint") ] expires-after>$CertRenewTime ]; fingerprint!=[ :tostr ($CertVal->"fingerprint") ] expires-after>$CertRenewTime ];
:local CertNewVal [ /certificate/get $CertNew ]; :local CertNewVal [ /certificate/get $CertNew ];
:if ([ $CertificateAvailable ([ $ParseKeyValueStore ($CertNewVal->"issuer") ]->"CN") "fetch" ] = false) do={ :if ([ $CertificateAvailable ([ $ParseKeyValueStore ($CertNewVal->"issuer") ]->"CN") ] = false) do={
$LogPrint warning $ScriptName ("The certificate chain is not available!"); $LogPrint warning $ScriptName ("The certificate chain is not available!");
} }

View file

@ -1,9 +1,8 @@
/* stylesheet for RouterOS Scripts */ /* stylesheet for RouterOS Scripts */
body { body {
background-color: transparent;
font-family: fira-sans, sans-serif; font-family: fira-sans, sans-serif;
font-size: 10pt; font-size: 10pt;
line-height: 1.6; background-color: transparent;
} }
@media only screen and (orientation: landscape) { @media only screen and (orientation: landscape) {
body { body {

View file

@ -49,7 +49,7 @@ your server in device's certificate store.
The example below is for `matrix.org`, which uses a trust chain from *Google The example below is for `matrix.org`, which uses a trust chain from *Google
Trust Services*. Run this to import the required certificate: Trust Services*. Run this to import the required certificate:
$CertificateAvailable "GTS Root R4" "fetch"; $CertificateAvailable "GTS Root R4";
Replace the CA certificate name with what ever is needed for your server. Replace the CA certificate name with what ever is needed for your server.
You may want to find the You may want to find the

View file

@ -74,7 +74,7 @@
:if ([ :len ($List->"cert") ] > 0) do={ :if ([ :len ($List->"cert") ] > 0) do={
:set CheckCertificate true; :set CheckCertificate true;
:if ([ $CertificateAvailable ($List->"cert") "fetch" ] = false) do={ :if ([ $CertificateAvailable ($List->"cert") ] = false) do={
$LogPrint warning $ScriptName ("Downloading required certificate (" . $FwListName . \ $LogPrint warning $ScriptName ("Downloading required certificate (" . $FwListName . \
" / " . $List->"url" . ") failed, trying anyway."); " / " . $List->"url" . ") failed, trying anyway.");
} }

View file

@ -106,15 +106,11 @@
# check and download required certificate # check and download required certificate
:set CertificateAvailable do={ :set CertificateAvailable do={
:local CommonName [ :tostr $1 ]; :local CommonName [ :tostr $1 ];
:local UseFor [ :tostr $2 ];
:global CertificateDownload; :global CertificateDownload;
:global EitherOr;
:global LogPrint; :global LogPrint;
:global ParseKeyValueStore; :global ParseKeyValueStore;
:set UseFor [ $EitherOr $UseFor "undefined" ];
:if ([ /system/resource/get free-hdd-space ] < 8388608 && \ :if ([ /system/resource/get free-hdd-space ] < 8388608 && \
[ /certificate/settings/get crl-download ] = true && \ [ /certificate/settings/get crl-download ] = true && \
[ /certificate/settings/get crl-store ] = "system") do={ [ /certificate/settings/get crl-store ] = "system") do={
@ -127,10 +123,7 @@
:return false; :return false;
} }
:local CertSettings [ /certificate/settings/get ]; :if (([ /certificate/settings/get ]->"builtin-trust-anchors") = "trusted" && \
:if ((($CertSettings->"builtin-trust-anchors") = "trusted" || \
($CertSettings->"builtin-trust-store") ~ $UseFor || \
($CertSettings->"builtin-trust-store") = "all") && \
[[ :parse (":return [ :len [ /certificate/builtin/find where common-name=\"" . $CommonName . "\" ] ]") ]] > 0) do={ [[ :parse (":return [ :len [ /certificate/builtin/find where common-name=\"" . $CommonName . "\" ] ]") ]] > 0) do={
:return true; :return true;
} }
@ -168,6 +161,7 @@
:global ScriptUpdatesBaseUrl; :global ScriptUpdatesBaseUrl;
:global ScriptUpdatesUrlSuffix; :global ScriptUpdatesUrlSuffix;
:global CertificateAvailable;
:global CertificateNameByCN; :global CertificateNameByCN;
:global CleanName; :global CleanName;
:global FetchUserAgentStr; :global FetchUserAgentStr;
@ -404,7 +398,7 @@
:return true; :return true;
} }
:if ([ $CertificateAvailable "ISRG Root X1" "fetch" ] = false) do={ :if ([ $CertificateAvailable "ISRG Root X1" ] = false) do={
$LogPrint error $0 ("Downloading required certificate failed."); $LogPrint error $0 ("Downloading required certificate failed.");
:return false; :return false;
} }
@ -640,7 +634,7 @@
} }
:do { :do {
:if ([ $CertificateAvailable "GTS Root R4" "fetch" ] = false) do={ :if ([ $CertificateAvailable "GTS Root R4" ] = false) do={
$LogPrint warning $0 ("Downloading required certificate failed."); $LogPrint warning $0 ("Downloading required certificate failed.");
:error false; :error false;
} }
@ -1248,7 +1242,7 @@
:global SymbolForNotification; :global SymbolForNotification;
:global ValidateSyntax; :global ValidateSyntax;
:if ([ $CertificateAvailable "ISRG Root X2" "fetch" ] = false) do={ :if ([ $CertificateAvailable "ISRG Root X2" ] = false) do={
$LogPrint warning $0 ("Downloading certificate failed, trying without."); $LogPrint warning $0 ("Downloading certificate failed, trying without.");
} }
@ -1299,7 +1293,7 @@
} }
:if ([ :len ($ScriptInfo->"certificate") ] > 0) do={ :if ([ :len ($ScriptInfo->"certificate") ] > 0) do={
:if ([ $CertificateAvailable ($ScriptInfo->"certificate") "fetch" ] = false) do={ :if ([ $CertificateAvailable ($ScriptInfo->"certificate") ] = false) do={
$LogPrint warning $0 ("Downloading certificate failed, trying without."); $LogPrint warning $0 ("Downloading certificate failed, trying without.");
} }
} }

View file

@ -109,7 +109,7 @@
:onerror Err { :onerror Err {
:if ($Server = "ntfy.sh") do={ :if ($Server = "ntfy.sh") do={
:if ([ $CertificateAvailable "ISRG Root X1" "fetch" ] = false) do={ :if ([ $CertificateAvailable "ISRG Root X1" ] = false) do={
$LogPrint warning $0 ("Downloading required certificate failed."); $LogPrint warning $0 ("Downloading required certificate failed.");
:error false; :error false;
} }

View file

@ -30,7 +30,7 @@
:return false; :return false;
} }
:if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={
$LogPrint warning $0 ("Downloading required certificate failed."); $LogPrint warning $0 ("Downloading required certificate failed.");
:return false; :return false;
} }
@ -72,7 +72,7 @@
:global CertificateAvailable; :global CertificateAvailable;
:global LogPrint; :global LogPrint;
:if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={
$LogPrint warning $0 ("Downloading required certificate failed."); $LogPrint warning $0 ("Downloading required certificate failed.");
:return false; :return false;
} }
@ -197,7 +197,7 @@
"&reply_to_message_id=" . ($Notification->"replyto") . "&message_thread_id=" . $ThreadId . \ "&reply_to_message_id=" . ($Notification->"replyto") . "&message_thread_id=" . $ThreadId . \
"&disable_web_page_preview=true&parse_mode=MarkdownV2"); "&disable_web_page_preview=true&parse_mode=MarkdownV2");
:onerror Err { :onerror Err {
:if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={
$LogPrint warning $0 ("Downloading required certificate failed."); $LogPrint warning $0 ("Downloading required certificate failed.");
:error false; :error false;
} }

View file

@ -112,7 +112,7 @@
:foreach DohServer in=$DohServers do={ :foreach DohServer in=$DohServers do={
:if ([ :len ($DohServer->"doh-cert") ] > 0) do={ :if ([ :len ($DohServer->"doh-cert") ] > 0) do={
:if ([ $CertificateAvailable ($DohServer->"doh-cert") "dns" ] = false) do={ :if ([ $CertificateAvailable ($DohServer->"doh-cert") ] = false) do={
$LogPrint warning $ScriptName ("Downloading certificate failed, trying without."); $LogPrint warning $ScriptName ("Downloading certificate failed, trying without.");
} }
} }

View file

@ -61,7 +61,7 @@
:set TelegramRandomDelay 0; :set TelegramRandomDelay 0;
} }
:if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={
$LogPrint warning $ScriptName ("Downloading required certificate failed."); $LogPrint warning $ScriptName ("Downloading required certificate failed.");
:set ExitOK true; :set ExitOK true;
:error false; :error false;

View file

@ -28,7 +28,7 @@
:error false; :error false;
} }
:if ([ $CertificateAvailable "Starfield Root Certificate Authority - G2" "fetch" ] = false) do={ :if ([ $CertificateAvailable "Starfield Root Certificate Authority - G2" ] = false) do={
$LogPrint error $ScriptName ("Downloading required certificate failed."); $LogPrint error $ScriptName ("Downloading required certificate failed.");
:set ExitOK true; :set ExitOK true;
:error false; :error false;