From c88953e44d9b922988e7d5638743e165a5196765 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 22:07:23 +0100 Subject: [PATCH 01/96] README: fix typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We had it there since 39d1027d697c09ec709a1b847a185ccff3b00540... 😜 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 243e1fc..b0d26bd 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ First time users should take the long way below. Want to see it in action? I've had a presentation [Repository based RouterOS script distribution â†—ī¸](https://www.youtube.com/watch?v=B9neG3oAhcY) -including demonstation recorded live at [MUM Europe +including demonstration recorded live at [MUM Europe 2019 â†—ī¸](https://mum.mikrotik.com/2019/EU/) in Vienna. > âš ī¸ **Warning**: Some details changed. So see the presentation, then follow From d100cac9ed37e4b79c587daf7c2bdba45c5c2ee7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 11:20:29 +0100 Subject: [PATCH 02/96] README: add a line break before command --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b0d26bd..529bb4c 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ download the certificates. > đŸ’Ąī¸ **Hint**: RouterOS 7.19 comes with a builtin certificate store. You > can skip the steps regarding certificate download and import and jump > 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;` If you intend to download the scripts from a @@ -173,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 > 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;` Updating scripts From 335266f2470593dfae33d6871abad7d2fe7297d2 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 19 Nov 2025 16:18:10 +0100 Subject: [PATCH 03/96] README: update the screenshot for script update... ... to match commit 2c92c78b4647e43c44da567e98adee69b7857393. --- README.d/09-update-scripts.avif | Bin 1733 -> 1928 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/README.d/09-update-scripts.avif b/README.d/09-update-scripts.avif index f549fef5bd7a33f883044d25f3fcac68134b130f..a31d60b3a0066d1ee68abbf79fd48aa6d77ffdd0 100644 GIT binary patch delta 1713 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 T^8jiU8*(U{VZwl~v4`?B()a82 From 1a1399d3026918d2b9f89f13878fe2a66855d06b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 11:20:47 +0100 Subject: [PATCH 04/96] README: support new builtin-trust-store... ... which was introduced with RouterOS 7.21beta7. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 529bb4c..b77538d 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,10 @@ download the certificates. > can skip the steps regarding certificate download and import and jump > to [installation of scripts](#installation-of-scripts) if you set the > 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 different location (for example from github.com) install the corresponding From fbfeea30426ac9be62bdaf7392fbfc51d4143ae3 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 11:38:31 +0100 Subject: [PATCH 05/96] INITIAL-COMMANDS: support new builtin-trust-store... ... which was introduced with RouterOS 7.21beta7. --- INITIAL-COMMANDS.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 40f609b..6e70b66 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -22,8 +22,11 @@ Run the complete base installation: :local CertFileName "ISRG-Root-X2.pem"; :local CertFingerprint "69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470"; - :if (!(([ /certificate/settings/get ]->"builtin-trust-anchors") = "trusted" && \ - [[ :parse (":return [ :len [ /certificate/builtin/find where common-name=\"" . $CertCommonName . "\" ] ]") ]] > 0)) do={ + :local CertSettings [ /certificate/settings/get ]; + :if (!((($CertSettings->"builtin-trust-anchors") = "trusted" || \ + ($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..."; /tool/fetch ($BaseUrl . "certs/" . $CertFileName) dst-path=$CertFileName as-value; :delay 1s; From db0a5bf33ce5ff585f568affbea3d399466159de Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 11:47:55 +0100 Subject: [PATCH 06/96] global-functions: $CertificateAvailable: support new builtin-trust-store... ... which was introduced with RouterOS 7.21beta7. --- global-functions.rsc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/global-functions.rsc b/global-functions.rsc index eb837aa..9f92b07 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -106,11 +106,15 @@ # check and download required certificate :set CertificateAvailable do={ :local CommonName [ :tostr $1 ]; + :local UseFor [ :tostr $2 ]; :global CertificateDownload; + :global EitherOr; :global LogPrint; :global ParseKeyValueStore; + :set UseFor [ $EitherOr $UseFor "undefined" ]; + :if ([ /system/resource/get free-hdd-space ] < 8388608 && \ [ /certificate/settings/get crl-download ] = true && \ [ /certificate/settings/get crl-store ] = "system") do={ @@ -123,7 +127,10 @@ :return false; } - :if (([ /certificate/settings/get ]->"builtin-trust-anchors") = "trusted" && \ + :local CertSettings [ /certificate/settings/get ]; + :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={ :return true; } From 8eb397f79fafa90b078abe880dd3b2958ae95dad Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 11:59:28 +0100 Subject: [PATCH 07/96] global-functions: $DownloadPackage: define certificate use --- global-functions.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global-functions.rsc b/global-functions.rsc index 9f92b07..412777c 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -404,7 +404,7 @@ :return true; } - :if ([ $CertificateAvailable "ISRG Root X1" ] = false) do={ + :if ([ $CertificateAvailable "ISRG Root X1" "fetch" ] = false) do={ $LogPrint error $0 ("Downloading required certificate failed."); :return false; } From f3e6e152bce0d2563f864a2d0652899c22c53918 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:01:11 +0100 Subject: [PATCH 08/96] global-functions: $GetMacVendor: define certificate use --- global-functions.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global-functions.rsc b/global-functions.rsc index 412777c..d4c37a2 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -640,7 +640,7 @@ } :do { - :if ([ $CertificateAvailable "GTS Root R4" ] = false) do={ + :if ([ $CertificateAvailable "GTS Root R4" "fetch" ] = false) do={ $LogPrint warning $0 ("Downloading required certificate failed."); :error false; } From b5a026966736f8c530e902d222dbf8dc4eea9cfd Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:01:57 +0100 Subject: [PATCH 09/96] global-functions: $ScriptInstallUpdate: define certificate use --- global-functions.rsc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/global-functions.rsc b/global-functions.rsc index d4c37a2..48aaf7f 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1248,7 +1248,7 @@ :global SymbolForNotification; :global ValidateSyntax; - :if ([ $CertificateAvailable "ISRG Root X2" ] = false) do={ + :if ([ $CertificateAvailable "ISRG Root X2" "fetch" ] = false) do={ $LogPrint warning $0 ("Downloading certificate failed, trying without."); } @@ -1299,7 +1299,7 @@ } :if ([ :len ($ScriptInfo->"certificate") ] > 0) do={ - :if ([ $CertificateAvailable ($ScriptInfo->"certificate") ] = false) do={ + :if ([ $CertificateAvailable ($ScriptInfo->"certificate") "fetch" ] = false) do={ $LogPrint warning $0 ("Downloading certificate failed, trying without."); } } From 876505c36dd2cafb9ce151a3051b1631fe09b3a1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:05:10 +0100 Subject: [PATCH 10/96] check-certificates: define certificate use --- check-certificates.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/check-certificates.rsc b/check-certificates.rsc index f2d5c1f..3300bee 100644 --- a/check-certificates.rsc +++ b/check-certificates.rsc @@ -189,7 +189,7 @@ fingerprint!=[ :tostr ($CertVal->"fingerprint") ] expires-after>$CertRenewTime ]; :local CertNewVal [ /certificate/get $CertNew ]; - :if ([ $CertificateAvailable ([ $ParseKeyValueStore ($CertNewVal->"issuer") ]->"CN") ] = false) do={ + :if ([ $CertificateAvailable ([ $ParseKeyValueStore ($CertNewVal->"issuer") ]->"CN") "fetch" ] = false) do={ $LogPrint warning $ScriptName ("The certificate chain is not available!"); } From 677b5b8069194fdd5c1c2ddbbcd4da2c5eb0c52b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Nov 2025 16:50:09 +0100 Subject: [PATCH 11/96] doc/mod/ssh-keys-import: create code block with indention --- doc/mod/ssh-keys-import.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/mod/ssh-keys-import.md b/doc/mod/ssh-keys-import.md index 49276d0..abf4d39 100644 --- a/doc/mod/ssh-keys-import.md +++ b/doc/mod/ssh-keys-import.md @@ -51,12 +51,10 @@ The functions `$SSHKeysImportFile` can read an `authorized_keys`-style file and import all the keys. The user given to the function can be overwritting from comments in the file. Create a file `keys.pub` with this content: -``` -ssh-ed25519 AAAAC3Nza...3OcN8A user@client -ssh-rsa AAAAB3Nza...ozyts= worker@station -# user=example -ssh-rsa AAAAB3Nza...GXQVk= person@host -``` + ssh-ed25519 AAAAC3Nza...3OcN8A user@client + ssh-rsa AAAAB3Nza...ozyts= worker@station + # user=example + ssh-rsa AAAAB3Nza...GXQVk= person@host Then import it with: From 87787eefe3425b29e5fffe0c636adffc04208de6 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:06:03 +0100 Subject: [PATCH 12/96] fw-addr-lists: define certificate use --- fw-addr-lists.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fw-addr-lists.rsc b/fw-addr-lists.rsc index c85cc8b..e5a71aa 100644 --- a/fw-addr-lists.rsc +++ b/fw-addr-lists.rsc @@ -74,7 +74,7 @@ :if ([ :len ($List->"cert") ] > 0) do={ :set CheckCertificate true; - :if ([ $CertificateAvailable ($List->"cert") ] = false) do={ + :if ([ $CertificateAvailable ($List->"cert") "fetch" ] = false) do={ $LogPrint warning $ScriptName ("Downloading required certificate (" . $FwListName . \ " / " . $List->"url" . ") failed, trying anyway."); } From affb9b3baf44fe84089a5b4059b93b336f29b21c Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Nov 2025 16:52:21 +0100 Subject: [PATCH 13/96] doc/mode-button: create code block with indention --- doc/mode-button.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/doc/mode-button.md b/doc/mode-button.md index be15bc9..af95ddb 100644 --- a/doc/mode-button.md +++ b/doc/mode-button.md @@ -26,17 +26,15 @@ can configure the reset button to act the same, see Copy this code to terminal to check: -``` -:if ([ :len [ /system/routerboard/mode-button/print as-value ] ] > 0) do={ - :put "Mode button is supported."; -} else={ - :if ([ :len [ /system/routerboard/reset-button/print as-value ] ] > 0) do={ - :put "Mode button is not supported, but reset button is."; - } else={ - :put "Neither mode button nor reset button is supported."; - } -} -``` + :if ([ :len [ /system/routerboard/mode-button/print as-value ] ] > 0) do={ + :put "Mode button is supported."; + } else={ + :if ([ :len [ /system/routerboard/reset-button/print as-value ] ] > 0) do={ + :put "Mode button is not supported, but reset button is."; + } else={ + :put "Neither mode button nor reset button is supported."; + } + } Requirements and installation ----------------------------- From 8ff34a2408b920dcdb59b2ea48d70148496553e2 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:10:22 +0100 Subject: [PATCH 14/96] mod/notification-ntfy: define certificate use --- mod/notification-ntfy.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/notification-ntfy.rsc b/mod/notification-ntfy.rsc index 7114020..dd10812 100644 --- a/mod/notification-ntfy.rsc +++ b/mod/notification-ntfy.rsc @@ -109,7 +109,7 @@ :onerror Err { :if ($Server = "ntfy.sh") do={ - :if ([ $CertificateAvailable "ISRG Root X1" ] = false) do={ + :if ([ $CertificateAvailable "ISRG Root X1" "fetch" ] = false) do={ $LogPrint warning $0 ("Downloading required certificate failed."); :error false; } From 090f25a82d862eaa5db86a18f9d570084e20e2b5 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:04:13 +0100 Subject: [PATCH 15/96] check-certificates: add missing semicolon --- check-certificates.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/check-certificates.rsc b/check-certificates.rsc index c10e33b..f2d5c1f 100644 --- a/check-certificates.rsc +++ b/check-certificates.rsc @@ -21,7 +21,7 @@ :global CertWarnTime; :global Identity; - :global CertificateAvailable + :global CertificateAvailable; :global EscapeForRegEx; :global IfThenElse; :global LogPrint; From f0910a44723feccbf5fb25340985cd654f310cd1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:09:43 +0100 Subject: [PATCH 16/96] mod/notification-telegram: define certificate use --- mod/notification-telegram.rsc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mod/notification-telegram.rsc b/mod/notification-telegram.rsc index ff9b4da..b1996a3 100644 --- a/mod/notification-telegram.rsc +++ b/mod/notification-telegram.rsc @@ -30,7 +30,7 @@ :return false; } - :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={ + :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ $LogPrint warning $0 ("Downloading required certificate failed."); :return false; } @@ -72,7 +72,7 @@ :global CertificateAvailable; :global LogPrint; - :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={ + :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ $LogPrint warning $0 ("Downloading required certificate failed."); :return false; } @@ -197,7 +197,7 @@ "&reply_to_message_id=" . ($Notification->"replyto") . "&message_thread_id=" . $ThreadId . \ "&disable_web_page_preview=true&parse_mode=MarkdownV2"); :onerror Err { - :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={ + :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ $LogPrint warning $0 ("Downloading required certificate failed."); :error false; } From 83b164d5115931209452940b2350dcd8077b139a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 11:58:23 +0100 Subject: [PATCH 17/96] global-functions: $CertificateDownload: drop unused function --- global-functions.rsc | 1 - 1 file changed, 1 deletion(-) diff --git a/global-functions.rsc b/global-functions.rsc index 5ede654..3089d2e 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -161,7 +161,6 @@ :global ScriptUpdatesBaseUrl; :global ScriptUpdatesUrlSuffix; - :global CertificateAvailable; :global CertificateNameByCN; :global CleanName; :global FetchUserAgentStr; From 7772fbb22d6eb9118075c87230a43cf9b4926da5 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:07:22 +0100 Subject: [PATCH 18/96] netwatch-dns: define certificate use --- netwatch-dns.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netwatch-dns.rsc b/netwatch-dns.rsc index 9e2f9bc..eee5f85 100644 --- a/netwatch-dns.rsc +++ b/netwatch-dns.rsc @@ -112,7 +112,7 @@ :foreach DohServer in=$DohServers do={ :if ([ :len ($DohServer->"doh-cert") ] > 0) do={ - :if ([ $CertificateAvailable ($DohServer->"doh-cert") ] = false) do={ + :if ([ $CertificateAvailable ($DohServer->"doh-cert") "dns" ] = false) do={ $LogPrint warning $ScriptName ("Downloading certificate failed, trying without."); } } From 7d701483d333cec77c4b7cc6ce2bb4a8fc2eb81c Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 30 Oct 2025 11:07:38 +0100 Subject: [PATCH 19/96] contrib/checksums: output to stdout... ... and let the Makefile redirect. --- Makefile | 2 +- contrib/checksums.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0265a51..d8f2387 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ all: $(CAPSMAN) $(LOCAL) $(WIFI) $(HTML) checksums.json < $< > $@ checksums.json: contrib/checksums.sh *.rsc */*.rsc - contrib/checksums.sh + contrib/checksums.sh > $@ clean: rm -f $(HTML) checksums.json diff --git a/contrib/checksums.sh b/contrib/checksums.sh index b472b49..ab4e973 100755 --- a/contrib/checksums.sh +++ b/contrib/checksums.sh @@ -6,4 +6,4 @@ set -e md5sum $(find -name '*.rsc' | sort) | \ sed -e "s| \./||" -e 's|.rsc$||' | \ - jq --raw-input --null-input '[ inputs | split (" ") | { (.[1]): (.[0]) }] | add' > 'checksums.json' + jq --raw-input --null-input '[ inputs | split (" ") | { (.[1]): (.[0]) }] | add' From 5ccb0d07b120f1fd7af738d5eed3b20345e2c971 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:10:58 +0100 Subject: [PATCH 20/96] telegram-chat: define certificate use --- telegram-chat.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telegram-chat.rsc b/telegram-chat.rsc index 7f7b7a7..54872fb 100644 --- a/telegram-chat.rsc +++ b/telegram-chat.rsc @@ -61,7 +61,7 @@ :set TelegramRandomDelay 0; } - :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={ + :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" "fetch" ] = false) do={ $LogPrint warning $ScriptName ("Downloading required certificate failed."); :set ExitOK true; :error false; From 20885c4620ec95e46d914fdbb4b63378e72c25d9 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sun, 2 Nov 2025 09:19:16 +0100 Subject: [PATCH 21/96] global-functions: $ScriptInstallUpdate: give hint on ignore Fixes: https://github.com/eworm-de/routeros-scripts/issues/112 --- global-functions.rsc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/global-functions.rsc b/global-functions.rsc index 3089d2e..b5fc0eb 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1313,6 +1313,11 @@ $LogPrint warning $0 ("Removing dummy. Typo on installation?"); /system/script/remove $Script; } + :if ([ :len ($ScriptInfo->"base-url") ] = 0 && [ :len ($ScriptInfo->"url-suffix") ] = 0 && \ + [ :len $CheckSum ] = 0) do={ + $LogPrintOnce warning $0 \ + ("Added the script manually? Skip updates with 'ignore=true' in comment."); + } :error false; } From 335bfc0a88e0a79e3ae03ee72a81edda9f5d0c32 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:03:33 +0100 Subject: [PATCH 22/96] update-tunnelbroker: define certificate use --- update-tunnelbroker.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update-tunnelbroker.rsc b/update-tunnelbroker.rsc index 9057e1e..5372f4c 100644 --- a/update-tunnelbroker.rsc +++ b/update-tunnelbroker.rsc @@ -28,7 +28,7 @@ :error false; } - :if ([ $CertificateAvailable "Starfield Root Certificate Authority - G2" ] = false) do={ + :if ([ $CertificateAvailable "Starfield Root Certificate Authority - G2" "fetch" ] = false) do={ $LogPrint error $ScriptName ("Downloading required certificate failed."); :set ExitOK true; :error false; From 298a43a871b28bcdc057310dbc5b7819944e4bb2 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 00:00:03 +0100 Subject: [PATCH 23/96] global-functions: $ScriptInstallUpdate: either or... ... but not both. --- global-functions.rsc | 1 + 1 file changed, 1 insertion(+) diff --git a/global-functions.rsc b/global-functions.rsc index b5fc0eb..2379f9b 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1312,6 +1312,7 @@ :if ($ScriptVal->"source" = "#!rsc by RouterOS\n") do={ $LogPrint warning $0 ("Removing dummy. Typo on installation?"); /system/script/remove $Script; + :error false; } :if ([ :len ($ScriptInfo->"base-url") ] = 0 && [ :len ($ScriptInfo->"url-suffix") ] = 0 && \ [ :len $CheckSum ] = 0) do={ From 737a872a5f768eea07b1b74439580e3ce98752cd Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:11:38 +0100 Subject: [PATCH 24/96] CERTIFICATES: define certificate use --- CERTIFICATES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CERTIFICATES.md b/CERTIFICATES.md index 69d6c18..0e0a867 100644 --- a/CERTIFICATES.md +++ b/CERTIFICATES.md @@ -61,7 +61,7 @@ Import a certificate by CommonName Running the function `$CertificateAvailable` with that name as parameter makes sure the certificate is available in the device's store: - $CertificateAvailable "ISRG Root X2"; + $CertificateAvailable "ISRG Root X2" "fetch"; If the certificate is actually available already nothing happens, and there is no output. Otherwise the certificate is downloaded and imported. From d002d1c0c04e90cd73e1b821e944c56321bfa1d8 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 3 Nov 2025 09:17:25 +0100 Subject: [PATCH 25/96] global-functions: $ScriptInstallUpdate: extra actions on 'not found' only --- global-functions.rsc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/global-functions.rsc b/global-functions.rsc index 2379f9b..eb837aa 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1309,6 +1309,10 @@ } } do={ $LogPrint warning $0 ("Failed fetching script '" . $ScriptVal->"name" . "': " . $Err); + :if ($Err != "Fetch failed with status 404") do={ + :error false; + } + :if ($ScriptVal->"source" = "#!rsc by RouterOS\n") do={ $LogPrint warning $0 ("Removing dummy. Typo on installation?"); /system/script/remove $Script; From cc5aea22b357cebb54741be1d71a99f0b28d8c3f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 12:08:49 +0100 Subject: [PATCH 26/96] doc/mod/notification-matrix: define certificate use --- doc/mod/notification-matrix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mod/notification-matrix.md b/doc/mod/notification-matrix.md index da6d6de..ad4cf4f 100644 --- a/doc/mod/notification-matrix.md +++ b/doc/mod/notification-matrix.md @@ -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 Trust Services*. Run this to import the required certificate: - $CertificateAvailable "GTS Root R4"; + $CertificateAvailable "GTS Root R4" "fetch"; Replace the CA certificate name with what ever is needed for your server. You may want to find the From 8f6a38f2994a36742c6d200d74d4548bd9c2e356 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 17 Nov 2025 09:56:49 +0100 Subject: [PATCH 27/96] mod/notification-email: remove schedule with find... ... as a race condition could occur and the scheduler is already gone. --- mod/notification-email.rsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/notification-email.rsc b/mod/notification-email.rsc index 7c3a6ff..668daba 100644 --- a/mod/notification-email.rsc +++ b/mod/notification-email.rsc @@ -132,7 +132,7 @@ } :if ($AllDone = true && $QueueLen = [ :len $EmailQueue ]) do={ - /system/scheduler/remove $Scheduler; + /system/scheduler/remove [ find where name="_FlushEmailQueue" ]; :set EmailQueue; :return true; } From c6cc8b9a51c0f399c36823b33a6d282344f16416 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 22:19:44 +0100 Subject: [PATCH 28/96] README: move the QR code --- README.md | 2 +- README.d/upstream.png => general/qr-code.png | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename README.d/upstream.png => general/qr-code.png (100%) diff --git a/README.md b/README.md index b77538d..36408ec 100644 --- a/README.md +++ b/README.md @@ -404,7 +404,7 @@ immediately remove the link in question. Upstream -------- -[![upstream](README.d/upstream.png)](https://rsc.eworm.de/) +[![upstream](general/qr-code.png)](https://rsc.eworm.de/) URL: [GitHub.com](https://github.com/eworm-de/routeros-scripts#routeros-scripts) diff --git a/README.d/upstream.png b/general/qr-code.png similarity index 100% rename from README.d/upstream.png rename to general/qr-code.png From a2250a00e61edda3dadf7b253dc606713e036f56 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:19:15 +0100 Subject: [PATCH 29/96] README: add the upstream url verbatim --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 36408ec..3c69017 100644 --- a/README.md +++ b/README.md @@ -404,6 +404,8 @@ immediately remove the link in question. Upstream -------- +[rsc.eworm.de](https://rsc.eworm.de/) + [![upstream](general/qr-code.png)](https://rsc.eworm.de/) URL: From 97b4a41f238cbf6cb5417efa53a4ba7084356da1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 13:37:51 +0100 Subject: [PATCH 30/96] contrib/html: add empty lines... ... for easier rebasing. --- contrib/html.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/html.sh b/contrib/html.sh index bbd8ba8..6942ecf 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -3,7 +3,9 @@ set -e sed "s|__TITLE__|$(head -n1 "${1}")|" < "${0}.d/head.html" + markdown -f toc,idanchor "${1}" | sed \ -e 's/href="\([-_\./[:alnum:]]*\)\.md"/href="\1.html"/g' \ -e '/| id="\L\1">|' + printf '' From d610bf3582664a1a8fb5943b53f388a046ce8e33 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 29 Oct 2025 14:31:17 +0100 Subject: [PATCH 31/96] contrib/{logo-color,notification}: use a single style --- contrib/logo-color.d/style.css | 5 ----- contrib/logo-color.html | 2 +- contrib/notification.html | 4 ++-- {contrib/notification.d => general}/style.css | 3 ++- 4 files changed, 5 insertions(+), 9 deletions(-) delete mode 100644 contrib/logo-color.d/style.css rename {contrib/notification.d => general}/style.css (93%) diff --git a/contrib/logo-color.d/style.css b/contrib/logo-color.d/style.css deleted file mode 100644 index eb2ec6a..0000000 --- a/contrib/logo-color.d/style.css +++ /dev/null @@ -1,5 +0,0 @@ -body { - font-family: fira-sans, sans-serif; - font-size: 10pt; - background-color: transparent; -} diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 17942ce..507445b 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -3,7 +3,7 @@ RouterOS-Scripts Logo Color Changer - + diff --git a/contrib/notification.html b/contrib/notification.html index 7875036..b7d6764 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -3,8 +3,8 @@ RouterOS-Scripts Notification Generator - - + + diff --git a/contrib/notification.d/style.css b/general/style.css similarity index 93% rename from contrib/notification.d/style.css rename to general/style.css index 648ea23..66d44f1 100644 --- a/contrib/notification.d/style.css +++ b/general/style.css @@ -1,7 +1,8 @@ +/* stylesheet for RouterOS Scripts */ body { + background-color: transparent; font-family: fira-sans, sans-serif; font-size: 10pt; - background-color: transparent; } div.notification { position: relative; From a2d6671cf0db887dd25a122ccbf88d0709c6fb02 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 29 Oct 2025 14:46:01 +0100 Subject: [PATCH 32/96] contrib/html: include stylesheet via link --- Makefile | 2 +- contrib/html.sh | 7 ++++++- contrib/html.sh.d/head.html | 11 +---------- general/style.css | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index d8f2387..b799535 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ HTML = $(MARKDOWN:.md=.html) all: $(CAPSMAN) $(LOCAL) $(WIFI) $(HTML) checksums.json -%.html: %.md contrib/html.sh contrib/html.sh.d/head.html +%.html: %.md general/style.css contrib/html.sh contrib/html.sh.d/head.html contrib/html.sh $< > $@ %.capsman.rsc: %.template.rsc Makefile diff --git a/contrib/html.sh b/contrib/html.sh index 6942ecf..6a32b5d 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -2,7 +2,12 @@ set -e -sed "s|__TITLE__|$(head -n1 "${1}")|" < "${0}.d/head.html" +RELTO="$(dirname "${1}")" + +sed \ + -e "s|__TITLE__|$(head -n1 "${1}")|" \ + -e "s|__STYLE__|$(realpath --relative-to="${RELTO}" general/style.css)|" \ + < "${0}.d/head.html" markdown -f toc,idanchor "${1}" | sed \ -e 's/href="\([-_\./[:alnum:]]*\)\.md"/href="\1.html"/g' \ diff --git a/contrib/html.sh.d/head.html b/contrib/html.sh.d/head.html index 1b1dd03..50653ae 100644 --- a/contrib/html.sh.d/head.html +++ b/contrib/html.sh.d/head.html @@ -1,15 +1,6 @@ RouterOS Scripts :: __TITLE__ - + diff --git a/general/style.css b/general/style.css index 66d44f1..be67afa 100644 --- a/general/style.css +++ b/general/style.css @@ -4,6 +4,28 @@ body { font-family: fira-sans, sans-serif; font-size: 10pt; } +h2 { + border-bottom: 1px solid #ccc; + color: #000; +} +a { + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +blockquote { + border-left: 4px solid #ccc; + padding: 0 10px; + color: #777; +} +code { + margin: 0 2px; + padding: 2px 5px; + border: 1px solid #ccc; + background-color: #f8f8f8; + border-radius: 3px; +} div.notification { position: relative; float: right; @@ -31,6 +53,16 @@ p.hint { pre { font-family: fira-mono, monospace; white-space: pre-wrap; + background-color: #f8f8f8; + border: 1px solid #ccc; + overflow: auto; + padding: 6px 10px; + border-radius: 3px; +} +pre code { + margin: 0; + padding: 0; + border: 0; } span.link { color: #863600; From fae8dbd8ea2c9e5a38634c2db97dcfcb7e3f9693 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 12:51:34 +0100 Subject: [PATCH 33/96] contrib/html: add a margin on left and right... ... for windows in landscape (wider than high). Also make the notification float right for landscape only. --- general/style.css | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/general/style.css b/general/style.css index be67afa..a9ede5e 100644 --- a/general/style.css +++ b/general/style.css @@ -28,7 +28,7 @@ code { } div.notification { position: relative; - float: right; + float: none; width: 600px; border: 3px outset #6c5d53; /* border-radius: 5px; */ @@ -67,3 +67,12 @@ pre code { span.link { color: #863600; } +@media only screen and (orientation: landscape) { + body { + margin-left: 10vw; + margin-right: 10vw; + } + div.notification { + float: right; + } +} From 2d6fdc355e7b5f97fb421c00e5ccc78dd51fbe7a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 10 Nov 2025 11:30:49 +0100 Subject: [PATCH 34/96] contrib/html: increase default line height --- general/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/general/style.css b/general/style.css index a9ede5e..ad25c7c 100644 --- a/general/style.css +++ b/general/style.css @@ -3,6 +3,7 @@ body { background-color: transparent; font-family: fira-sans, sans-serif; font-size: 10pt; + line-height: 1.6; } h2 { border-bottom: 1px solid #ccc; From a0399216fcf21797284bd281546ac6b47ef7b037 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 29 Oct 2025 14:55:00 +0100 Subject: [PATCH 35/96] contrib/html: link the logo with relative path --- contrib/html.sh | 1 + contrib/html.sh.d/head.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/html.sh b/contrib/html.sh index 6a32b5d..d4a1a90 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -7,6 +7,7 @@ RELTO="$(dirname "${1}")" sed \ -e "s|__TITLE__|$(head -n1 "${1}")|" \ -e "s|__STYLE__|$(realpath --relative-to="${RELTO}" general/style.css)|" \ + -e "s|__LOGO__|$(realpath --relative-to="${RELTO}" logo.png)|" \ < "${0}.d/head.html" markdown -f toc,idanchor "${1}" | sed \ diff --git a/contrib/html.sh.d/head.html b/contrib/html.sh.d/head.html index 50653ae..779e246 100644 --- a/contrib/html.sh.d/head.html +++ b/contrib/html.sh.d/head.html @@ -2,5 +2,5 @@ RouterOS Scripts :: __TITLE__ - + From 2e0787afd12178c363aff9346a7f331fe7d1b4e4 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 22:34:00 +0100 Subject: [PATCH 36/96] contrib/html: properly handle anchors --- contrib/html.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/html.sh b/contrib/html.sh index d4a1a90..603e606 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -11,7 +11,7 @@ sed \ < "${0}.d/head.html" markdown -f toc,idanchor "${1}" | sed \ - -e 's/href="\([-_\./[:alnum:]]*\)\.md"/href="\1.html"/g' \ + -e 's/href="\([-_\./[:alnum:]]*\)\.md\(#[-[:alnum:]]*\)\?"/href="\1.html\2"/g' \ -e '/| id="\L\1">|' printf '' From cbb282746fc3af91c8c872753a217c912ba307e6 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:16:04 +0100 Subject: [PATCH 37/96] README: add a sub-section for code hosting --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3c69017..59c695e 100644 --- a/README.md +++ b/README.md @@ -408,12 +408,11 @@ Upstream [![upstream](general/qr-code.png)](https://rsc.eworm.de/) -URL: -[GitHub.com](https://github.com/eworm-de/routeros-scripts#routeros-scripts) +### Code hosting -Mirror: -[eworm.de](https://git.eworm.de/cgit/routeros-scripts/about/) -[GitLab.com](https://gitlab.com/eworm-de/routeros-scripts#routeros-scripts) +* [git.eworm.de](https://git.eworm.de/cgit/routeros-scripts/about/) +* [GitHub.com](https://github.com/eworm-de/routeros-scripts#routeros-scripts) +* [GitLab.com](https://gitlab.com/eworm-de/routeros-scripts#routeros-scripts) --- [âŦ†ī¸ Go back to top](#top) From 719b662b76a3ad85455c1113d6f9c57f40f3300e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 22:57:17 +0100 Subject: [PATCH 38/96] contrib/html: drop ampersand, comma, dash, exclamation mark, ... ... parentesis & tick mark from id/anchor --- contrib/html.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/html.sh b/contrib/html.sh index 603e606..b1d2511 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -12,6 +12,7 @@ sed \ markdown -f toc,idanchor "${1}" | sed \ -e 's/href="\([-_\./[:alnum:]]*\)\.md\(#[-[:alnum:]]*\)\?"/href="\1.html\2"/g' \ - -e '/| id="\L\1">|' + -e '/| id="\L\1">|' \ + -e '/' From ceb6f2353ea92ddf50ccb6ffa11707e71dc7b61c Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 29 Oct 2025 15:19:32 +0100 Subject: [PATCH 39/96] contrib/*: unify html code --- contrib/html.sh.d/head.html | 4 ++-- contrib/logo-color.html | 17 +++++++---------- contrib/notification.html | 17 +++++++---------- doc/mod/notification-telegram.md | 2 +- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/contrib/html.sh.d/head.html b/contrib/html.sh.d/head.html index 779e246..0ce3ff7 100644 --- a/contrib/html.sh.d/head.html +++ b/contrib/html.sh.d/head.html @@ -1,6 +1,6 @@ -RouterOS Scripts :: __TITLE__ - + +RouterOS Scripts :: __TITLE__ diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 507445b..eb00492 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -1,14 +1,12 @@ - - - - -RouterOS-Scripts Logo Color Changer + + +RouterOS Scripts :: Logo Color Changer + - - + -

RouterOS-Scripts Logo Color Changer

+

Logo Color Changer

You want the logo for your own notifications? But you joined the Telegram Group and want @@ -36,5 +34,4 @@ for other browsers may differ.)

Set a profile photo for your Telegram bot.

- - + diff --git a/contrib/notification.html b/contrib/notification.html index b7d6764..472ce48 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -1,14 +1,12 @@ - - - - -RouterOS-Scripts Notification Generator + + +RouterOS Scripts :: Notification Generator + - - + -

RouterOS-Scripts Notification Generator

+

Notification Generator

@@ -31,5 +29,4 @@

Then right-click, click "Take Screenshot" and finally select the notification and download it.

- - + diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md index 804104f..7d5092d 100644 --- a/doc/mod/notification-telegram.md +++ b/doc/mod/notification-telegram.md @@ -107,7 +107,7 @@ chat with [BotFather â†—ī¸](https://t.me/BotFather) and set it there. ![set profile photo](notification-telegram.d/setuserpic.avif) Have a look at my -[RouterOS-Scripts Logo Color Changer](https://git.eworm.de/cgit/routeros-scripts/plain/contrib/logo-color.html) +[Logo Color Changer](https://git.eworm.de/cgit/routeros-scripts/plain/contrib/logo-color.html) to create a colored version of this scripts' logo. See also From 8faf4ab7cf9ad6313b1fe7903b9325c17827cfdc Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 29 Oct 2025 15:35:14 +0100 Subject: [PATCH 40/96] contrib/{logo-color,notification}: add navigation structure --- contrib/logo-color.html | 6 ++++++ contrib/notification.html | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index eb00492..8ee1ba9 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -8,6 +8,8 @@

Logo Color Changer

+

âŦ…ī¸ Go back to main README

+

You want the logo for your own notifications? But you joined the Telegram Group and want something that differentiates? Color it!

@@ -34,4 +36,8 @@ for other browsers may differ.)

Set a profile photo for your Telegram bot.

+
+ +

âŦ…ī¸ Go back to main README
+âŦ†ī¸ Go back to top

diff --git a/contrib/notification.html b/contrib/notification.html index 472ce48..3bc86fc 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -8,6 +8,8 @@

Notification Generator

+

âŦ…ī¸ Go back to main README

+
@@ -29,4 +31,8 @@

Then right-click, click "Take Screenshot" and finally select the notification and download it.

+
+ +

âŦ…ī¸ Go back to main README
+âŦ†ī¸ Go back to top

From eb89f8359b4e8c387144330a435841430e85feab Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 29 Oct 2025 16:06:42 +0100 Subject: [PATCH 41/96] contrib/notification: update date format --- contrib/notification.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/notification.html b/contrib/notification.html index 3bc86fc..c86450c 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -16,7 +16,7 @@

[MikroTik] â„šī¸ Subject

Message
-

⏰ This message was queued since oct/18/2022 18:30:48 and may be obsolete.

+

⏰ This message was queued since 2025-10-29 16:06:18 and may be obsolete.

âœ‚ī¸ The message was too long and has been truncated, cut off 13%!

@@ -25,7 +25,7 @@

Subject:

Message:

Show link:

-

Queued since

+

Queued since

Cut-off with percent

Then right-click, click "Take Screenshot" and finally select the From 8d68f24095c8aeb0b14720d048a8493c996cf4e6 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 29 Oct 2025 16:11:23 +0100 Subject: [PATCH 42/96] contrib/notification: format the values italic --- contrib/notification.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/notification.html b/contrib/notification.html index c86450c..a4d0486 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -16,8 +16,8 @@

[MikroTik] â„šī¸ Subject

Message
-

⏰ This message was queued since 2025-10-29 16:06:18 and may be obsolete.

-

âœ‚ī¸ The message was too long and has been truncated, cut off 13%!

+

⏰ This message was queued since 2025-10-29 16:06:18 and may be obsolete.

+

âœ‚ī¸ The message was too long and has been truncated, cut off 13%!

From 5986894749a5de9c589f2269ab9ecac174f304f7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 16:25:01 +0100 Subject: [PATCH 43/96] doc/mod/notification-telegram: use relative reference in link This may break, depending on site. --- doc/mod/notification-telegram.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md index 7d5092d..bdf1331 100644 --- a/doc/mod/notification-telegram.md +++ b/doc/mod/notification-telegram.md @@ -106,8 +106,7 @@ chat with [BotFather â†—ī¸](https://t.me/BotFather) and set it there. ![set profile photo](notification-telegram.d/setuserpic.avif) -Have a look at my -[Logo Color Changer](https://git.eworm.de/cgit/routeros-scripts/plain/contrib/logo-color.html) +Have a look at my [Logo Color Changer](../../contrib/logo-color.html) to create a colored version of this scripts' logo. See also From 036c6ef68266d599747dfe59eab5f96c5fa4a388 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 16:27:59 +0100 Subject: [PATCH 44/96] contrib/logo-color: use relative reference in link ... without extra path elements. This may break, depending on site. --- contrib/logo-color.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 8ee1ba9..9962e99 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -33,7 +33,7 @@ logo and download it.

for other browsers may differ.)

See how to -Set +Set a profile photo for your Telegram bot.


From 148d40e18d5bd7f2309b06428c2ca85a0f5cb793 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 16:26:05 +0100 Subject: [PATCH 45/96] contrib: introduce Makefile... ... and update references in links. --- contrib/Makefile | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 contrib/Makefile diff --git a/contrib/Makefile b/contrib/Makefile new file mode 100644 index 0000000..aae3178 --- /dev/null +++ b/contrib/Makefile @@ -0,0 +1,10 @@ +# Makefile + +HTML := $(wildcard *.html) + +.PHONY: all docs + +all: docs + +docs: $(HTML) + sed -i '/href=/s|\.md|\.html|' $(HTML) From 607a608502c4f38a51c4679d6162c15a52332bab Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:40:27 +0100 Subject: [PATCH 46/96] doc/mod/notification-telegram: hint on possibly broken link --- doc/mod/notification-telegram.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md index bdf1331..f464ff0 100644 --- a/doc/mod/notification-telegram.md +++ b/doc/mod/notification-telegram.md @@ -109,6 +109,10 @@ chat with [BotFather â†—ī¸](https://t.me/BotFather) and set it there. Have a look at my [Logo Color Changer](../../contrib/logo-color.html) to create a colored version of this scripts' logo. +> đŸ’Ąī¸ **Hint**: The above link may be broken on code hosting sites. +> Use [Logo Color Changer](https://rsc.eworm.de/main/contrib/logo-color.html) +> instead. + See also -------- From 1ce3160933ee70a3cc6264139247f6b668ae0b3b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:59:08 +0100 Subject: [PATCH 47/96] contrib/html: hide the hint on broken link --- contrib/html.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/html.sh b/contrib/html.sh index b1d2511..09064ba 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -13,6 +13,7 @@ sed \ markdown -f toc,idanchor "${1}" | sed \ -e 's/href="\([-_\./[:alnum:]]*\)\.md\(#[-[:alnum:]]*\)\?"/href="\1.html\2"/g' \ -e '/| id="\L\1">|' \ - -e '/' From cbb0aba1b1ea8b40cec99643de2cfb6f6a933bc9 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:51:05 +0100 Subject: [PATCH 48/96] contrib/logo-color: hint on possibly broken site --- contrib/logo-color.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 9962e99..f05f4bb 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -10,6 +10,11 @@

âŦ…ī¸ Go back to main README

+

đŸ’Ąī¸ Hint: This site or links +on it may be broken on code hosting sites. Use +Logo Color Changer +instead.

+

You want the logo for your own notifications? But you joined the Telegram Group and want something that differentiates? Color it!

From b16c2f5b90170a81c30f5b98666264b020e3ac7f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:52:58 +0100 Subject: [PATCH 49/96] contrib/notification: hint on possibly broken site --- contrib/notification.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/notification.html b/contrib/notification.html index a4d0486..3ff8754 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -10,6 +10,11 @@

âŦ…ī¸ Go back to main README

+

đŸ’Ąī¸ Hint: This site or links +on it may be broken on code hosting sites. Use +Notification Generator +instead.

+
From 165d7c60d4d156484cc106b4271ade78ab97a026 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 22:08:11 +0100 Subject: [PATCH 50/96] contrib/html: add a head with eworm, QR code and caption --- contrib/html.sh | 2 ++ contrib/html.sh.d/head.html | 9 +++++++++ general/eworm-meadow.avif | Bin 0 -> 3922 bytes general/style.css | 12 ++++++++++++ 4 files changed, 23 insertions(+) create mode 100644 general/eworm-meadow.avif diff --git a/contrib/html.sh b/contrib/html.sh index 09064ba..0b89724 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -8,6 +8,8 @@ sed \ -e "s|__TITLE__|$(head -n1 "${1}")|" \ -e "s|__STYLE__|$(realpath --relative-to="${RELTO}" general/style.css)|" \ -e "s|__LOGO__|$(realpath --relative-to="${RELTO}" logo.png)|" \ + -e "s|__EWORM__|$(realpath --relative-to="${RELTO}" general/eworm-meadow.avif)|" \ + -e "s|__QR_CODE__|$(realpath --relative-to="${RELTO}" general/qr-code.png)|" \ < "${0}.d/head.html" markdown -f toc,idanchor "${1}" | sed \ diff --git a/contrib/html.sh.d/head.html b/contrib/html.sh.d/head.html index 0ce3ff7..da54157 100644 --- a/contrib/html.sh.d/head.html +++ b/contrib/html.sh.d/head.html @@ -4,3 +4,12 @@ + + + + + +
eworm on meadowQR code: rsc.eworm.deRouterOS Scripts
+ a collection of scripts for MikroTik RouterOS
+
+ diff --git a/general/eworm-meadow.avif b/general/eworm-meadow.avif new file mode 100644 index 0000000000000000000000000000000000000000..f592d59b86c9d178954a09bfb30dd7b6268a3a0b GIT binary patch literal 3922 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 Ol=-JRBU@RH*#86W_XlVI literal 0 HcmV?d00001 diff --git a/general/style.css b/general/style.css index ad25c7c..018ccc4 100644 --- a/general/style.css +++ b/general/style.css @@ -68,6 +68,18 @@ pre code { span.link { color: #863600; } +td.head { + line-height: 1.2; + padding: 0 2em; +} +td.head .top { + font-size: 250%; + font-weight: bold; +} +td.head .bottom { + font-size: 125%; + color: #555; +} @media only screen and (orientation: landscape) { body { margin-left: 10vw; From 7b45bb5b46a9cc63d3f32f45610ba010c485b304 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:56:16 +0100 Subject: [PATCH 51/96] contrib/Makefile: hide the hint on broken site --- contrib/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib/Makefile b/contrib/Makefile index aae3178..cdb9f4c 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -7,4 +7,7 @@ HTML := $(wildcard *.html) all: docs docs: $(HTML) - sed -i '/href=/s|\.md|\.html|' $(HTML) + sed -i \ + -e '/href=/s|\.md|\.html|' \ + -e '/blockquote/s|/\*! display \*/|display: none;|' \ + $(HTML) From 75692abf4794b6950cb42288dbf2e104a2e797fe Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:26:37 +0100 Subject: [PATCH 52/96] contrib/logo-color: add a head with eworm, QR code and caption --- contrib/logo-color.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index f05f4bb..3aca324 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -6,6 +6,14 @@ + + + + +
eworm on meadowQR code: rsc.eworm.deRouterOS Scripts
+ a collection of scripts for MikroTik RouterOS
+
+

Logo Color Changer

âŦ…ī¸ Go back to main README

From b4e6cc5b590ede01c67726cce5bef12e6aca9420 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:27:09 +0100 Subject: [PATCH 53/96] contrib/notification: add a head with eworm, QR code and caption --- contrib/notification.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/contrib/notification.html b/contrib/notification.html index 3ff8754..902d328 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -6,6 +6,14 @@ + + + + +
eworm on meadowQR code: rsc.eworm.deRouterOS Scripts
+ a collection of scripts for MikroTik RouterOS
+
+

Notification Generator

âŦ…ī¸ Go back to main README

From d1fa3facfdbf09ff09fc572b79dd8099e069415a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 6 Nov 2025 17:32:37 +0100 Subject: [PATCH 54/96] Makefile: clean up and add phony targets --- Makefile | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index b799535..f841ca2 100644 --- a/Makefile +++ b/Makefile @@ -2,18 +2,28 @@ # template scripts -> final scripts # markdown files -> html files -CAPSMAN = $(wildcard *.capsman.rsc) -LOCAL = $(wildcard *.local.rsc) -WIFI = $(wildcard *.wifi.rsc) +ALL_RSC := $(wildcard *.rsc */*.rsc) +GEN_RSC := $(wildcard *.capsman.rsc *.local.rsc *.wifi.rsc) -MARKDOWN = $(wildcard *.md doc/*.md doc/mod/*.md) -HTML = $(MARKDOWN:.md=.html) +MARKDOWN := $(wildcard *.md doc/*.md doc/mod/*.md) +HTML := $(MARKDOWN:.md=.html) -all: $(CAPSMAN) $(LOCAL) $(WIFI) $(HTML) checksums.json +.PHONY: all checksums docs rsc clean + +all: checksums docs rsc + +checksums: checksums.json + +checksums.json: contrib/checksums.sh $(ALL_RSC) + contrib/checksums.sh > $@ + +docs: $(HTML) %.html: %.md general/style.css contrib/html.sh contrib/html.sh.d/head.html contrib/html.sh $< > $@ +rsc: $(GEN_RSC) + %.capsman.rsc: %.template.rsc Makefile sed -e '/\/interface\/wifi\//d' -e '/\/interface\/wireless\//d' -e 's|%TEMPL%|.capsman|' \ -e '/^# NOT \/caps-man\/ #$$/,/^# NOT \/caps-man\/ #$$/d' \ @@ -32,8 +42,5 @@ all: $(CAPSMAN) $(LOCAL) $(WIFI) $(HTML) checksums.json -e '/^# !!/,/^# !!/c # !! Do not edit this file, it is generated from template!' \ < $< > $@ -checksums.json: contrib/checksums.sh *.rsc */*.rsc - contrib/checksums.sh > $@ - clean: rm -f $(HTML) checksums.json From edd51ca71905851f4a202ac3129391a8c0615047 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 17:22:30 +0100 Subject: [PATCH 55/96] contrib/html: add a footer with date and version info --- Makefile | 6 +++++- contrib/html.sh | 5 ++++- contrib/html.sh.d/foot.html | 4 ++++ general/style.css | 4 ++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 contrib/html.sh.d/foot.html diff --git a/Makefile b/Makefile index f841ca2..ecb25bc 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,10 @@ GEN_RSC := $(wildcard *.capsman.rsc *.local.rsc *.wifi.rsc) MARKDOWN := $(wildcard *.md doc/*.md doc/mod/*.md) HTML := $(MARKDOWN:.md=.html) +DATE ?= $(shell date --rfc-email) +VERSION ?= $(shell git symbolic-ref --short HEAD 2>/dev/null)/$(shell git rev-list --count HEAD 2>/dev/null)/$(shell git rev-parse --short=8 HEAD 2>/dev/null) +export DATE VERSION + .PHONY: all checksums docs rsc clean all: checksums docs rsc @@ -19,7 +23,7 @@ checksums.json: contrib/checksums.sh $(ALL_RSC) docs: $(HTML) -%.html: %.md general/style.css contrib/html.sh contrib/html.sh.d/head.html +%.html: %.md general/style.css contrib/html.sh contrib/html.sh.d/head.html contrib/html.sh.d/foot.html contrib/html.sh $< > $@ rsc: $(GEN_RSC) diff --git a/contrib/html.sh b/contrib/html.sh index 0b89724..2fe9ef7 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -18,4 +18,7 @@ markdown -f toc,idanchor "${1}" | sed \ -e '/' +sed \ + -e "s|__DATE__|${DATE:-$(date --rfc-email)}|" \ + -e "s|__VERSION__|${VERSION:-unknown}|" \ + < "${0}.d/foot.html" diff --git a/contrib/html.sh.d/foot.html b/contrib/html.sh.d/foot.html new file mode 100644 index 0000000..106c2bd --- /dev/null +++ b/contrib/html.sh.d/foot.html @@ -0,0 +1,4 @@ + +

RouterOS Scripts documentation generated on __DATE__ for __VERSION__

+ + diff --git a/general/style.css b/general/style.css index 018ccc4..73b0921 100644 --- a/general/style.css +++ b/general/style.css @@ -43,6 +43,10 @@ img.logo { float: left; border-radius: 50%; } +p.foot { + color: #777; + text-align: center; +} p.heading { margin: 0px; font-weight: bold; From 82587ec589b7c9f6a1639d05f002ad18c8540192 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 11:21:51 +0100 Subject: [PATCH 56/96] contrib/html: add copyright notice in footer --- contrib/html.sh.d/foot.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/html.sh.d/foot.html b/contrib/html.sh.d/foot.html index 106c2bd..d304152 100644 --- a/contrib/html.sh.d/foot.html +++ b/contrib/html.sh.d/foot.html @@ -1,4 +1,5 @@ -

RouterOS Scripts documentation generated on __DATE__ for __VERSION__

+

RouterOS Scripts documentation generated on __DATE__ for __VERSION__
+Copyright © 2013-2025 Christian Hesse <mail@eworm.de>

From f3afee3e4b29068847d1713fe6c1689620ce4d8d Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 23:03:58 +0100 Subject: [PATCH 57/96] fw-addr-lists.d/{allow,block}: use short url rsc.eworm.de --- fw-addr-lists.d/allow | 2 +- fw-addr-lists.d/block | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fw-addr-lists.d/allow b/fw-addr-lists.d/allow index 8b59ed7..f0239cd 100644 --- a/fw-addr-lists.d/allow +++ b/fw-addr-lists.d/allow @@ -1,3 +1,3 @@ # an ip address list for use with fw-addr-lists script -# https://git.eworm.de/cgit/routeros-scripts/about/doc/fw-addr-lists.md +# https://rsc.eworm.de/doc/fw-addr-lists.md git.eworm.de diff --git a/fw-addr-lists.d/block b/fw-addr-lists.d/block index 5e9fef2..86a6c62 100644 --- a/fw-addr-lists.d/block +++ b/fw-addr-lists.d/block @@ -1,5 +1,5 @@ # an ip address list for use with fw-addr-lists script -# https://git.eworm.de/cgit/routeros-scripts/about/doc/fw-addr-lists.md +# https://rsc.eworm.de/doc/fw-addr-lists.md # example.net 93.184.216.34 From d12be8f1ac000af5126c223f22b96b56916fc682 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 23:05:56 +0100 Subject: [PATCH 58/96] fw-addr-lists.d/allow: use rsc.eworm.de in the list --- fw-addr-lists.d/allow | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fw-addr-lists.d/allow b/fw-addr-lists.d/allow index f0239cd..8c4ca3c 100644 --- a/fw-addr-lists.d/allow +++ b/fw-addr-lists.d/allow @@ -1,3 +1,3 @@ # an ip address list for use with fw-addr-lists script # https://rsc.eworm.de/doc/fw-addr-lists.md -git.eworm.de +rsc.eworm.de From 4935c81bd9fe73dba6f55d2acdc8ad23c19d8875 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 18:18:36 +0100 Subject: [PATCH 59/96] contrib/template-capsman: split off from Makefile --- Makefile | 7 ++----- contrib/template-capsman.sh | 11 +++++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100755 contrib/template-capsman.sh diff --git a/Makefile b/Makefile index ecb25bc..14aab08 100644 --- a/Makefile +++ b/Makefile @@ -28,11 +28,8 @@ docs: $(HTML) rsc: $(GEN_RSC) -%.capsman.rsc: %.template.rsc Makefile - sed -e '/\/interface\/wifi\//d' -e '/\/interface\/wireless\//d' -e 's|%TEMPL%|.capsman|' \ - -e '/^# NOT \/caps-man\/ #$$/,/^# NOT \/caps-man\/ #$$/d' \ - -e '/^# !!/,/^# !!/c # !! Do not edit this file, it is generated from template!' \ - < $< > $@ +%.capsman.rsc: %.template.rsc contrib/template-capsman.sh + contrib/template-capsman.sh $< > $@ %.local.rsc: %.template.rsc Makefile sed -e '/\/caps-man\//d' -e '/\/interface\/wifi\//d' -e 's|%TEMPL%|.local|' \ diff --git a/contrib/template-capsman.sh b/contrib/template-capsman.sh new file mode 100755 index 0000000..5771b53 --- /dev/null +++ b/contrib/template-capsman.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +sed \ + -e '/\/interface\/wifi\//d' \ + -e '/\/interface\/wireless\//d' \ + -e 's|%TEMPL%|.capsman|' \ + -e '/^# NOT \/caps-man\/ #$/,/^# NOT \/caps-man\/ #$/d' \ + -e '/^# !!/,/^# !!/c # !! Do not edit this file, it is generated from template!' \ + < "${1}" From c6451c87f1cfb3f707822fb481f09b869f4ba84f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 22:53:31 +0100 Subject: [PATCH 60/96] general/style: make the blockquote darker --- general/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/general/style.css b/general/style.css index 73b0921..ea9b111 100644 --- a/general/style.css +++ b/general/style.css @@ -18,7 +18,7 @@ a:hover { blockquote { border-left: 4px solid #ccc; padding: 0 10px; - color: #777; + color: #555; } code { margin: 0 2px; From 05f08381190c560aca16895197910be08a53db23 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 00:23:02 +0100 Subject: [PATCH 61/96] README: install from rsc.eworm.de --- README.d/01-download-certs.avif | Bin 4890 -> 1869 bytes README.d/04-import-scripts.avif | Bin 3782 -> 3932 bytes README.d/07-edit-global-config-overlay.avif | Bin 5103 -> 5161 bytes README.md | 4 ++-- global-config-overlay.rsc | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.d/01-download-certs.avif b/README.d/01-download-certs.avif index d41ca0595fa2f6b2ca1eaf3a94e34244d46e017a..0532ec3addc1b174c13c5edd6acc1294dbf36666 100644 GIT binary patch delta 1661 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 diff --git a/README.d/04-import-scripts.avif b/README.d/04-import-scripts.avif index 53439e4e5f832c7cd7e8a424f1b70e471ac8e31a..a5cfa7bf46733ae385e5cb9c8cc55364724c0b2d 100644 GIT binary patch delta 3727 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 diff --git a/README.d/07-edit-global-config-overlay.avif b/README.d/07-edit-global-config-overlay.avif index f87fda88e60281d3b0c4a2cb301025832c2bf8de..5b9c0a6952a9a5a411ebb70e607a26d3f19bf942 100644 GIT binary patch delta 4703 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 delta 4645 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 b-ISb_DgD!KOtbL*N&uA}Yt=~bR1)#28+8JP diff --git a/README.md b/README.md index 59c695e..f33c2a2 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ If you intend to download the scripts from a different location (for example from github.com) install the corresponding certificate chain. - /tool/fetch "https://git.eworm.de/cgit/routeros-scripts/plain/certs/ISRG-Root-X2.pem" dst-path="isrg-root-x2.pem"; + /tool/fetch "https://rsc.eworm.de/main/certs/ISRG-Root-X2.pem" dst-path="isrg-root-x2.pem"; ![screenshot: download certs](README.d/01-download-certs.avif) @@ -125,7 +125,7 @@ date and time is set correctly! Now let's download the main scripts and add them in configuration on the fly. - :foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={ /system/script/add name=$Script owner=$Script source=([ /tool/fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . ".rsc") output=user as-value]->"data"); }; + :foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={ /system/script/add name=$Script owner=$Script source=([ /tool/fetch check-certificate=yes-without-crl ("https://rsc.eworm.de/main/" . $Script . ".rsc") output=user as-value]->"data"); }; ![screenshot: import scripts](README.d/04-import-scripts.avif) diff --git a/global-config-overlay.rsc b/global-config-overlay.rsc index 9afaceb..88bb4d9 100644 --- a/global-config-overlay.rsc +++ b/global-config-overlay.rsc @@ -6,7 +6,7 @@ # https://rsc.eworm.de/#editing-configuration # Copy relevant configuration from global-config, paste and modify it here. -# https://rsc.eworm.de/global-config.rsc +# https://rsc.eworm.de/main/global-config.rsc # End of global-config-overlay From 54612e333fe72a7fb329f11cf543e87cec80479e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 18:21:39 +0100 Subject: [PATCH 62/96] contrib/template-local: split off from Makefile --- Makefile | 7 ++----- contrib/template-local.sh | 11 +++++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100755 contrib/template-local.sh diff --git a/Makefile b/Makefile index 14aab08..b90002d 100644 --- a/Makefile +++ b/Makefile @@ -31,11 +31,8 @@ rsc: $(GEN_RSC) %.capsman.rsc: %.template.rsc contrib/template-capsman.sh contrib/template-capsman.sh $< > $@ -%.local.rsc: %.template.rsc Makefile - sed -e '/\/caps-man\//d' -e '/\/interface\/wifi\//d' -e 's|%TEMPL%|.local|' \ - -e '/^# NOT \/interface\/wireless\/ #$$/,/^# NOT \/interface\/wireless\/ #$$/d' \ - -e '/^# !!/,/^# !!/c # !! Do not edit this file, it is generated from template!' \ - < $< > $@ +%.local.rsc: %.template.rsc contrib/template-local.sh + contrib/template-local.sh $< > $@ %.wifi.rsc: %.template.rsc Makefile sed -e '/\/caps-man\//d' -e '/\/interface\/wireless\//d' -e 's|%TEMPL%|.wifi|' \ diff --git a/contrib/template-local.sh b/contrib/template-local.sh new file mode 100755 index 0000000..bc5b327 --- /dev/null +++ b/contrib/template-local.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +sed \ + -e '/\/caps-man\//d' \ + -e '/\/interface\/wifi\//d' \ + -e 's|%TEMPL%|.local|' \ + -e '/^# NOT \/interface\/wireless\/ #$/,/^# NOT \/interface\/wireless\/ #$/d' \ + -e '/^# !!/,/^# !!/c # !! Do not edit this file, it is generated from template!' \ + < "${1}" From 0b7528db99cbb6aa943ddc83498ced13bb0dc013 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 17:07:01 +0100 Subject: [PATCH 63/96] contrib/logo-color: place screenshots below each other... ... not side by side. --- contrib/logo-color.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 3aca324..2c4cef6 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -37,9 +37,9 @@ something that differentiates? Color it!

Then right-click, click "Take Screenshot" and finally select the logo and download it.

-

Screenshot Browser 01 -Screenshot Browser 02 -Screenshot Browser 03

+

Screenshot Browser 01

+

Screenshot Browser 02

+

Screenshot Browser 03

(This example is with Firefox. The workflow From af5f01a9738ec449d4cb28b1f5718c456f1c9a10 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 00:23:37 +0100 Subject: [PATCH 64/96] INITIAL-COMMANDS: install from rsc.eworm.de --- INITIAL-COMMANDS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 6e70b66..787c11e 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -17,7 +17,7 @@ Initial commands Run the complete base installation: { - :local BaseUrl "https://git.eworm.de/cgit/routeros-scripts/plain/"; + :local BaseUrl "https://rsc.eworm.de/main/"; :local CertCommonName "ISRG Root X2"; :local CertFileName "ISRG-Root-X2.pem"; :local CertFingerprint "69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470"; From aeca778284ede7b0c1cc3e64c13f93d502a06b9c Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 18:22:35 +0100 Subject: [PATCH 65/96] contrib/template-wifi: split off from Makefile --- Makefile | 7 ++----- contrib/template-wifi.sh | 11 +++++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100755 contrib/template-wifi.sh diff --git a/Makefile b/Makefile index b90002d..fa4cdcb 100644 --- a/Makefile +++ b/Makefile @@ -34,11 +34,8 @@ rsc: $(GEN_RSC) %.local.rsc: %.template.rsc contrib/template-local.sh contrib/template-local.sh $< > $@ -%.wifi.rsc: %.template.rsc Makefile - sed -e '/\/caps-man\//d' -e '/\/interface\/wireless\//d' -e 's|%TEMPL%|.wifi|' \ - -e '/^# NOT \/interface\/wifi\/ #$$/,/^# NOT \/interface\/wifi\/ #$$/d' \ - -e '/^# !!/,/^# !!/c # !! Do not edit this file, it is generated from template!' \ - < $< > $@ +%.wifi.rsc: %.template.rsc contrib/template-wifi.sh + contrib/template-wifi.sh $< > $@ clean: rm -f $(HTML) checksums.json diff --git a/contrib/template-wifi.sh b/contrib/template-wifi.sh new file mode 100755 index 0000000..5e297d9 --- /dev/null +++ b/contrib/template-wifi.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +sed \ + -e '/\/caps-man\//d' \ + -e '/\/interface\/wireless\//d' \ + -e 's|%TEMPL%|.wifi|' \ + -e '/^# NOT \/interface\/wifi\/ #$/,/^# NOT \/interface\/wifi\/ #$/d' \ + -e '/^# !!/,/^# !!/c # !! Do not edit this file, it is generated from template!' \ + < "${1}" From ce37544baeb55390e65eceee1c6571e4cea26b41 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 12:18:38 +0100 Subject: [PATCH 66/96] contrib/logo-color: drop width & height properties for images --- contrib/logo-color.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 2c4cef6..5516964 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -37,9 +37,9 @@ something that differentiates? Color it!

Then right-click, click "Take Screenshot" and finally select the logo and download it.

-

Screenshot Browser 01

-

Screenshot Browser 02

-

Screenshot Browser 03

+

Screenshot Browser 01

+

Screenshot Browser 02

+

Screenshot Browser 03

(This example is with Firefox. The workflow From fa9c4be576d2de88bf5c95b713abb8b1e03f6480 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 00:25:18 +0100 Subject: [PATCH 67/96] doc/mod/scriptrunonce: get script from rsc.eworm.de --- doc/mod/scriptrunonce.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mod/scriptrunonce.md b/doc/mod/scriptrunonce.md index 955d12e..1fbb697 100644 --- a/doc/mod/scriptrunonce.md +++ b/doc/mod/scriptrunonce.md @@ -48,7 +48,7 @@ Usage and invocation The function `$ScriptRunOnce` expects an URL (or name if `ScriptRunOnceBaseUrl` is given) pointing to a script as parameter. - $ScriptRunOnce https://git.eworm.de/cgit/routeros-scripts/plain/doc/mod/scriptrunonce.d/hello-world.rsc; + $ScriptRunOnce https://rsc.eworm.de/main/doc/mod/scriptrunonce.d/hello-world.rsc; ![ScriptRunOnce](scriptrunonce.d/scriptrunonce.avif) From 93eb218589cbaa0c567b0acbeb463d75543ed826 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 15:30:30 +0100 Subject: [PATCH 68/96] global-functions: $FetchUserAgentStr: add commit info in user agent string --- global-functions.rsc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/global-functions.rsc b/global-functions.rsc index 48aaf7f..dccb8b6 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -539,10 +539,16 @@ :set FetchUserAgentStr do={ :local Caller [ :tostr $1 ]; + :global CommitId; + :global CommitInfo; + + :global IfThenElse; + :local Resource [ /system/resource/get ]; - :return ("User-Agent: Mikrotik/" . $Resource->"version" . " " . \ - $Resource->"architecture-name" . " " . $Caller . "/Fetch (https://rsc.eworm.de/)"); + :return ("User-Agent: Mikrotik/" . $Resource->"version" . " " . $Resource->"architecture-name" . \ + " " . $Caller . "/Fetch (https://rsc.eworm.de/" . [ $IfThenElse ($CommitId != "unknown") \ + ("; " . $CommitInfo . "/" . [ :pick $CommitId 0 8 ]) ] . ")"); } # check for existence of file, optionally with type From b285f2c5d291513f11e8a8f6fd26b316c2cfc8ae Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 19:48:02 +0100 Subject: [PATCH 69/96] global-functions: add and fix global scheduler automatically... ... and also adjust README and INITIAL-COMMANDS. --- INITIAL-COMMANDS.md | 3 --- README.d/05-run-and-schedule-scripts.avif | Bin 1946 -> 0 bytes README.d/05-run-scripts.avif | Bin 0 -> 1801 bytes README.md | 6 +++--- global-functions.rsc | 9 +++++++++ 5 files changed, 12 insertions(+), 6 deletions(-) delete mode 100644 README.d/05-run-and-schedule-scripts.avif create mode 100644 README.d/05-run-scripts.avif diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 787c11e..374f716 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -45,9 +45,6 @@ Run the complete base installation: }; :put "Loading configuration and functions..."; /system/script { run global-config; run global-functions; }; - :put "Scheduling to load configuration and functions..."; - /system/scheduler/remove [ find where name="global-scripts" ]; - /system/scheduler/add name="global-scripts" start-time=startup on-event="/system/script { run global-config; run global-functions; }"; :if ([ :len [ /certificate/find where fingerprint=$CertFingerprint ] ] > 0) do={ :put "Renaming certificate by its common-name..."; :global CertificateNameByCN; diff --git a/README.d/05-run-and-schedule-scripts.avif b/README.d/05-run-and-schedule-scripts.avif deleted file mode 100644 index 37e1173f13037180a42ff7451fdd8bac7728211f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1946 zcmXv|2{_by7ao$eCd(wt7ly$|Vk}v&XplV_jHon&(ccX7Czq5k;o7$l*H)IS4IzY# zE&DbZMAqzkK1tM9zTrOi{GQ+Yp7XxvIp;ti5D9{hKZx@M2oPo*u?Ijvc>p+qg+5B3 zDeZW;`rwW{W+3mmki7p%ArKI7_W3tIViJJ=cMKE+d_0al7AA@TB(n2SWdMP&Fy9eE zSVSNY_F!g?1OU(D-N%jyvv6f)%10H>R|$nClgP&_-2u=WWa?%B=uBoZ47d-v9yLNB zClE|fWqw`|cmNzLoSd9YK85o|p(zqa3Piw}O!D@0COu$IKK;+?a{%apJ2sCGV`E_r zVPjqu;o*Yw;fHW@X-IqPjOn5E^Od(xnRl^Gh7=&M-=B?nuB=++KIK!*zj-nuZ`T(R zb?!7L)>2A*Bhmb_+KJlDU!)ArQ;6sdjl?MLjWVMlQ?a)qYD*%M@XzRZeHo!~sMR$? zJ^Dw5vuDC5lUYDoRuXx)rccKJmTg1(08KAPUSEG~yCNY%aVTl#`0jsWOEkPW%rJB) zqo#89{MixivjrR-$t3F53?h=Fibus;smz;&)c?Yxb|cV1+)hIat2lL6I(K>%%3skG zrTy|0sp9ovJo{?wT#?gs$553HT`9d7lOoI;F-_CT8zD(J*SNi(?7AqE&`+nzgu-4o z&PFh@GxA%Dv=x(tC+(?JFGk-u`$2OToZitfTWzar@^!{sVMs-kbWN-bUYSfUYzKLe z+;dTZv=H2Ko7(J3hJRL&+3V5y;y-z|2k!DHwxP7?RC4qNS^7T5NB=hy)pd`IHv|vI zf|FwFPe5+b3bLCTdieYTUi{UoZZxjd0Poj&;i%3EK19;2(Kie5|V8;|{^X8EPZmvedw-&?VkI`Ct*t{9KR_iOI$ zxBqBqc$sr5I8!S?Mr3NaY!1ifg6 z<%Xvf4MUyc&tH8edBz{^V@kA~r2GuDQKIQqb9ou+oY_n(nX~EDeAQ7gqkAH3YT1qL zohG=IK{+smMFwDO*Fq+w@5sAq`pp)Fw%+=4OvfhVtnB_0NFZM2CL*3~^R`$D#U|=O z8?8*{!B0`8DTKc!deUBVQ6OQPt%~$>nko| zpRYyyPc&ygdzG#vVPQANS1SZ<`Q?@$r8h-(TTzbOK}H;{n$vv80LxMSyZvyEpd?YVo!o2R{>Ex$%ym{+5B)H+JwG5EV;37#Iqu#1! zvdN9auvJfG`{v}9!@kT9keUB(S=AevjkkqK!$PDkz%gxdpkX~5^;h201&r4F_Btv~ z+YERyu*ep>)&sv<7h!=PZi*BX8b}?-#fXbEE4@uO|KJqt4$t06_zfEz2-ihyHEfqE z#~6erZ?>y^V{IF3ety=KG#MO?H}jUbLi9of?Nap;yBvpmoEXBX5FH1Y^_y$o;gnv7 zCCSe@(`mt17>*#klDGvQ5!2l)4f47Po466v!I5)sssh2fp$br%@k zYT^M~2tlx@E2gs-kEiz$7aQVqvrz|xh28Nhp(L_up&cWIL%(f7whMdd_n@u|^^bgA zM&boC>sdzHA+?yazT{)xr<1(7bA8}qP&uj^$%0A{ksq{gM{bak&9-{{^f?7_&VFc^>x)WdiIJ}K(QIFzv*=i78)ovVJ&{| zaziB_X8q}Gyc~~ltAl$01F`kyBbYoy$Qs!Vy3d|ZA JV`^E{{(m}8biDuo diff --git a/README.d/05-run-scripts.avif b/README.d/05-run-scripts.avif new file mode 100644 index 0000000000000000000000000000000000000000..e3b8b8b424f0502cc08fc7932742e97aa50ce7f5 GIT binary patch literal 1801 zcmXw02{hZ;7Y-t$mWq9-oz9?^A~Cha+Of2jv8$yLOZ#gQ(jX17WYDHn6=K?A>{^tm zMxs=Vt+m%yTQStw1{I2GX!$eYf9AgP?)TmAyXW0|&I5r!%3)D4I3xiG199URu|SwU z7C?qMS?ODGr8R756!O^PhRXF24F3NV1i}HqQUCG(@H7sH!k!d7+^h&-B7%=ATM&qc zdyX@RM*;-m=Ww|O0EC|mJ#pl?MJVraGq(pxIInLLfr&VobpycRaa{cpfD4Y`q9hQB z3q5WGf%w$93C6up96$t46afJNE(#+F`Zm8RA1fe<;0O#pJQzddzAOTQkhzi!fWsn> zJ#KIp1M~1EgSlHBVndKo;vhlDg|m3G33Y>2q08Oi>EtqX@8$CN;ytqxuaWA|m4u!p zLes+#NA#u4W$Epyxa`weqjc-B=lv7myTFQ>JS$~7x5 zd-Q3#-~IHVi7)bUi%6%`@PVBxdm-VOO2-AtiVP}gmzh>4Z}dXLR*pC=hIpACIeBe& zNLqtdtR~&}_%SYk-_t^AY4ZFd79**~jw+iQcMr=$|81=eEhNmL>BJ*!{Ow9S)-+t!cOQKXHpJ=_+Ap?|4~|gB=t%^<6P@S+yH6eg)?;&{3dp_1%}qG zd_OkrCF&R1n2~xl?VJp`rbU|Yj zh(5KVdcR&K^%3Su$yu#bPMoF+H3L{jT7vZs1|eg4MLVB|&Bv9psvXFWeGKu7{p7L~ zw`eBH^G@}5_&0m@578XhBFl7f0|_Na=Aq8*9msJY0GA_XU4NRcp@}H zZ_{{{?>!Vm=tbNL`gy1!`FE7Vw!%qu+S8zc?-6Sc0E#|n}7aC^jb_Ynr2^YZC#v`IPKr}Ptk^| z?Yxu}wc_V1oZ$=#FJEbOhMoaFduTAu7MwigV=pS2=6CQnm z&Q41!ipn+kKrzde@u0s8>ZQ&qJ~g&8C=kAH5~u#n+N*GaBhJxYT54hGJ@qA;2K?#V zAgmn`cPF`=y0=!=Z1hw4yWL2J`^OAsMeuBq-Z}Q>tEe-J033c^dfJ0RnTi{EPAo;CE4Y9d#-+yJTKDD z3(eZ?Y=}`xXB{crznIg{-s~U+R~s>yr~bE(s9el^J=P|tRqC<5H+Gv>=qTN~Za@&z z1Ibxw*R{{{y&YRd`m(fMr@cdxfJzzJ+tPf-n8Q5T_4%6;V+38k7hA~>Ovh*_>HeVl zmk0cf2z%vgR*n?s{B*bk&|VgQCeX*cyAp5FAe-)qyg{r>XDBAgl4ew?3Xnlw$n?#9 zduy}YZbNO3|G5<0i0i$!Wld$mNS91&=ktwJ#ugqel)k6~FNK+)2Z!htn~84=)4Cc_ z_jPgcEM}~5AHJ7A>edW>Tk5uU?q@e*@Jnzp!!ZTJt^%7(Z(Rp#JGY$$1nD(KYiHNel9?bC=0rgh23|m9G+V(`24{D{rZw@ zwrEUHvf`2GV$rbJ5MgI0N`d<6aVYzVB)p5{2(?{ks1X0Gbhlad>)Mo;7|X6dE9KN* zffQ=PMCG<+_6MSG&Xk_G;p=rP2yfEdh~_(Wwk6H55Z< f0rP^B=6p`ZLaprrjEG=8GH{uaQqby)Bxw8#n%yM% literal 0 HcmV?d00001 diff --git a/README.md b/README.md index f33c2a2..e3165a3 100644 --- a/README.md +++ b/README.md @@ -129,12 +129,12 @@ Now let's download the main scripts and add them in configuration on the fly. ![screenshot: import scripts](README.d/04-import-scripts.avif) -And finally load configuration and functions and add the scheduler. +And finally run configuration and functions. This will also add the +scheduler for loading at system startup automatically. /system/script { run global-config; run global-functions; }; - /system/scheduler/add name="global-scripts" start-time=startup on-event="/system/script { run global-config; run global-functions; }"; -![screenshot: run and schedule scripts](README.d/05-run-and-schedule-scripts.avif) +![screenshot: run scripts](README.d/05-run-scripts.avif) > đŸ’Ąī¸ **Hint**: You see complaints regarding syntax errors? Most likely the > RouterOS on your device is too old. Check for updates! diff --git a/global-functions.rsc b/global-functions.rsc index dccb8b6..db9eac6 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1900,6 +1900,15 @@ } } +# add (and fix) global scripts scheduler +:local OnEvent "/system/script { run global-config; run global-functions; }"; +:if ([ :len [ /system/scheduler/find where name="global-scripts" ] ] = 0) do={ + /system/scheduler/add name="global-scripts" start-time=startup; +} +:if ([ /system/scheduler/get "global-scripts" on-event ] != $OnEvent) do={ + /system/scheduler/set "global-scripts" on-event=$OnEvent; +} + # Log success :local Resource [ /system/resource/get ]; $LogPrintOnce info $ScriptName ("Loaded on " . $Resource->"board-name" . \ From 638258000beb96722056f5a52b9b7fad2ba59180 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 19:34:10 +0100 Subject: [PATCH 70/96] contrib/commitinfo: support updating the commit info --- Makefile | 6 +++++- contrib/commitinfo.sh | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100755 contrib/commitinfo.sh diff --git a/Makefile b/Makefile index fa4cdcb..2e3ba0d 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ DATE ?= $(shell date --rfc-email) VERSION ?= $(shell git symbolic-ref --short HEAD 2>/dev/null)/$(shell git rev-list --count HEAD 2>/dev/null)/$(shell git rev-parse --short=8 HEAD 2>/dev/null) export DATE VERSION -.PHONY: all checksums docs rsc clean +.PHONY: all checksums commitinfo docs rsc clean all: checksums docs rsc @@ -21,6 +21,10 @@ checksums: checksums.json checksums.json: contrib/checksums.sh $(ALL_RSC) contrib/checksums.sh > $@ +commitinfo: global-functions.rsc + contrib/commitinfo.sh $< > $<~ + mv $<~ $< + docs: $(HTML) %.html: %.md general/style.css contrib/html.sh contrib/html.sh.d/head.html contrib/html.sh.d/foot.html diff --git a/contrib/commitinfo.sh b/contrib/commitinfo.sh new file mode 100755 index 0000000..21faf9f --- /dev/null +++ b/contrib/commitinfo.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +sed \ + -e "/^:global CommitId/c :global CommitId \"${COMMITID:-unknown}\";" \ + -e "/^:global CommitInfo/c :global CommitInfo \"${COMMITINFO:-unknown}\";" \ + < "${1}" From 903a3f44a0b14cee3fb150aeea5c8f807b8626a2 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 17 Nov 2025 09:31:36 +0100 Subject: [PATCH 71/96] contrib/html: support click on code block to copy to clipboard --- contrib/html.sh | 2 ++ contrib/html.sh.d/head.html | 1 + general/clipboard.js | 4 ++++ 3 files changed, 7 insertions(+) create mode 100644 general/clipboard.js diff --git a/contrib/html.sh b/contrib/html.sh index 2fe9ef7..39589da 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -10,12 +10,14 @@ sed \ -e "s|__LOGO__|$(realpath --relative-to="${RELTO}" logo.png)|" \ -e "s|__EWORM__|$(realpath --relative-to="${RELTO}" general/eworm-meadow.avif)|" \ -e "s|__QR_CODE__|$(realpath --relative-to="${RELTO}" general/qr-code.png)|" \ + -e "s|__CLIPBOARD__|$(realpath --relative-to="${RELTO}" general/clipboard.js)|" \ < "${0}.d/head.html" markdown -f toc,idanchor "${1}" | sed \ -e 's/href="\([-_\./[:alnum:]]*\)\.md\(#[-[:alnum:]]*\)\?"/href="\1.html\2"/g' \ -e '/| id="\L\1">|' \ -e '//s|pre|pre onclick="CopyToClipboard(this)"|g' \ -e '/The above link may be broken on code hosting sites/s|blockquote|blockquote style="display: none;"|' sed \ diff --git a/contrib/html.sh.d/head.html b/contrib/html.sh.d/head.html index da54157..861a87b 100644 --- a/contrib/html.sh.d/head.html +++ b/contrib/html.sh.d/head.html @@ -3,6 +3,7 @@ RouterOS Scripts :: __TITLE__ + diff --git a/general/clipboard.js b/general/clipboard.js new file mode 100644 index 0000000..fceff85 --- /dev/null +++ b/general/clipboard.js @@ -0,0 +1,4 @@ +/* copy code to clipboard */ +function CopyToClipboard(element) { + navigator.clipboard.writeText(element.firstElementChild.innerHTML); +} From a61fbfb75ce42f5341ceb0bcbb521793c6f7f514 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 17 Nov 2025 09:53:30 +0100 Subject: [PATCH 72/96] =?UTF-8?q?general/style:=20add=20a=20"=F0=9F=93=8B?= =?UTF-8?q?=20Copy!"=20hint=20to=20code=20blocks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- general/style.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/general/style.css b/general/style.css index ea9b111..191c0f6 100644 --- a/general/style.css +++ b/general/style.css @@ -69,6 +69,12 @@ pre code { padding: 0; border: 0; } +pre::before { + content: "📋 Copy!"; + float: right; + border: 1px solid #ccc; + border-radius: 3px; +} span.link { color: #863600; } From 4f778cb1c608e384bf75de267bdf9b7ea1facf00 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 19 Nov 2025 16:38:27 +0100 Subject: [PATCH 73/96] general/clipboard: add a visual feedback --- general/clipboard.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/general/clipboard.js b/general/clipboard.js index fceff85..30c3134 100644 --- a/general/clipboard.js +++ b/general/clipboard.js @@ -1,4 +1,8 @@ /* copy code to clipboard */ function CopyToClipboard(element) { + element.style.filter = 'invert(1)'; navigator.clipboard.writeText(element.firstElementChild.innerHTML); + setTimeout(function() { + element.style.filter = 'invert(0)'; + }, 100); } From ed9dee3c5f4c45da17d67fb685436d563c929ff0 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 17 Nov 2025 11:03:02 +0100 Subject: [PATCH 74/96] contrib/html: simplify handling of relative paths --- contrib/html.sh | 7 ++----- contrib/html.sh.d/head.html | 10 +++++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/contrib/html.sh b/contrib/html.sh index 39589da..098ba46 100755 --- a/contrib/html.sh +++ b/contrib/html.sh @@ -6,11 +6,8 @@ RELTO="$(dirname "${1}")" sed \ -e "s|__TITLE__|$(head -n1 "${1}")|" \ - -e "s|__STYLE__|$(realpath --relative-to="${RELTO}" general/style.css)|" \ - -e "s|__LOGO__|$(realpath --relative-to="${RELTO}" logo.png)|" \ - -e "s|__EWORM__|$(realpath --relative-to="${RELTO}" general/eworm-meadow.avif)|" \ - -e "s|__QR_CODE__|$(realpath --relative-to="${RELTO}" general/qr-code.png)|" \ - -e "s|__CLIPBOARD__|$(realpath --relative-to="${RELTO}" general/clipboard.js)|" \ + -e "s|__GENERAL__|$(realpath --relative-to="${RELTO}" general/)|" \ + -e "s|__ROOT__|$(realpath --relative-to="${RELTO}" ./)|" \ < "${0}.d/head.html" markdown -f toc,idanchor "${1}" | sed \ diff --git a/contrib/html.sh.d/head.html b/contrib/html.sh.d/head.html index 861a87b..656a63c 100644 --- a/contrib/html.sh.d/head.html +++ b/contrib/html.sh.d/head.html @@ -1,14 +1,14 @@ RouterOS Scripts :: __TITLE__ - - - + + +
- - + +
eworm on meadowQR code: rsc.eworm.deeworm on meadowQR code: rsc.eworm.de RouterOS Scripts
a collection of scripts for MikroTik RouterOS
From e10455fb18ee82480fc5e115a658c356f1e806ae Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 17 Nov 2025 13:17:17 +0100 Subject: [PATCH 75/96] contrib/static-html: split off from Makefile --- contrib/Makefile | 7 ++----- contrib/logo-color.html | 2 +- contrib/notification.html | 2 +- contrib/static-html.sh | 8 ++++++++ 4 files changed, 12 insertions(+), 7 deletions(-) create mode 100755 contrib/static-html.sh diff --git a/contrib/Makefile b/contrib/Makefile index cdb9f4c..f704378 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -6,8 +6,5 @@ HTML := $(wildcard *.html) all: docs -docs: $(HTML) - sed -i \ - -e '/href=/s|\.md|\.html|' \ - -e '/blockquote/s|/\*! display \*/|display: none;|' \ - $(HTML) +docs: static-html.sh $(HTML) + ./static-html.sh $(HTML) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 5516964..a45ea93 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -18,7 +18,7 @@

âŦ…ī¸ Go back to main README

-

đŸ’Ąī¸ Hint: This site or links +

đŸ’Ąī¸ Hint: This site or links on it may be broken on code hosting sites. Use Logo Color Changer instead.

diff --git a/contrib/notification.html b/contrib/notification.html index 902d328..a618f22 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -18,7 +18,7 @@

âŦ…ī¸ Go back to main README

-

đŸ’Ąī¸ Hint: This site or links +

đŸ’Ąī¸ Hint: This site or links on it may be broken on code hosting sites. Use Notification Generator instead.

diff --git a/contrib/static-html.sh b/contrib/static-html.sh new file mode 100755 index 0000000..2c6f595 --- /dev/null +++ b/contrib/static-html.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +sed -i \ + -e '/href=/s|\.md|\.html|' \ + -e '/blockquote/s|/\* display \*/|display: none;|' \ + "${@}" From a64e9bed80fbe7c2da5be5034732ca1b87ca06fa Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Nov 2025 18:53:29 +0100 Subject: [PATCH 76/96] contrib/static-html: find static html files by comment --- contrib/Makefile | 2 +- contrib/logo-color.html | 1 + contrib/notification.html | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/Makefile b/contrib/Makefile index f704378..9417af3 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -1,6 +1,6 @@ # Makefile -HTML := $(wildcard *.html) +HTML := $(shell grep -xl '' *.html) .PHONY: all docs diff --git a/contrib/logo-color.html b/contrib/logo-color.html index a45ea93..1d67b4e 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -1,4 +1,5 @@ + RouterOS Scripts :: Logo Color Changer diff --git a/contrib/notification.html b/contrib/notification.html index a618f22..248565d 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -1,4 +1,5 @@ + RouterOS Scripts :: Notification Generator From e0b12a9050eeb1c231ace3b5b5186b34514e563d Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Nov 2025 19:01:39 +0100 Subject: [PATCH 77/96] contrib/static-html: add badges --- contrib/Makefile | 5 ++++- contrib/badges.md | 6 ++++++ contrib/logo-color.html | 2 ++ contrib/notification.html | 2 ++ contrib/static-html.sh | 2 ++ 5 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 contrib/badges.md diff --git a/contrib/Makefile b/contrib/Makefile index 9417af3..ef0e41d 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -6,5 +6,8 @@ HTML := $(shell grep -xl '' *.html) all: docs -docs: static-html.sh $(HTML) +badges.html: badges.md + markdown $< > $@ + +docs: static-html.sh $(HTML) badges.html ./static-html.sh $(HTML) diff --git a/contrib/badges.md b/contrib/badges.md new file mode 100644 index 0000000..24bd205 --- /dev/null +++ b/contrib/badges.md @@ -0,0 +1,6 @@ +[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network) +[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) +[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.15-yellow?style=flat)](https://mikrotik.com/download/changelogs/) +[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts) +[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 1d67b4e..84365a6 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -17,6 +17,8 @@

Logo Color Changer

+ +

âŦ…ī¸ Go back to main README

đŸ’Ąī¸ Hint: This site or links diff --git a/contrib/notification.html b/contrib/notification.html index 248565d..a0580bd 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -17,6 +17,8 @@

Notification Generator

+ +

âŦ…ī¸ Go back to main README

đŸ’Ąī¸ Hint: This site or links diff --git a/contrib/static-html.sh b/contrib/static-html.sh index 2c6f595..7acf104 100755 --- a/contrib/static-html.sh +++ b/contrib/static-html.sh @@ -5,4 +5,6 @@ set -e sed -i \ -e '/href=/s|\.md|\.html|' \ -e '/blockquote/s|/\* display \*/|display: none;|' \ + -e '//r badges.html' \ + -e '//d' \ "${@}" From 70675a9feea715d9e3618f80011d948f222ac35a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Nov 2025 19:18:43 +0100 Subject: [PATCH 78/96] contrib/Makefile: add target clean --- contrib/Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contrib/Makefile b/contrib/Makefile index ef0e41d..e755a1d 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -2,7 +2,7 @@ HTML := $(shell grep -xl '' *.html) -.PHONY: all docs +.PHONY: all docs clean all: docs @@ -11,3 +11,7 @@ badges.html: badges.md docs: static-html.sh $(HTML) badges.html ./static-html.sh $(HTML) + +clean: + rm -f badges.html + git checkout HEAD -- $(HTML) From b97a434a9c0c59d9d2b0cc8e3856f243f52de8eb Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 19 Nov 2025 08:21:36 +0100 Subject: [PATCH 79/96] Makefile: also clean contrib --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 2e3ba0d..5db0a30 100644 --- a/Makefile +++ b/Makefile @@ -43,3 +43,4 @@ rsc: $(GEN_RSC) clean: rm -f $(HTML) checksums.json + make -C contrib/ clean From 725eb834f439d3c7051a819caaa4eebcdedce06d Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 10:58:37 +0100 Subject: [PATCH 80/96] README: link the long way in detail --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e3165a3..8ae5b42 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,8 @@ Initial setup If you know how things work just copy and paste the [initial commands](INITIAL-COMMANDS.md). Remember to edit and rerun `global-config-overlay`! -First time users should take the long way below. +First time users should take [the long way in detail](#the-long-way-in-detail) +below. ### Live presentation From 30743c0e87e385b5310d304bcc0ba46f02f05a11 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 11:03:33 +0100 Subject: [PATCH 81/96] README: mention broken installation for initial commands --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ae5b42..bdb06e1 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,8 @@ Initial setup ### Get me ready! If you know how things work just copy and paste the -[initial commands](INITIAL-COMMANDS.md). Remember to edit and rerun +[initial commands](INITIAL-COMMANDS.md). These also support fixing an +existing but broken installation. Remember to edit and rerun `global-config-overlay`! First time users should take [the long way in detail](#the-long-way-in-detail) below. From 2feaaf36b2725dbdd3dcbfb43538c23a175267da Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 11:05:27 +0100 Subject: [PATCH 82/96] README: highlight the long way for first time users with hint --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bdb06e1..39404a9 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,9 @@ If you know how things work just copy and paste the [initial commands](INITIAL-COMMANDS.md). These also support fixing an existing but broken installation. Remember to edit and rerun `global-config-overlay`! -First time users should take [the long way in detail](#the-long-way-in-detail) -below. + +> đŸ’Ąī¸ **Hint**: First time users should take +> [the long way in detail](#the-long-way-in-detail) below. ### Live presentation From fa64e8906bfa1f3f9bfdfcbc235fabef7076cf3b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 11:53:27 +0100 Subject: [PATCH 83/96] contrib/logo-color: add the copyright notice in footer --- contrib/logo-color.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/logo-color.html b/contrib/logo-color.html index 84365a6..e5bfb71 100644 --- a/contrib/logo-color.html +++ b/contrib/logo-color.html @@ -56,4 +56,7 @@ a profile photo for your Telegram bot.

âŦ…ī¸ Go back to main README
âŦ†ī¸ Go back to top

+ +

Copyright © 2013-2025 Christian Hesse <mail@eworm.de>

+ From 8a904dadf4cebe4a018b6c52140faba222ed5b80 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 11:53:55 +0100 Subject: [PATCH 84/96] contrib/notification: add the copyright notice in footer --- contrib/notification.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/notification.html b/contrib/notification.html index a0580bd..7a6ada7 100644 --- a/contrib/notification.html +++ b/contrib/notification.html @@ -51,4 +51,7 @@ notification and download it.

âŦ…ī¸ Go back to main README
âŦ†ī¸ Go back to top

+ +

Copyright © 2013-2025 Christian Hesse <mail@eworm.de>

+ From b65f3512d058a8349bf7ce4e6458271e4a9b1029 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 14:01:39 +0100 Subject: [PATCH 85/96] README: add scheduler with start-time=startup --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 39404a9..0aedfcf 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,7 @@ cleanup add a scheduler entry. $ScriptInstallUpdate dhcp-to-dns,lease-script; /ip/dhcp-server/set lease-script=lease-script [ find ]; - /system/scheduler/add name="dhcp-to-dns" interval=5m on-event="/system/script/run dhcp-to-dns;"; + /system/scheduler/add name="dhcp-to-dns" interval=5m start-time=startup on-event="/system/script/run dhcp-to-dns;"; ![screenshot: setup lease script](README.d/12-setup-lease-script.avif) From 295fa3144a43542cb980794ce359a50de5c5b667 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 13:34:05 +0100 Subject: [PATCH 86/96] README: update screenshots, with terminal window Started xterm with: xterm -xrm 'XTerm.vt100.allowTitleOps: false' -T 'Terminal: rsc.eworm.de' --- README.d/01-download-certs.avif | Bin 1869 -> 2761 bytes README.d/02-import-certs.avif | Bin 3605 -> 2021 bytes README.d/03-check-certs.avif | Bin 8047 -> 5079 bytes README.d/04-import-scripts.avif | Bin 3932 -> 4805 bytes README.d/05-run-scripts.avif | Bin 1801 -> 2388 bytes README.d/06-schedule-update.avif | Bin 2200 -> 3129 bytes README.d/07-edit-global-config-overlay.avif | Bin 5161 -> 6174 bytes README.d/08-apply-configuration.avif | Bin 2437 -> 1842 bytes README.d/09-update-scripts.avif | Bin 1928 -> 2641 bytes README.d/10-install-scripts.avif | Bin 2423 -> 3017 bytes README.d/11-schedule-script.avif | Bin 4113 -> 2991 bytes README.d/12-setup-lease-script.avif | Bin 7642 -> 4230 bytes README.d/13-install-custom-script.avif | Bin 4589 -> 2879 bytes README.d/14-remove-script.avif | Bin 1093 -> 1854 bytes 14 files changed, 0 insertions(+), 0 deletions(-) diff --git a/README.d/01-download-certs.avif b/README.d/01-download-certs.avif index 0532ec3addc1b174c13c5edd6acc1294dbf36666..f2afeb545aa1e191f3e9382963bcdc172c40603e 100644 GIT binary patch delta 2533 zcmVVx^@fxj@{ETUPP`QrCg6)u3-=t(%-Q8j7*2ZI~%36X)iBbR8z$VDIPK*vbO z^x?IMK^v@alj9!mVu}?c6+Mc+Vu{}rAvhsDZ_k0ftIrid8S)SsjSUakEpzlRW^>C@@dZbY%E6<>9@0h15HL znGDstbi^J)dO*6pX#N^c3kg$&*X0ic(;O;0AA@yxlJC2kC1cu9exj6Jx$IIAfBqPH zy9jg~WdVYY^( zZF#P@*_44;awdAaA%kjY`(CEwDcq#|Q1!$7+t-MF$wc2gf;Xm1W0Pq zWHxCm@CatL|J^qYB*)sAlY71Zf0`p7D2`x*+FA@JzGnLC6n}$Krp8|Qo&hM_=%GKlivx1U#(%)O_w-3s|=fQhCqFs!Q+VG>null`-lFp9CaW~N!)0MXW*oQIyF zAXddw{VTJM6{>8?<=$LJcJuWxL+AB`!jKR2KzT%Js(e~Apyq>ze_7ZYYHZ#38w+{u z=(OsqgYx|#6FS)lJ%RzQ*v7=!AJ*X)uMGC*{jUNA+(uvUR}rtV30~i)0#D*B@}A`y zkyFRiR9Aw>tgDrML{qXVBh$h^>qbZO?|-8AexTWl6bXhxICnPG7)wtIBh8Q8D)&4s z+qeX-^~cG)U3fK(fB(qDi~o7NqlN<;ydaKn6`2MviU&lR4H|N-a^E)}z9URUYV$?D z&Gdkw5S@~R8IVLei)f0~)zq-jy?Yq@PGgaa>^-M;Z#bD7SWfK-HuO|Bx|H)RFjDun zE*%=Mx&euC`!)55Q>l71M(U9}5Q;0q58$|qI(`B5x{iQmJ&XD1OD(`BYJ`Pkir7ACNLLc%DE5Sj zIA>pYl7D3=f1Y?ZAvc8%J0o7Je&q)lhG^vLzD>sDs@~TiEv;YRBc=)^>OOJzb-a~4 zf{#hlH-V)H-8Y@odk6gZeGcm}-mdQp$4C}eQSXf^(8w!=PMD->6K$EK%Xf&u1Bl}} zM?0#n$bTxXNl3ww8|I8SC8o9r45n>ej?)jBAFq`Ce^~)ABBinoQA`+U;z_e;2Rg}B z%DB%m0^YYD|BCM8U%7NB#fsX(bm<*u)To`U|E*;S=*prm#gbX63O*i8(O|?c0{e$3+HF6^ZY3Vj3&|P; zGCDJqe+~)Em}x1{9I*+?UF472%#9yiJ3#%^8Z1f|M`1g1bKyhn_>jxQHM3T;TRkR2 zE5$Oge>@u$N>b4$)U&Y~3=k1WmR8b2lTk6o8jBEK?^{?Avf7xlHqIgRV>#=|`YfC4ct&MV2_fPKV z@f3NlHW>=5L1V6+681X%=*5XG7I|vN8j-Lx%SVF>s;%m#Y~As}Wi5o6yQqES`fz-7 z8b4m;(LzUj88bmL^ziZRDW)^5iMHOz#&-=63k;%)B<>TL^OZL2r<{YKT#i2XOmpeS ze-%^PNW#=|ETtX1;x;5#Z3*;s=)OGvoHW_?G$}8bQIeAa@oFv)n;p}Paf+P;>Kqr& ze}&CodX0aDy&{F&12w}`ou^}ERltLR9I<4FvS4!&(~0*8cMk;n875S7gWev!#_H}s zDHw~U2EwpeVyDD}evGnxC%7?RrN-NCf4Q`clDtGe;3bW)&m4E}hdy9VAfM@fyn3hR za{&VHYP1WPWIkVHi^NsCs)~(Tyg9v`Uc8Z$=HsTbezkM7A?4qGSY^7uT!atAQzE9q22VjzTF}61mL;7uRY&ii?;1_8xbKkU;3^rvDk`BD*Z2e^c;N zr=%QUEi!Q=GM3Y9WlGV?UHY}HA zr%Og9%T|I4Z_ahT{DaeK(lu!%vs}Q+r04g1#OtG}@fTSQm`a;=ST(7p z|F5!Nc?PM8>AfBQ@f8_{vM-*!iku1ZNIe-^LT3sA=QsxHZ<=+G%%MFOe<@E;cQ0*I zPa$Q)o$Y<}&r~MLQq;lwW@ePn^_H?{uQ5nM8K({xNPTTHUG$O7{CG>_toau)1TWwgsqTu!!g!+>MI-3b zQX)|l&DiY)nI{3nXc>YtPsBA9ru?;i|3kUR(?oHwOuAmeYXjSlC2O|5n delta 1634 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 EV9tqwM*si- literal 3605 zcmbVJc|4SD7k*}8j3xV$otYSln#C3=*_Dbiwn}4cgK02gXtSj(DO*WeY%!LU?1_jW zsmW4yg-A+fN}2=L0F8f3;Z`Lfct^*S_E+i00Bpkn^7o7*CtuZ$b*45uY`Ak6t)FxP79>14Y2<2 z44AfLP<(jc70OdWyni1~^ z)j^=Y`^1AB`iFNSzyLIXwQqHB^)(=7XJu;zUbHqS0IZGx=70b{KZ2i60D(XtkphCk zQX;}aLc;4MBt@l^YGrCiWmc}OEuM@tQ!8 zNTjfku$+j998OJ94fj9W>O(+W0MLejV$}htI0PmRS#1MUz&ZIKYxY|TPbdt|$Bz&| z3JQS*)ndGtfE|Q+G=iLX=QC=Yq$S^6Vchl)s5`s?c?i5@u!C#3kzpN zM8?LQi9dTTAu%mIBlFVbtSi}h`2~fyii(*fmG`QuYijH28(JT=wX-@pA9wZk^}l#I zFgP?kF*)^SdgkryyE*Qs&x>EaE-kNoU!_m!^PSmM+r|d-}DtiJ221<4}4jayt+ZU3ryZCh- zeA@gV`&*lshkx2w`$RygF=l?LA;M~t^xRlH_Ch3+p6gLwSf*8&k-dH zp|+-%Y=lYEM*A-RTKp6Ge)<}On80QIK^N|*1%c+n`O656A2Tqp90 zCA(_M@yL= zRi|`pK4u@ljW#;OT?{ye1{K+5$t=Ur3$Gh+Dpyo13>RX5evFtbUT&dYZWH}_ z$ijm~-u+BJWCzQ19|8~rTJjPxz&}P6fl)P7k?3D5N(yhX7pK6#l#;uie53M`v+nZdnz0IbO_1TlZWixpQOtKG^r}gpgw*)yl4C^Q=?kN ztv9ebz`fkK-7QTfqaEK!HF7!eQk$-xOtL`(qu0;oL|KO|z4AMAw8|yh6}FockZJs) z0@a$D!f(|w7@OKBby+{WGGN$EGwx>9v1{w#QCh~)KxLGy$;l62sGXiUoDV=5 zs$T&G2Z1;4t_rO(zG`B|c4stSwc03<(9-$aF5>l zyfftv%PWhz0sAO$#q3Bui=i|Ny^!RS<}&3WQIFLgv*^;r*=rE4BxC+G3{7*^r6UwbW;GR&?BPQJz z({<1A&y|b%2JYzXq^eH}=-djkuazWVfWVksWM{`uf)Xy0djM0`oB73uX}3f(XZD_u z)y)r>)Y|aC#;eB@hf|M;afIc-QZLjm3=~N}adw)pok=q1%6DwcdvIHEqnI4^R8w`= z3n?iFOW=RS>D3_#KoDuT;gg}hnAmd)Zct#i7j%qZ?m0f*bOC*NzeaUvaZd8Go{DZE zyJA=LoOQpZ@nyN0FZ!bR zm}y2td(r@sHw@Lwz{f$lJ&J=IwpQn{&S#U-D~nW;GohKWbW?%-CiMPl|};;<8U2 z4}DxXy8S2J1Tc;J`Zij6AWfzOm&>xh*x;GR-)DZ({+heZ@}gv(QpdF$YRk8)ux5|4 zw|pM_nOM2f9vrD<<}N#9v;9Xo8*#HI3@H}#KHuix0JVqcmaje#|LOjDVur`-tE^FG zEF>Y*C8cbp{wdx!Q%xgJjHa_GNFx&-w-GR~-`a4?tfBjbo{npGf>6RCR@8;-s_I@( z68x3zC`@wzQ{nf957VDbQ|=C_EJ}Yn!^f$Vr*1aTbV=W;jjnze;wvUnP^|m@tYF*%Y;eTv^u5}` zSqp7P$z!{^7d3%T>=pmg+SI3Awd%nN!3Y$z%a6a8%e1QKPSSCSsACR$pplF9cWz+a zi?@)QOHO+0loeVi-d^^c39CiLp8ip*-Nw{SO6)SP(=9Bpiz!gu-M%kMuYfF&^LCCa zb)*q9TbyyrG+qsz@cnW_;DxXi%p~`3!N=l)*kE~o4>QF z8s>knJZ(1HY!CJ!9~#fD_LuhdRjY6rbv@YnR#uSiKJwj&dmUJCWC}A*gnbS#5p2+& J?(Y4v{4c*$$>0D0 diff --git a/README.d/03-check-certs.avif b/README.d/03-check-certs.avif index 4717b3ea9cc9436ab94be0e471263f601fcf47c8..1f03ad2c01bc115ffec79e9fd3b60259cfcb4e13 100644 GIT binary patch delta 4948 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 SVi<(%h1X<{``P91&U}FF%!w`l literal 8047 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 TzM_&$pcb*RT)gFS!jJy}s&{h% diff --git a/README.d/04-import-scripts.avif b/README.d/04-import-scripts.avif index a5cfa7bf46733ae385e5cb9c8cc55364724c0b2d..27380eba1666633b70e4c4fd2746d27ad2f9205b 100644 GIT binary patch delta 4593 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 bgQ?9x$twZ`r0uOWEkTfn#C1|g{lA+$UIXsd delta 3713 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 delta 1566 zcmV+(2I2YC5{V9wcLD|Wk$Fc2Bme*aG?B$fe+B++WMOm?015^;C2~C2Br@p>OvnV> zgQg@`=cj$4_&lOk)2?Oce#zx_y_IB2YfF*m7V_GBm=2SGCTq+1CWD7r3N?w3G`qRa zu)%bFx?dv^V4n2#4lMttDXL6V%qdfd@7}!wb4*=P6A7ATUTBNoh;mvCJLRX-o)*)W#6vVyTkj~SYLiERO} zl#>Eqy*iTt}i*>nTF#G(Ro6j`m+%z~X#*cJyWI_SqT+J{S}RTEW+ zc3JB$*`GRg>wFHZ)=w9PkI z&Ul7^rxSYl*zCkRzwo|Qkg4G{e-Ljk@Hy!N*AM`9%072sM$ox~n_@}w9ni_NIgxE{ z#fOLtK?oW@wj+SZv$@aKWO8D6f9;2o=71fkV%TCFBNZ~R2;H4XZe-b#Soyv(w8ZOp zt!+Nr8P=<45Yd@x%$!Y?F%MUJNv1KWnCz2yl*yO?55eNvetTWXz%*rqP2xZ7Pb{}# z9moaZCu{3@p=**zp+Z8TnSb0|%;uo(B1HQi5LvhaWL7Te%->JD3c%($Dv2tD!K3ua zi#mKH`a)Kp*!B|kEam0Dx-X?!cspIZPPq&$Z+wP>r;qsSroJ{er_uLwvQz4iv#4X= zpf4-z@VImvW_*_cKOV7Kie^ed z3H|#%s^pQv)xjDnqg3+v)rA5J|Bgbo&I)YF2ASx@E=ZhNg?grY_2uohEcAO55EV8^ zM3Pw5v(f>Wx1I14f7Ny_1F!LejXTwnViwI{x3&BQyFN%DXF*DbPMwZ56KTYzeH&g_ zJ;Rbgs)wvMtMf*E_=B99#g&jJSAar;O@JetTeEcRS0gmBYPiNWV7Aa>Ko z7r@4??uxSUa%&5YdKvPy((?5hMi-0^4xEKb2CX$r8hHh}zi_k2Vxe|)o%g7K^SuEs4ey->!- z<>fpIk2Fn(VX{vAMK#^$^ubPYxS1R~y<$^8clttG)|^F|ld*~_9JE|`Z2SK?I#{C? zYt8Ybnlo$`f3_)CaGYfjr3Cng?92(LHJYvpt&PsGXyqB04|!mN9{&&Ipwbc0cJ%ag z9gpvqW$dIBHOG5O5Jcm-s1oxZh`t&5>)KWkx<}2EgbCYThmX0~s`5aX-gsG=+Ak6_ z!tFr@0)pYwDbXbCK$0_`HNo`$F}d}4+F%wGyzvu}e}iH}zexU5her%Z96-W_dEr7D zy##Wio**iZNxGXUoYZ`3XN?kIE$zVjzLEz%u??D%s1ULPy8h_xe@Y%s_`{xh9|WBU zjCKY5y;(gX_t;j)=<$Nw1ISgy@2#CRu%B)sf7v|^uGE6c6=~uM**ybIISatV2(oWu QFMw%G2#188z*%8-C@)+FVE_OC diff --git a/README.d/06-schedule-update.avif b/README.d/06-schedule-update.avif index 7c96f3aa6f71be5f821c1eb1b78ef947e447a330..158e13f53d0d52ead604cd8a4e2bcf62baa190f3 100644 GIT binary patch delta 2927 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 Z1liSMOG(k=UcPsBwJVuijv$~is6Ydpm978) delta 1992 zcmV;(2RHb+7?=@|BMtIxWprTx00000001bFFdPSLX<}h^X=ag3CMwZU4t!&F$kxi+D1H2h^9K6*w9S&5Kz9#uq(*k+P=k#ay_#ovbD*1T*SLou zB4uEI>w?^7Gj9&u?o@wr$?_05q6D}*gWo!!Sw}k{uS zRV;w0Y-m3r&osN`;ph)*Lvrs+$m$|X?8i}m)fc3EWoIydm^V)2(+xL!?^~X%G(W(9 z20?d0b87?>U!Q;LNDH9J!36lcr>|u>WrRb*|I84HNAu6e3bQEgPSS#B2NwE~zdPc- zvc!9k0FfK9YR<`^Xxfo^*Az(zU})+(41olF5+n8Skjbczd4_TVr-c#I*q!R<074KZ zA(7CiNT&ie?Z5Q44zDvqz=h?i-rt#jW@lbQu`1_6g3k+Dl9Hcj6Y>RP6K8Wc-xl#I zC?yUwnh-A8;7yN>LEf7F0knlw?=sKXS7Z|{ESq&GR*s#R&8QI5Cm3yPe261jmhvH+ z%+8{MWk`ND2es3{@4wt$MWc2W9#UqK%7e0(%)}I|a5!q8@gk37NSO!`L;B`_)-z*@ zWMid@n=pbeIem}RrCdqYr-(PslcoG8#b%Oj<57klt( zi6~{K>=mh3_`|siDImi_{dcH;<5xgAFzLRg)-3tB%r(PW!l4#&N+I~B&(ks9<}E9K zBxG7aMy3f>oEv4ilxO$^T?>iLbA*3;&7(jF^OPC^Iw;ZZnxUZYD|{4Sn>Pz?^w=1F zWy45y>L1*9R;tT{gmm$|>Hll{0;K?X@VP|CsXnciZ>Yq*X!8XoynlIrjscJCiPiT< z$S-9VXA3PgD{z_us+B3!RCKdiN}MdG_16G9G_^BE(w89AK7BBxW_vxL5JhY>Oa$cV z<(JZq#n6&v0L+sSr#O>+c+bA^tNzAvMXa=K_NL@J{z3pJx{E~fo%%^!1&QPdt5II# zVPImfjl0(9lePCVA9!4U7%AX7{zR-gL>55=+NpL3C&`EblI- z?Du`gi??JN!}l3-q94rR@AveA|#GM&IAyS(+Rcbk#YQ8PFB?0$bOgR(Z(RF-%hu6red*|`phkgV z-)^M|c5%#-KA((41dV- zbxEI!KEV~1#K;GK9yDo7N`D}X`i@Qd*AxD5;IqE(t{(Q6@-zvLFd$AuNnUi-Gptym zh2)UuzrOQ$B&3dPeFhXxJ_nt&vb7exi$`=w$h==}AVu@=Y6Rf&o%d2Ww!mmB$#nDi zgun-%4tCvi5I^>px5IfUBve7t8RE$4{3)?cg%;ga?0^A(mW4H5q?9EJ2u56v&q;QnL^orgT-9zP&N6Xkb~f^~f2qRBaG(06?027+ ziEJrac-`rL;`RyWo^Y=!I5*iB=nzUA{lplp5Uq1hX?3^k|NKWv#SLN3_ntPDxvmXK zGX(h>+e6{t_={W$u9r|-aKlWKBV(0|xNfftq{pR&_-b6QPTQ72xZuV^zOzz(gwa0G zqzwa$Sw<;#4K@l1n{I~4bmP3nAA4XoWOnKjkJjve)ud{F`esmHE`t!nb&&54&UlTK|e#Kp!8imvvkr0;Kgj;ru!{Gg*9}Gb&c^_sRFX5JGgG=Zf zmK`q9`@LDwHr~UnTRgOeUZ~-h; z=%skR;PU_;x^@Do(_zmqrHdzv4r$psH zJCe5ID6;GL0qcZ@Qf{R;<<3dK{?=>+tAioCu2WqEf3 ze0h*4a`|Y}4YUqqy3Oq#YhwEx5)iAkLw_~$!Ot>zy=dZ1IyBzAacM(sACGuW@PcwW z`7$s1Vi5|62f!uw*G6%`ab;Zci-KHh;p-;fMCJfcm>_X(?U0x~GFq@LfBk4&m5W7e ze6R7~nB~ZaMo{OMt~}|u(JH=MZN7m=0<#k?$rvO8U^n;$g%bSChp#*@5obTUx{Zdx z8BEdV$)TicUh9yr($dH9ofQl}>eazht-l(2ty(?w81@Z{>L~`Oa8y4Wx zso**6iH~5=Tn#TlxZ_K}zc0C^b1A?u?gIPnyD;pI5wAKIO<{+B{v9=3+A#D<{`9Dn zik;CEBO{nI@p;JQE=0zfR6hld53uzUROpY}16oPSK7@v8fAJDf3UH=6F@Wh69+*Z# zoxAjn0m@%#ovz~hed9XCy83+>oyZx%1B$3*S|}>HiRfUZJEqgbKnq^($ejDBH*&{+ zot)GLCk3BorrE$wLW*Qw*hVTC`^#gn?0b^2p{up+Y3u%|Du$U^%EwVjnw zI2R|yz=v|{!+n;prUXw3CCi4C{|#|Dd(17$hp#4h(k6|s8}_jR6ZAwly7#O-WwNrl zlT>u$*N&XrpOu?Yv0a07NzSu7j_1`Tcc~b6#{;@he}^_=l~?Vf7auJ#U|?l|I!>q; zW6?I(>Q0?Xi=xks>z=g1=t45AlBSINgF0hKYbyR8OCbciI07XzLsee_+x?FqROf!e zf+NOvr-dTLQ0kAt0h$x^La0^z@*IOnBqq91htF|E`dmm*zseBo27a#;|MHVJTQ#37 zH_0{ie|`%*arc8(1$XN#$RZW65ztwX%j_JIQ@&~BT(E`ZUlHy+k=3( z?a^{1N9eGUlz1O_RzUNSTk7Pjtl5U31qEFke;DM26&K+xyEsktIS<18DyZ(-$W2^s zQ&+~8mSh1>VBF|N;~yQRs>hU|uZL2)8d+KpLNLmEI?;x@hQNj|Lnh`&HMSw2`#dQf zX0!0in80I>1_yob^ZNcW=$j1p?HbMDVJNc88|4*gZ`ARPh4sOnf}ce3RZx&|{Hx52 zf1spegvTY!ume9iSqX2^Y%Joee-)@<$h$NtU?JP6`V8Vk{^@xGFTbNP|oW=IN;>4($ibZ;CB?c=dX? zli}%a06p_alnyy}9MCH`R_|x3e;=_QDstc4_cvP@cQb^$@9u4DoO0F2+WeaLqS%rm z1waP=UCL4sR=u1HejVgXT&+9^I}lAdlpkKsDoUqPQEGl{NQIC29_g;a0kcXVOj~;k&ObX>Yi&~gQ!-&FGYg2l^__%ZZKwRcHH-4Me_y5ZV*G8{24Zp&uhdGxq1#}eFjsig(LF;nR-nWHZ|KF+0;GnNx;2}u`(-dd z0Ql@gXN=Di+;w%$hD4o0pkxr5At}Ic6jm7hDi%e@QL+4t*IwO8e*vP=mEjbeHj1?5JZ# z`QQ3H*V1|p+F@iXR^Y)x0$w~O_xqlmj!P*;EZ$5h{&G_M0TUoU0MCfuePq~5tE_)uA1QQzAQPVk1jnhbXs$09Q@H$2~qXVkw6oa6yG}lD9 zQgq$@$hgsW3JvY8-Q_Zv?Sii6ohM4>(OlD5yTsgae2m2ne=_`9)a*a~-H~`i^W2eT zKt)D*h7V|?vhEhu-cUQ&0$9gHXNvrJ#2k2`jhoc7cj2)5uPEwRNIZxdb~YeECK>Dg z4%iXQJ>cXKS(4`CQyU>p;>==6(X6wso;`wZ!#I}|*QS5Rlg_iG3t`h%c1vqwpC7|Q zF2RxWO(w>Of43^Hv{xmQN=R&$5(slB<8xO3{~9>JnYX_)<3!}PyRuolI9p6DEl(^v zh?l_7bH41x^w&8#^y!T&mI9HHFy6X3MSc#*_wP4EXC6iOiur zo*^LzAe_!SEJgkLh-)lj9__@sf{V5WtWB@abksb_S|oyJI1OjD$DvH=-ZAY`AP z)cbH^=OQ+Jkhv(=@S;VFtJ2`6(yE!7EsJtip=z-3kH#FQm;Jl*AT54??oHhP;w1JK zIuayof9Q^u(YW62MP&+po(f77h;i7sZO;-j&vu2$*_8GrJa(Y*calIXrc_*tg8-?SBdixI@5urCpY)*~|`dzeK$afQt=f9hc^(vni!Z7yEz3$tS_iedh<&4S!q zfBaZ@MOWFKMV2lN)b=FSC;aWV$di_)zMh6HZs|f8OgQM0)vb_OO({;ug9IL(la{$2 z%+MrIi=P7b+>Pr22tb6d#@Mx|Kp{&>?hu5V@6Lv;^k?9uO?)G5ATUTrKh;w~ zN1en`)3Gqr1@Fvx1EX{{A#N1T>6Rp$>}3=n`!RwDqy>dMY8ZqIC%3PnrPrzcT z*D02^TkWn|2sB`ZyfSiI`$$mjq|D&$n!m33?5x<3tvnzQU@gN%fsII%lc~cVe>*%V zvImWh`2f%#a^A*m6o&LR{MDNI6jw&EL{{r6&sf2EC30bSYw;PHYH zD5A%>`7hTGO+jva)Pi>b|4D#j^pIN{sSXL(VslrsV~GKMa4ajQIJeSbeW+5W}EXRwG~5g8H#ja|ZXz@sa0zd$7=ux8J%?WQnO z+u}eX4sZC%<}?&jcfgSlo?7QnKl@sMHjG)i?&HHWmA<&sO&`f=3`5NWe?)Mqxg+7` z!Onm@v%YuR;=LAQRLp(f$r!9MM?XG+>(-rFVX)eB%p5zplb>F*YDA9%%F+X`{v@q5 z(kJ{!y5g(J*+Ze^S!ZnA1jYhU_euZ-24zO340+!^<&1>)|${`bZ4H*%cOweMr| zW(g&V3?e1TvdrqRfBe+fXiy)%YV@0tF3uqdLSy41%<>zY9;^Vu{)I*YqS!vJqJLMg zu6X3Qk;f+p!&#?s+Q1Cp)?{bp4{BOiyx)Fd+DUSYBD6q7vlZnV$fmX?Cxmz^*R~=Q znQsA=#cj>xU=qEN<5J#Z057z23GHA7;;jqj{`i5BrO3Hle_z|3ZCc)y*Cs@`;L^>b z*BcY8J?KEq-gULem-z8|8X<}gQkXY>5lA~xR%>#u#Eu0 zqr5=s+Ldg*wSd1(W^zkX>eHzmspepX6`;eMVOI8~nk5kP7`$(*AH71!$08Qm-+&4v zrcmluValS3d7S)h%3xL9>4UOA;=U3QUR&@|{irV6e@BPo}|((UB><9DkHm5-$3dYak9 z8G;(zssU1Y>~8EHr{>L)=1RArSfsB4uZ96v@K`q@%WhXudEg+$@st30ZXJIHOMdbt z;yXxNe~B*S+2istpmueowi$Yjtj}m{rm2zaO1&;1exq6Pu908KEC3uT4=}FWp|T{w_X5YQXc8Ssd~?h> z3fZvn9WuYIOhHvC?=HpbTYW_l&weTz%B9y@ItN> zG(XotchSqNTWY1^SR>%=W*6e~T=-|cYwem`;oIz@HP7lu#bH00BUS<}W{w~=b7abnT(6p#!{}QLN{mgjQE7hgi3rZ?=NycME!~M{j-9r4E$f2xRM$ zuNgi?>K^D?uNvz(Dp28=fvV&XT9r*NDNI&DKZVZYOhVF0Q1)GLbr?l+N$x_bQiN-= zmk+?a6T0%eHcT?Aq*U;vgrf&P zuoO)}?f^ThOtjvsPz35ncE`9OVe}QE$a;(!Q_E&|Ae!KU*o7PIxC{=VDbuKu`&aiu z%#r=4Byj>BLJ_Qz5UtM7d%73x`Lkl#AG|QimTJoa)&I5X?o*e*PCuqKTdlWGVfW zT@gpojQgBxJW?2Sar-I5pbT-7XvO1W)Px!Hrq=$$P^Vrpm~*#>{lyYKQ-_stL6Ob)eU>TA zHsnZPY+u`afURO4<}&>_19`jb_bioOv$NO4p~;1vN4TnPgqGq~PSHOz-b6%?VMc1d9VokO-Q>v?n%4bWQIrSHD_=Ztuc5?Hk^K^Odv(oA{00hUYXgI+XMRae zT+cQFYYdYyRVe*E|Nm&wYtENP+X$N=j#8U(LAc_ZFKjc1QX(G7p+diA| zUIC@xdoqV{&HhR6JmB+fmxAkvU&vdf@?VbW%GghHG#)_sfUWMOm?015{S%1b{M#CQM`k z-85H4nt4SrV1HNCcz&VnRw!T_NoW^gXY9GxQPZmq4gR-gQ#z9>V9NSnG4B_P1TxL}2T^$6s4N2Rn@bc|yCkvpB;`6|fM ze|l^n0aRH*tVLS_z+2t^-N-@3H&CC4uKhbemm~QJhztJIQ>LM;?YP5`;McentcVxm z; zePPZ(=hi2Tc6xv!wu@H@w*v3ae|#d;ozWq_g0ycACBZmNZhz3_cH*s0$Z~*Uo@J-KJ;DFVYQR!}b15)`IXeBm(GA-)$5OP? z|G*d2I|idql7^Pi#)}`9TTYO2?1Of3d2-s9+3tfFxSi zQ_UU_4&tDr6w=t-7oc5gl5_bRgMh&>iF{4Cew6#H7CuFYywpMx3|+2aI5fJeH)(5uNKl?Tb1Q2SbeOtLb%+M8j6W4> zX8*1Q;*zS@tORod0m6>fOVbrAlBr}2XFN=%?%BRTgsXlL7sO1a%1HOBZC)^1S??lr z20o@7x{EKAk(22ftuU?npJ0a{hm`h{Op0Hy(J!knCFaS7f5%)OrEUE+<_$qfafP*; zp_Yc-HVqk}k^iDjWk%cKLK->7CI*Cnw_HeLl%Paeb*j))`&2o&jF{3i=!s&dV{(-U z!0LT+(5nJTF8ZUj=r;}0h4ZI}O$<|oZ|Uus#6Xu%z50#E4KM4}UvHAKVTeoeENo(| z^7c?krPJnof5*N0wXv?J&!X?@UEEhNl)+FQK!=D%lN=6_KU+Y$I|F8S^Nk z=_kE3503C)^v<0}jSyJCCLbc}7$Y7dg+lF^^ClUpf5fVuy{_@Nuj@PiOo?vR{}gdT zSU#-xJtN1CNVTe!)L(qCQECH?tTn~D*hoY{S9yU8$dX0VddN`+%lrLE&h3q7A8r;6 zy>lpy0!g_h8vY5iB8H|PazDyJj${`+SMFy{n|XVdUTxqsO>=-7PZO~AAjOpG!%*nj zyF(cCe>LE)NUh!Y`}U^~N*S+>7X_#ES_xNrE?Qq?$b1&K{)k73M=b@kO2A`la4s}m z)*zNHn#7!Ov8dEk-Ayhed=175V_}lYif6eI3lJ3NjcTG_58i;olJ0@r;Q1|l5$P@KFpf8ETCL@QsoSw1Tr)>wtoNvgzIksjb| z`0a5VDlj1N+|Hy0xkWfi!Jh}rpB=DcL9#MPV+m02YG|?QIyasV1JH9_4KlSMh0qDZ zu{y2QIP^Y+j~Fqe<(QZFW?kD`-u?67UO>n3#Sa-?40al!d%(ClfrKfVYbqxhYi%B) ze`9#!ZQ-3IfR67BR_K~?{|UU>Hu#rCW#dZ*^Nn4q9O-E&IUB0*DhqMO-}l+1h49r* zceYGN!0SIL=z1L>vk?Me7GB_dEp3d-^~OWyrQvS@XGi$x4Uq$ZYN~@a?H9dtG3Yb! zfbqPP&~rVDQm#=`b;5g)DoAisb7@JMe}TJCCR4gDDOo4!E2F-4pDj%Cd<41VW-UYb zTm}|CIjeOQXrx~W57<;?1gd~@(_%JrrUiV!z~UlAf%j2TyyEE-QE8+INwS=_dSi^Z ztmwK)bFBOx;ASrwXl-~EJ|ePl5STXYZ+gD$Vk?Mi(Gwz6`D8pr=Vo%PL>=|C9S7sqn~?w1H0Sk>0s*&FeN51 z=&LlO&Pp(H941As(zPj=Ox>$pf0ajACT+`IMM5!H=b~@+LKrM%w}O885xw=ZH~;+a zbKzKE@TM@qwu^#7hi=|+;Z?Yy0Tr2-m^{h}gV=Qw57B_KkKzZUSd^(-^ty++dh(V& z(|`t|lY>{M^I}R!TOYByc(L^S007;Zf(}YSspc9OvWgsI8m&DZ0L0iPf8pGxgnSr^ zGe6wJfvnmLu_VVg9;_qm|CtMNmGcI(P4cB@6sJ?Fs!JW}Ar8*tLXrjgS z?;`UgO?pCgH8c!0uvuTjf0MckjsM|?NB6qwlwj<-@)W$MDgz$}mB=xpe&T{e$sW~s zE8Yi;7d;a*z=|-78>~ly@9w~zOGjRYSw7DlRo$XS$w@8^Sp5J~&035Kk5I1j>v^CR z8FSwpgAD6ISqnSYKaza3$Nf>Uu7}c)QT^q8xfgHXpr7L7rw>j%e_1@OkoiHb3P3i6 zF)S0;@Gz14upYPYl+PwCrv7y(f`$+_>bX6M)Frc+xOTe7%$LD)9T0+Vn@6W!5A3Oq zHqGVMgbS)2uM}z-g}@~Wi+V1YI6aa(SRRRL9WA?IQzGR4$ou-#p-JJ_z@SeY!Dhg3 zaBJEEpL33jU`||8f8OfAvqyj7GwiodF#z4f6&_1ZKHRR`RC^sbP^!@FWTYNFAmY>| zR54Vyqduv-NKb=14eIflZ2;<>t?&<8p(faMc~KaKHD8?mhR5iTfw$~RKY42avW#C! zBgDsa6!}sG0%tIx%9a}d+(Tx%-Y_qu1N(G>r?f?XwA(<-e-eAML%5|Og2n(D?VnpR zLOw-ytZCcjz@DzP=h$0Xq!M!t9+e4Q<_8Nc$t2-#idUs6M-A3o`2%GO6S}e)o-nNS zERxDU-%UKI(^%WP2rMnd+d`HrlOOa7+m%GpdKN(ltD+A#_KeSx}>^`>SWf< z)O+3sH@J9;e`c<*=s+`SdwOO6aV=5AmIoZT*BQSUD`93vHZ2@evx{A zjYEQtG$-t2`Md{&EQ#Y$*$tz00BcY0WHxSuCIu93OdmPv!z=I%V%1z$;q&5HFuxqA zt3X!lae;lQb!(rR%Nvx-Nt^CiVx4QT%3_;}rz2Yoe}I4P(6bHQu(O zOwm}dW&HTULe*6C)_Sby=P)LqGkQth74ZK^Ils79!{OM=4M0Sk{tG3qte?_ww2yU0 z68;Qviu}hJxa%#g0=~IN!(jO%p>tuw`99;MI~<)O(=WB%RH6e#k5t;V#TIO;IR7g# z+I8WOf3Vi+0Gw+av~Zo0N+;@aV!wri5Lr>LEQn2`k0e-pLy%^DJoEO%JE2nIk~rUY zVW!zMQ?G1IVWP`O=b@(=i}zvg4-PDmnF6b-u&h6$foR%LB{`7Z2xWk%n2<(^*QXm} zZXn&tDAo;4Pvk=$2i)vNQ2I~eCoJt=R9~y|f2fgv6<09kWu&dhS{D34Tq4-dB}+^w z1>Vo*k~FT$96bDvST7|_Dseb7CNy4Q9+H&#!Clehev|Lz&IMu-XoIPnBf*Ax*>u>V zV5UT^ndwkuHett)RI3eE9F1Pc3Xz!;H^)MAAu$3FJQl|d;#hp_Jw{z5JfKSOpF$|5 ze-SJiT#TZ~mUD$3uz8Y7Y&1+Mv5rK&!T(QChPt4mv+NgmIk@&B&oiX36|t_*`=Pxo zgNa5E0jGsUnbE9Gigln04~3bffsNC#$~MCJw>xGzvExsMv(`?qNGJT>aV8b%=z-AE zv2&nUXG^oVT)!47zl%Xy$|P!9N@z|lf7qJwvD^NK+quI;XQ)Gbma9?58JL=%C`1i6 zsmEd7EAFoi9Zdrv$w#ug|I@?1JIyamCHvo*;nWgLnaS@OXp2jmAs@DFnw*EU2(PI{aIGF(|i zY!EmrEH1`1aV^F!D0Qdp)d+qT4+JoOXs-eJnluz!+w$b*hWC1^V!Z}o$DY&jAU3xb z{HRZk_#aUg4Jb#?;GS?!rA%y?e+@Dou50<=g%_uBGEyPpMAy62aLghv8#zwtHL9bs z`(_iw`lS?o&J?myAv<1qAgjS+fpX|(umxfbXXS2$zuuG29WB5-h3#~Fm#15P=pOoyiy+jM@zXQpIhY$vtL4rG<5RiqS4vjFFX$#Dp@tS{aF~0yMWmMY~*PW zdqxUZ6*RtUc$BzZNpyc(ppMq3LvS7*db~DN8LBol*UYMbZyI62?mbC(?UfE1ObSTf z)bA{_HOVf7aRNZc&8Jffe*sZqH*Oj_>K0~WpRu@37QiwsFJAB0W~cB?>H;kyeY95W z8d&!dy0>mEj&1`PV|r5^VyUKTe?)sCOa$l(Qmj&bHY9?f4+$^f64~ zeOQi37~QOKgiA`Gd;7yh2|2r4&G?w(B~ENBR1culnO=rm`PRO32R-5WktJPiZi0tL z+H5U-5iDA^aedzmJU|&t4a`quY1Z1rS@q3NA0`3Xlw{|9OKn{$wUXZ6tylg%LWRCm zx4)&P7``N3WD=OFe^N}+0fjVh&xHwS#ea$vdOvL7MFSZ&Y-=|ed9ds7e;sPNKI0FF zNu2Mxz?kh6Cn02LcU<5NyVn;#9=N9Ni6Y;)8qLLvtK4cFbrjWX96Csavl7GipF@lN z)z*w0t+YsrNWLi^%&+QZef?3 zq!MD1c=PX8`8TL3Y-~OQItSXAV5nC6=^F*V}F; zFRCV5@*BbE<6-%wq>zX)69h+;-&B=XOCdG>$V9XG_ite@H^F=zV$&#jEw01wnaVxU z!AokhaAnCPjC(STow2o>F*h4Wbu?e62yk9svjWqP3xn1c`!o?8OahfM%Leh`iMLjkK)w3v(xg?S9%R@o#VJw{IuiB?6R$ODi>VlO!Mf(b_J2c57+IM2E W`PLjlrK=j-)L(Alaq5asm(4Jzn09sm diff --git a/README.d/08-apply-configuration.avif b/README.d/08-apply-configuration.avif index b66af1a7ad18f9ee6b4958b1de8c5db463d58382..ab22cae3e05eab8ee3b2b878a726890b1fbb2ee9 100644 GIT binary patch delta 1686 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 YsSidUC(c4dfoaqY>zTcCgQ7Ek0U)B8WdHyG diff --git a/README.d/09-update-scripts.avif b/README.d/09-update-scripts.avif index a31d60b3a0066d1ee68abbf79fd48aa6d77ffdd0..e713ac2c48e8902e88b1309c660128a9d47032f5 100644 GIT binary patch delta 2412 zcmV-y36u7S5788mcLE7Mk$Fc2C;$Kec9F$Me+foyWMOm?015^;C9;035;Cz8Ok@Js zZY%XFc_7d0#pkGB6Em!S#a)~lh14365SH6M=h720dESb9CGQ_O$MRdJabg8ZZIB&6 zBe+Hv9?KXR;8?SOFH}@&7&L)n6&F^&e-1!jXAfmAMkI(-UOtC}SK ze;vWh{%Z6DeCPh0<<UQ z+M9yU2JZ67Qb?7<8}~LSgu4ejm&s{XWzPGG*KhFTyn(_SunSK5-8!j$+eCFFt)~u$;zO z+?`7fa-|Q&s+Hi4zltMbiRMTl(;w4Ydvz10pHrI$txLG_?Iau|SR-le9?vY7afi53 zO2Jv50~@ouEl=LRem0Dto$kBv;}f3v8y8!U@HizlIQmM(T^d`ty24sKiTVN|fAH=@ zQgM+AR%+>(2#HlJ*kpc`T1o1L4X(8XP!*H(6TM)=>B>$RX3IxKMtbiQt|7}WX7-m) zJM1t3c&=jK*27HhxDSIwNyQ_cvu;o@B}nt9R;}dfpVut_!4a zyw%p88^ykm}x|wiww2!#ajS=xi%=V4g4LHPZ7KwOHMh?XI$zd=*HL^bTd(~+$Up|sep6j zftDQ!si0pH9kVA+BT56s(*I)S+NY=0!FXu{h9z`1*Tiyf31zZ_x;1y;l@R@`@Tlhz5skf0-Pi!UnYxD9Zkmm3~wfv#-{xS z#*}`KEIf8y{hcC|k0Hw-K?P(Zmt`FYX$I*N2TdWv0gd7XP%%Y&iF4aFiB@A?LWu2W zzHv5rL|w%Qt`?Pw>#e(jU|CBqm4GPA!sP9~GWV>w`{1SH?LF_PgU|g!$p@uRZM&%5wKi>VNzW`#v{Ya#JCz@=O86S0R6n5P-Oo` z9dmMi1O(FsGTu7Ne@U{QsRD$gSPy($;}voBv^6*~%$?hBkRlyo=7EI>5t#g0{ldhE zrPNKEWi~<@uRG^#HcLu5F#srhoSi`P&-k4-o+8c)OLy*=y-|h2>C)UY>dQVcw=BU+ zPx)B~^U9h1hs~HYze28kBdK6|nK>f-63sbXydkj|O+(Gue|nx$?@8+b4IM3mag&a< z^;VA8<h+B7vWV$cGf~_<8qq5G_uo!+wh+Hv-Y)pY-uCAj8q?7UdQV0%n z>`_sDI8Pb~_st?uIOW`PK&;_gy`HFk#C)WdN{CFLf0B^LDzbE08-$u)H<%>`Kc>xhiViRi$BKc` z*L^i(O7jB=A20sy$g^8t1BdY|Wl&9#Dg{3ez+QX4+m>+vaLlnQFoY^YH`-10Y({`i zS-k(A&6jWGxt0i`=dF7A8r=LuULk&>TiTV56sDv^+_COcJ%S619 ze-;|?Ops6{c17oUYaW+a8`#$D2Ie*|VfGreeB#j@@@_c!Bo?1Oe1rdY(a>a;k?adJ zJJqGo%({w98)p(9lF{M*chdw#@AWU{}nv1+5F@{$4H*q zRKd@W`_b$Vbi5+2$%@!6Mq9C&!+vKWe}k&{7&M_FoA%f?g$QculA&XV&&aXg7LMBD z)K)0*A9FAZ@W9PLC0`QNL&y&Y42jdb6CqJvEaBFB7s=rXl!n}fol)wjw;(f#L4`2l zBR?`_AOsVsS@O@K-~lqrJkl=JW#X*+)V(&Cei3W>gAZH-QPv)NblAKnp-ziDf6=-} zBLx#bNL33(c7{?Ogbpg!7dlmsPTN;|L#l8}CI^}Ad1rsXCXfqQ5L(4Ac~|t$5Ztp) zAP7^olV1E#w00N2DQL_GLhxB({IS96`;Hp{E`lQ;JipVi=x3`WrHTWo3=@Gtm%M?u z&mwIIO7vhp%Y|N_Ro%uNW6US%e}7eTH^4ASrLK{b@ssoW2kwQQdlmuOk|=yt`h08D zK$&k6sb|7UVMiL=45VO3X>%ZYIyau+xM&Sv7U67=4zXruPg0jHi^3W($^i|Rwb|&= z{Ge1)eEZpL^_e!?#R*l7qpR<2)3BBwgI^X2#Jsmj9OaY~(2at2Ts#IUR>b56N$96@ ztSOyYHs1N@oVT(i eF8nn1(yx{L_@EpLGScWuJog!n?EU!iFJVZwsg}+F delta 1694 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 V659%C*l99!+jD6bz1FIc{x6~x&wc;^ diff --git a/README.d/12-setup-lease-script.avif b/README.d/12-setup-lease-script.avif index fb4024e2a730947774c6f165c7c5e3b191a4804c..2a8bcb24b00b57757e0ce3e70169bb29a9fef0a3 100644 GIT binary patch delta 4093 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 literal 7642 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 literal 4589 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 wpuiKfKv>d+invLs_GT&7Qn~jxb9$CF3 zK?*8GOY9^=JXP6>Af>lRY451YmajoQCe6)~d85QW$%M*M#o&Q%8P z{e>ZLjrHCXxqTKt4MNG+t~1{=iso=sp?uhAYz%+#bKl>W zeTF6cKehOCGS>Kde318_qFtI`fl*)hpM0u_({H&z1}3?0U&Vi~q+}5-i%AUSCt#sC zVktI_j7B!BD*vy|{nYqv82T~+Nfh@M>1RG}m*Q%JcK^H}w!Ap^_^D}&4F>?2NsKba zCS#So#AKQTcOPxzs*-Q*ZV!J*hx^ULAvnaY5MYF+)jOFoaT6pZX0=b+s+H~x-GeY_ zjUFEeU73AnK9vlF-Wnp)t^Kd*jTbUMDYDJIouBD3|5*3mOdSuGUCw2Fmn2cQ?Lec) zNMs?eR;7R*%*#ycWba4uHg*_|gN#?-V0v9&b!ak{hCM!z3f)!NY5aehzZ1uI8~HE_ zh@^hiT@}Ru(d;@^>dh$BiY>-K@b?P-Z=2@_3cGMQ9Y7rnLXCERzL)FD7mUFQ5J`F> zE}c|X6^WrS`N?(&&e5$GCPcZX5W9Ou-=FOvFhMfA=fu@4V?6~qeBgvIa2Z}Z=j^Z9 ztcP8cejB`zXQfvVUotKADt2ld z(X&l0;H^x&p#V|Q^TkBo@J$2%6{!~!sUhYcLvql~0!eEwR!e`5hX_u!`eQ1^d6Za6 zC)n}5dZ40uuaYFma;{gCA@BD+Y~4>=>Bi!&n+@5(R_9^cKuf>8o{r1t3%~tr&bFV$ z#9ZAfN=uqK6U2pIXdK+yP0gSDFv7%LdVj?WU3OEY6D7fmtWfB2uOb+^OlB<>?u=F%#9$zGnK5K?hpqGt{hOd$g3GRsh3wE_!>5(q@_z` zFTqwU%$ciZa}5uqxc|RoW6xA|5K|1NIR)7=4$p-47l6ed`5#h-9{ z(Op&CZ3=(B>|=sr*7uZBy)XT)P~h5{NfbvZV|3n?%JK2RVWUyjD#8{Svi&Le#fQ@; zoqwrD+BA|f+Y{^4??PN5co*4tBy-0qR?Brth7bFiubk)oNfNykJ1O24>-xEYmgc5W znFuKb&s^71I{L00b9Fqnzp&j<7wNal0$8-0BOHIQ=0HJ7-(`uoP~q*Xgm@zNMr*j5 z3>k~dOAFlm^EJL-U7*x~^OGMhrscPTXV`+1NHr zQaHk{SHEMjwEyrf1RQZO0Rt#&D&Fvcw;2Wdx|4gA4{UF4P|(A4Oe1@@6P+ z%x`}c6e4%4NSML@^&yHzqE@5lEdAUTP5aZG$KZ*kaOG4pwxLdfvUrX{Jn@!#%I&rh z_*YGgNDB7=$MP8Q^(kg5WL@EXY=fC@J!acBqQTw^ccn?@rWce7?XSgRU$j2;@k~jMlt~d0ATB55_C*>4JAtQB@!Sagn^rv}AoacK9taaW#7QZTTx+s{pQz1X00KW^ nZlUBO(mpI+l|vk;6sd5TzLR%_#3eJE?OJR!%^dx_XT;yP{Z1B+ delta 875 zcmV-x1C;!}4#fzNBMtIxWprTx00000001bFFdPSLX<}h^X=ag3C+=V7)H2&v#IDrm&W^4-C z^@yS?d>UOYEW~3is0zSkEO@i0q)InyO9lE}&Bb39*pz%w;~_J_Wgk|qzS*ss(6T%_x!Y65<6 z$DeXCk%bx zV(w6^hp@E$1>S7_Z0 zGh>gQJ!@nmV}=D5s>9L)j#DZplE=^6ifr$<1`bu~@KvZl7( z*Sf|W#lS{3Ld=orC;S8>Yl?oqbVO4>aL8*Ko)}V3rE5QHgIq{XnPnxrKPT_gdLLBG z^u&Rw;6mYRXnv&j?5H(p3nDnGQ21wBqb*8k$~=1d-agHmY}*H1e|+(#Z4Uh0$l2+; zWk@d{5Ci;7jq^uAJ`%$O{r%|)wW5D1DYr|g-N`V84?G{e)EAsBpzBHO28tg%k6EW% z!){#i3HFMt%3&U-@{V6wC?y>)t6(ZBDh+5S_`^;flJ`18!E$R7BP< z|?{58(UPgpd0flm^O{C5|GfRK?W Bp%efB From e6faf346c20b63ba1c0a137055e335e2e1761679 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 14:58:39 +0100 Subject: [PATCH 87/96] doc/accesslist-duplicates: update screenshot, with terminal window --- doc/accesslist-duplicates.d/01-example.avif | Bin 5208 -> 3634 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/accesslist-duplicates.d/01-example.avif b/doc/accesslist-duplicates.d/01-example.avif index 11b3fc5f21ace72fe8f36ff62b9439e90cd39a90..d290a77133ff12670c3ea5976b4c613bbc443831 100644 GIT binary patch delta 3436 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 OPfh7{|WCGnZLt@_EzNFZoAL8!h0nhP* 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 From 6718b9078042fc8bd5a5b910f187966b96dd3c6f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 15:08:33 +0100 Subject: [PATCH 88/96] doc/mod/notification-telegram: update screenshot, with terminal window --- .../{newbot.avif => 01-newbot.avif} | Bin .../notification-telegram.d/02-getchatid.avif | Bin 0 -> 2841 bytes .../{setuserpic.avif => 03-setuserpic.avif} | Bin doc/mod/notification-telegram.d/getchatid.avif | Bin 3896 -> 0 bytes doc/mod/notification-telegram.md | 6 +++--- 5 files changed, 3 insertions(+), 3 deletions(-) rename doc/mod/notification-telegram.d/{newbot.avif => 01-newbot.avif} (100%) create mode 100644 doc/mod/notification-telegram.d/02-getchatid.avif rename doc/mod/notification-telegram.d/{setuserpic.avif => 03-setuserpic.avif} (100%) delete mode 100644 doc/mod/notification-telegram.d/getchatid.avif diff --git a/doc/mod/notification-telegram.d/newbot.avif b/doc/mod/notification-telegram.d/01-newbot.avif similarity index 100% rename from doc/mod/notification-telegram.d/newbot.avif rename to doc/mod/notification-telegram.d/01-newbot.avif diff --git a/doc/mod/notification-telegram.d/02-getchatid.avif b/doc/mod/notification-telegram.d/02-getchatid.avif new file mode 100644 index 0000000000000000000000000000000000000000..0112449cffcf63e4f89bc46ad215560ff5a74cf2 GIT binary patch literal 2841 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 Y9icV9{#F+HI+QLMdDl}aIO9I}f1!IY&;S4c literal 0 HcmV?d00001 diff --git a/doc/mod/notification-telegram.d/setuserpic.avif b/doc/mod/notification-telegram.d/03-setuserpic.avif similarity index 100% rename from doc/mod/notification-telegram.d/setuserpic.avif rename to doc/mod/notification-telegram.d/03-setuserpic.avif diff --git a/doc/mod/notification-telegram.d/getchatid.avif b/doc/mod/notification-telegram.d/getchatid.avif deleted file mode 100644 index 779296915de91a9b21e2f05685e34a1539d9c73e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3896 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 Date: Thu, 20 Nov 2025 15:11:43 +0100 Subject: [PATCH 89/96] doc/mod/ipcalc: update screenshots, with terminal window --- doc/mod/ipcalc.d/01-ipcalc.avif | Bin 0 -> 2515 bytes doc/mod/ipcalc.d/02-ipcalcreturn.avif | Bin 0 -> 2205 bytes doc/mod/ipcalc.d/ipcalc.avif | Bin 1729 -> 0 bytes doc/mod/ipcalc.d/ipcalcreturn.avif | Bin 1247 -> 0 bytes doc/mod/ipcalc.md | 4 ++-- 5 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 doc/mod/ipcalc.d/01-ipcalc.avif create mode 100644 doc/mod/ipcalc.d/02-ipcalcreturn.avif delete mode 100644 doc/mod/ipcalc.d/ipcalc.avif delete mode 100644 doc/mod/ipcalc.d/ipcalcreturn.avif diff --git a/doc/mod/ipcalc.d/01-ipcalc.avif b/doc/mod/ipcalc.d/01-ipcalc.avif new file mode 100644 index 0000000000000000000000000000000000000000..aaad6167a0528cf308337f0dee87c076c1ae50b8 GIT binary patch literal 2515 zcmXv|2Rsz)A3rlf_Q-KLWcxd0&$G!mBQBdW?#?>n71_=>XCH}ELQ0CfMMlGl>_}EA zvwLx8Wn_i-^#8oS=kxr&>-jvt9{>Ol@r#JYctxW80Mt6iAe5hC5X#HX3aSXDT9hE) z2(R;uT41D4VA%gD0DwUuBL3t5;Ux?zBIu8xp>_}|Fa&X~i~s-{>N)QK8g2l9se{U; zP^jQPL;oa#RN+fYwa=ATBt+3LBrxR9EHnxehN1e`Q5ZxB6?stM7~k`U005m7wLPX@ z4h$*^^~YgiVxl6eSEQn0lE}FO;6{W5h6N)6qo_Z#0T>gh7C#CTaA0k5>d2;3A{?)$QAk%t{TMmOix8!LoZY(IO+1p5-SV+{(4_J#O~|Q^y7KIf`a< zm&dr3qG$0jS2wR{^lrOUhk7$u1my|qi?x{Wg9ZgI&%+xM6iy#jd<6gK=d9Wvsgf_gA$q{L^2;=wZ za=>h6#Vk;CLkfpRZB`{#fys}TE+~g4HE6r>N9xwYu{uQx^TS>GMKLC6PEW_V3r&|s{Lg-}*3v5Ui z#Ax2CZuZ$E-x_0kA31CJendwsXqIa8ju}Vov>gXVG5~Q;M2^E*I~@ zO77B|9iJUuRn*$XkuHCFy|>x!%5H6q5HkeXpmhQcVVk$~g6`BxOVtE%ygI!{a%AwG zo|-e`u4r>D;N$41e5oX`D1JRRaPOtM3OP01djCh_WrA433Yt*KRcvN@CBI942(O20 z949{(etw!=4r`As%z2KhJu$#=4Lr;3w@#!rK~6LhO`?@m6LMI`RY`zv{$1gakHsff zzX(^iT|7ILvPtX`zJ^_94O!T_a!Gt$8}W!$Z4x>Mlvqe>t-k1} z7d0+c*at|3&%IYG_2TJ}xOQx@IXZ+6iQtK5+p74rjZ)+&tCRX9-<0|^z+1mUroYSM z)OJDc?MR!y|2LSiYi5MRxR7`Dp$Jo(Of@oG9LM*L+yR^gy(_lLhpm!*H-XZmSWPEc z6^S^3Eja|dm;9(&Ka|Dcg$u)8IkM+a?*7nWd8xo^NqXDeIA@3X29KuOd35hZ2UfN) zw@g#rr*XO)-L3RO#La4t-b#YNYR>HLMoBJ7t*fP+R5L1D{gNBeoVOBK zTJyT673ps>VT|w4T5s-WA7+LP>+(B!b9l%DCxO>DUFEdK#uoMq(_td!cNUA02yPolse5K*Q#%C}Y z3vt04FKGQp|1HmLvO>_ktCNvH=ee+qHD1!0X%I@&^Uu3?rumSY_e3}hAHP=ixvST} z4TR)sOMh-!WMi7nZ0mCT0so!T#m-0T7mjEAjs`YUeyc;aLE8Du#3p+%!~1~K;gjrs z`@ZlU*rCOKttq=j=i00f%kOPs4vMdt&)pnBX4QT8Ln;D4SV7$NSAQj4PS92PUu#)! z7f?L!z)@M7^;_a-+Yu;(lX2R)ARpq+AtKd3AKnWZyn*`J;9pT zDDZ21Jytqa7;R;RI(eLiH~h?}O}yuxNECeLoXD0QYb+{f_~@bD64|WKSU1D9j{;hU|97gTwelFrh&eXhICEw~ZeHawT*rVV88Zmq`Qcr_w|&Epyo1#2sF z?QsBiwBCoQEcZz(GB}&F?kA61qD*(%_mL_t7JmpOs(HV>;cQluI1b^8Vv``ep#Kcudg+g2RFWww1Y z-yXQDm@;SWEMR^N-50J~%BoqcEbR&(7Qf5gViGrjGtn9?1mpFu1cUz0ug4VwTghJ{ z_PM-jJx*!q78y6~{l`wNEWS2XpOBSHxh!o2$a{8GM>k|fwHxp{6@#FUda-eemYBEi z;&f~&n!FrlTn1t0ly7^JkhdqD%_MD05J75LSd>zcjO)}Wc@|su54VEKy>$yv1Pf0VmTA>8cY|lCuNAyil2y!Yfn$2-q-Hz-dwRI zrsSAuF};1hMoD4F{P8LI^RVENRI z+|InLLpaZxJn7vGGTnH7v+o*Rt4?sM-2fk1ptzCl>DKi~wS#R<9tPBQKQ+DTtsMx7@8 zaCh`YpLn$3cX7aY|DS?DSis)*KmH${#R9(We+w`z^8y%8`;+Px2n43RlMDj0gFsBN zG%f-F9)Fkqbzro@k?y3K)`RxHDueXIc>dkx3ShmlG+h_K+I!NF1MtB*o-~3$5D{9k zp#5`LAQ1SgFf%jL@C@2t1{unCqJY@#Ju%)M_LxB0WL6L(jwV3?tULO|qXq3SdN5r$ zJ?*L&?ha_*3m_Io#mf~BOD@R%IjiSDH|8O}D;C7p|D%1W2*rM_Evx{Mb!4rZIzYK(kiW~YTX zv=i`&+rS?mt@V`K=?MClNK31R#E_#lrlErw+_D*MA*+m=^(ch;XM<0Sen9fm$_Une z`j!;4jyV6BkNsMk_dmEz8YM`itJjvn94SN1`F!aHq)ipq*Q~if=SX{u+?gjOAsh!R zJZDAn+bki!bjg)Pbeb2P+}A2@3U3g@1XEZ_uB1-&!`b_HE=2q^p|C37F^5QpNOtJ6 z1Ut`N+oX$Sl`2WWq9)caW^o)%;i=vYQpe5gs|KacPFm`Qo4-v(3XKH6eIP==G3BlK z+a~HT^X*UNB9>40U#+n7G=F60)|7kq&aH*+7**hf{#2ujKXzw+tI+3aRCVR3vBQ1- z0D&%28dkGqc}9b0ybT8$7m)`O){c}<>xAAmn?#+O37Qy6;HLjh zsg;OwcJ^Y**LD=1>49kk1~zupfBX_9E+Ji<7ZmY+VYb#GRXH*Et1tfZvB<6|(-qXN z$<9+30nOwp{bSOEwsvZh&-VPDVWi*K*`EoNJQ#U_IzXapqi#yQjpd^%nl`xXj2CeR z)UXk{o0HG0Ta&#e2dWqcomUSpzcUC0w~Rj#8_LM+=V1B{+!=lKwNxR4pUtE7Mlm&-~ z8_Xoa?g$4|e6(7p6YTF8A6)Vrx@!eYg!o#PcYhO0fGR8y!-8yM-kf=W5QxxY%C)|xRY>}Qfhyt{LOrNL{9TgjCgjwDPP; za3x&Vjp1NrcJ$|>vA75lEpwcmzRRHfTa4pT=!L87bXVZ%#$43of^QE3$01AEGt2!% z_!1{(YPrbLXNSD$&OQReJw|p(*6f16d#tx~>^%`XAmHHiENfN6*6_3y5PqafoqCSd zze91)6s18-z0p*-RSIhwSltTX$HV-2Mffb34x%=C%)C-U^Yjm2R}AKuxpSMPua%xS+bz3e>a60^5?%aMj+f#ApMu zMqHP`CCy4rR|>__Wx77jNWM=KvYPpfbvSNdF6XBH!@+RH-vw*rLdXs2wVYxcR1Rqg zA?CCM6k4nrBOtaDD1rFE6s1NCiMz@KFaB2appo{ZBAuA zhR_?!3Upb`3k-V_S=Ma^(Fn6XRyn`4SDvLzGBdI>nZ)qNLkC^eV3dZ$Mdj$JhT;Uc zTvbnqn(ZM*MW-g6v#SPG3~_l^9gC~-d$cXr;EuJ?Dt?iDA^Q{XI{ymKx=IEH!mB6P z$p&f^iO9N1IH+y8`%0~gZ3N;L7Ng9MydBmo_;z%iTA$Wr@Jfb69=66xbnKw)BDEo9fuZ|= zBK}dRjyNt9ufd#5XD8kRE^1v`{Dbe!1odctF|+a>)aC6p8&xZWCH*4LYRX8W3e zVe}!+8dvgFK=ZeAp8>2wSrGX>ZMN3Xg9l7*dbDk}VH97=tFBS>sV<*9Y=NMTR-WOn z6;nmKr>NX*E20}(?4aTUA^}~T-mO3UMnbiCDL>vhXZY#qX5?Ye3iY+TZgN#!?*8OE z*Q3no9L2rV=F-6;8LQ3y9?AP!8GD85B_*wO?FE_+1l(3sx2V^%my+ylE&_8Cjqfv( zj@Oo75ZWAviXS8$i-6Wjrvtc@lxN~(zF;sZ4qsZ+i96e}30xfu%DQtxDvC2U?CEMq MeH(b0sT?@*Ux_{N6#xJL literal 0 HcmV?d00001 diff --git a/doc/mod/ipcalc.d/ipcalc.avif b/doc/mod/ipcalc.d/ipcalc.avif deleted file mode 100644 index fe726e8c323ea28cda327d70c16ad80fbfcdac4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1729 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 k<~uq}Z88kVkt#Vo>;1CtQ!d"broadcast"); -![IPCalcReturn](ipcalc.d/ipcalcreturn.avif) +![IPCalcReturn](ipcalc.d/02-ipcalcreturn.avif) --- [âŦ…ī¸ Go back to main README](../../README.md) From 77dc0565a9a93004f28647b3315eba5ae92625ce Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 15:17:54 +0100 Subject: [PATCH 90/96] doc/mod/inspectvar: update screenshot, with terminal window --- doc/mod/inspectvar.d/01-inspectvar.avif | Bin 0 -> 4232 bytes doc/mod/inspectvar.d/inspectvar.avif | Bin 2838 -> 0 bytes doc/mod/inspectvar.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 doc/mod/inspectvar.d/01-inspectvar.avif delete mode 100644 doc/mod/inspectvar.d/inspectvar.avif diff --git a/doc/mod/inspectvar.d/01-inspectvar.avif b/doc/mod/inspectvar.d/01-inspectvar.avif new file mode 100644 index 0000000000000000000000000000000000000000..1be1358008388ec650c82e8974859237a0a5846f GIT binary patch literal 4232 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 literal 0 HcmV?d00001 diff --git a/doc/mod/inspectvar.d/inspectvar.avif b/doc/mod/inspectvar.d/inspectvar.avif deleted file mode 100644 index f1da1d4d1bd2685dd596c851d4100623463bd455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2838 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 Wpi-Ml?@^$dcvS}^Lq&v)tok3qyD;GZ diff --git a/doc/mod/inspectvar.md b/doc/mod/inspectvar.md index 7daba15..e5c5629 100644 --- a/doc/mod/inspectvar.md +++ b/doc/mod/inspectvar.md @@ -33,7 +33,7 @@ Call the function `$InspectVar` with a variable as parameter: $InspectVar $ModeButton; -![InspectVar](inspectvar.d/inspectvar.avif) +![InspectVar](inspectvar.d/01-inspectvar.avif) --- [âŦ…ī¸ Go back to main README](../../README.md) From 2f4e83990a4133607a80ae64cbc1b6deaf975a2a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 15:20:44 +0100 Subject: [PATCH 91/96] doc/mod/scriptrunonce: update screenshot, with terminal window --- doc/mod/scriptrunonce.d/01-scriptrunonce.avif | Bin 0 -> 3072 bytes doc/mod/scriptrunonce.d/scriptrunonce.avif | Bin 2356 -> 0 bytes doc/mod/scriptrunonce.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 doc/mod/scriptrunonce.d/01-scriptrunonce.avif delete mode 100644 doc/mod/scriptrunonce.d/scriptrunonce.avif diff --git a/doc/mod/scriptrunonce.d/01-scriptrunonce.avif b/doc/mod/scriptrunonce.d/01-scriptrunonce.avif new file mode 100644 index 0000000000000000000000000000000000000000..461c3981d0e2703ada931454c5c99030b35f50de GIT binary patch literal 3072 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 literal 0 HcmV?d00001 diff --git a/doc/mod/scriptrunonce.d/scriptrunonce.avif b/doc/mod/scriptrunonce.d/scriptrunonce.avif deleted file mode 100644 index 27ccd41fa5541090b5c12e9f50c653e14f6f0e47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2356 zcmXv|2|Uw{8(-#_l4~mW5#?%*5JGb2%6%(iuHTFeGs+RuYZ3`_i~`+vL1ul z2=u{v9%&4d@%KiB{J#W&FaQGkUwwoq!0W#?oEQKb_*Xl|$f5uWjX3HIL7-y{KgytE zf*=rt5g-`=2>N^buOi53e3*`g88e zuoNTNGlClfL;!yo2n51F4o{r2L7eyz1A-#ZsE{B8DuS{3B#1SZL7f3Gfu2Vi!x)b- zA7hGVW_)!v(AyKs3p&oOaqiV+l(+??R^P_BsTlw>#_cIymEbt z71-@Zoc#ymR1)q_A60I`qe;?AMmp?3$&q#<0c;fca`CB~LZ?%2yyHmSp=iRtY{)0! zzT*X6D`9f$*SD4*IkN04E}UZQQEUiLJ_?#uXcPFu_u3@Fwc3Kra#7|h*2q|9}OJalfNELedTbgmGst3eUn3^@E zIxCitVYr{L_D*F5WUCHXwVoga6o@RuvivNv)Fy8F)DBb*ch2e%6 zV=dRH!YZrvw@z5Ske<{wThC-kOY0@C9d9=gAcxF`G)9ArI(!Cv5+brXxjnQ|+&N6D`{AA~;F_FhlG}j}{ zR;PVDD8xYQcQ`bs-*2;y$o_@Zu5dV0V{awKIfdhOokk78AwEFzh+_g~WFhzpCIW~?|-FT+O0O9S~Q zLiI*nqB*PGTALEvU2Wjahk@W3p_P*=@@?yH+ZS~9WZC5?J?$a(*N1gX7h&a3-x4LC zwH>0{*!XxVxaMR&Z8z>Hk6xp>oO3-dF*cziuoJN9CEb2}sP@;E-$PBU@K(#u3i7lE zgK0&rPnqe=cQz|0?cDt;d?5Fs-8+2!3Q#UoIMGDvW()LyII-z>xykvZf+!da%elr_5y<3`jw2( z56eWv5LCimK4?~iD5yPP=UZQ@ns!144#)UO{@6_4K0DWmPqf z;aH1%oWzeRuDlaGC8kLZIk4MAZIjyRaW6qsS@QK34^16kC(cA1_e()eKr&(Y&qn_+ zAv?oa*=#DoSxU;&(Xm8`jCWY%31q(9GoBYBKJqF`Mlm8Pjyd=TbJDXgWAyibfe+|m-OLCXr}+Ad}@|?)x>Gp zSMi637MY^l*b9;+uhX(=apo^|@XVd#BjW`=x9nP)bp22Jb1bcDR5y&K2*c;ft4@5W z=_tcYx(qgJJQ8>vu{Y8csln2pKpzrL+wK-EDDk)j-ZG^hywI>i|BbQ6`RG1vZ zeMRaDaUZHy4`#+m&Yn?z^*M6Qq|WtP^KO@FJ6r!) zkq42`82eK?pS~DpzPHUq5Zl_(c_Z7EmlK?eBXj2OrJTMKc!l2UGyi??^6gqIdCk66 zGyVY_h;HgtiHu98bvy+~i^D&VyUCUdb*@u!U};Y91aDa$DBADNj9j!Lncuu8oAZfP znAvIS^EIPcb-UGc=n&YwH|U>F3%THTR3n@KdQ^g|Rq+k-YG-xqgsSnOhN-qyp0?SG z!wh0N4+=VG$!@*n2-yat^AWt%W$R0i=3IV`XCbL9v3b^HufbYgfiK)++F6Or!B3iR KdXs}{75@h@^+E~& diff --git a/doc/mod/scriptrunonce.md b/doc/mod/scriptrunonce.md index 1fbb697..db861bb 100644 --- a/doc/mod/scriptrunonce.md +++ b/doc/mod/scriptrunonce.md @@ -50,7 +50,7 @@ The function `$ScriptRunOnce` expects an URL (or name if $ScriptRunOnce https://rsc.eworm.de/main/doc/mod/scriptrunonce.d/hello-world.rsc; -![ScriptRunOnce](scriptrunonce.d/scriptrunonce.avif) +![ScriptRunOnce](scriptrunonce.d/01-scriptrunonce.avif) Giving multiple scripts is possible, separated by comma. From e49f68c1f23a0f154ab578e8d3db7860ba1d0b30 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 15:25:01 +0100 Subject: [PATCH 92/96] doc/mod/notification-matrix: update screenshots, with terminal window --- .../01-authenticate.avif | Bin 3870 -> 2672 bytes .../notification-matrix.d/02-join-room.avif | Bin 3745 -> 2604 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/mod/notification-matrix.d/01-authenticate.avif b/doc/mod/notification-matrix.d/01-authenticate.avif index b897943b1fc7d8c7c0ac6a9f225733d24dff9e37..d5b80256da1b77fd66351b3c19654a9427d70135 100644 GIT binary patch delta 2522 zcmV<02_^QP9`F>9A`SrSZDn*}000000000XkuV%P000004sdC7Z2$lO000310016o zY;R)#0000)000310RR910RR926951ST>t<8C~0YKW&i*H0004zoE?$u90e!<0035# z4FO1h31w|$VRRAz3I;eOvU;o%GSCuCWCGZ3EA=XQAkXW?=cr#3Gpv5b%Xdf$v0xN= zx{nP@p8!1}o)lZi$Z#oD#pwsMPJxhz{sBqI!*~b05sAoy*ofK&JF`@)GLFldBv`So zQI$7%G89AEf}$~w2G#{;gByWVE~P;dg)_Z>5b4=a`$?qT|?>gQmUIWoi31ftQj#w z+7}%A%iBR&Fi^KV?PWJ9y=lNiyfxB9^`zbTaQ*%S3^^3Rt*q&m6@WeWPpBcyDuB-1 z!MB4@Il(a(^-_x^!Pfq#m~;~$w9iO?l#uTKDALSOn$X0VZd>CzS^H+8$L&=%T1cto zUbRr+*wZe`S;Lq8FCy76((|c4Dmi=ZMC*|_oRB79*p8b0R3@#Q6qxo=6jh=DPHGhd zN%;%pu}NLkp4wT~_g6#zk#yMQWAg;rT+m$uo~_Mkj9-{?;q$N`(Buc;A6TV-8TQ-0 zW#pJRH=YDD+A|-rIRl2R*)u#l(pxvCn4GaHd+aK;d)rZ~nPN`fLOInq>~?O5K~Fkv zEcmCKh(1?gBr;mfTB-zER0NWIhwp>ZbIrr-)Y(vz!RnuU0NAB>et+jqeRQ9j9I(_o zh-oE)_jkZgtm~#5OWZLh{Vwl+EL<^Ey8Xop49EOU{2=^xslOQKwY^E9v-S#V0)O@$ zTJXLphr626y8aPhV$2!j)?B*b6*E(ekF;-Km=Bh};Ea1#BR3^94Epyx=}WX}{;=Fm zC$8hK&1?cm*ZO3~_9Im|;k1;@eE1BI(ol z8kr-E8WdWueQv6$;gt^y2C4>z3)*$JX~I)*hg@$g(s{3n4B^oSa;DIm9d8~?Z>>Fq z9cVns)gR8mVE5U9(?*Ru4s`g&tNRY5~UDw&*jU4SoKmZc)hN_9eUsCV*+Bm0B6` zh2$;~R5!qa1EvCDR}cNr!H6&zaz!hD@KaN&@@(1$PfV<7*5TA3qwRV*zctJ*(dWLI zD5vC6NV{y@OLAe(7jFeJM1j!i@zz8II7u}dVnTzr#<;Yx2Gi1iSH~CMWUc${Q;GR_ zR%+t{824#u=@S2ccD7vQf@$x}8iclAZ^ctf8cke3C;Di?PTI(zxdk3j6uUR@0tT58 z2w{ifDy4qSD7xcm(CEslhAVk0ceX&UhT5mk-76V`;aXs| z3abNS;at4MlnT>-jceRG1lL);;z=K-nc%+|RyS((*w2iXfh|Y|fOJbQlg?IGobqEm z%=4kzaLE=f|D7uKKU=BLHi`*t$=`~B(Eglwp=S8#I(F4@KZ3`lIYQzM8tX(#Bm3MOd6dk5f^o*P4Odsb->BEBSvUWS;HRC)o4lU+{sQ z&^SZ(&C8vq%LCei5^YvQ| z-5oeOnBjX=$u~SxW25(56~9Hd=Znpbu;H5bt-e%xTa$s&LkyU9lgFP(-3Yhq}(lx zDtQ2ED*S-Bkchef%f_h3__W58skw=IY2VpaS5P%%_&9*wMs|B%5Z180h$cOL z&w+15+&}S@RMC61xS>T1!X0!@g*xU3<(FJ%iwJ~#4`(mw&!KF^cLlsN3AiZc-+t8m zF{%N=C$S(n?Nih9`XOn36ZNUDWji70hUa=;ov3FmkD@gZ1+~ecw>0k?4O&*eL;x%1?S|DVl=A k8d0_j@^cat>R5mlI~Ha{vyTR7UpikYnBGl(YzzrTa1N}~U;qFB literal 3870 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 U730Uad4+?KN3=Qa{QeI9Kj5%V`v3p{ diff --git a/doc/mod/notification-matrix.d/02-join-room.avif b/doc/mod/notification-matrix.d/02-join-room.avif index ad99ffde8e4a5885c1c44d361beeb4927fd694d3..20c4e799a41fb361dc107f77dcae49ca26214ca8 100644 GIT binary patch delta 2454 zcmV;H32FAB9jp|PA`SrSZDn*}000000000XkuV%P000004sdC7Z2$lO000310016o zY;R)#0000)000310RR910RR926951S82|tPC~0YKW&i*H0004zoE?$u90e!<0035# z4FO1h2_bD{VRRAz3I;eOvU;o%GK>;TWCGZ3EA=XQAkXW?=cr#3Gpv5b%Xdf$v0xN= zx{nP@p8!1}o)lZi$Z#oD#pwsMPJxhz{sBqI!*~b05sAoy*ofK&JF`@)GLFldBv`So zQI$7%G89AEf}$~w2G#{;gByWVE~P;dg)_Z>5b4=a`$?q9LVuKOd&HWzDqHB9gCe%K!H}Y|Llb#ZrO#-W%@Y4alptY&RtTBCB)>i=pi z-aA#k2Jx6hIT4$H*LiNgQrf}19d|aM?8Q&b8 zb#Dw4ZV{N~n5J!6U0Nl2xbWQY&?iRH%>J0{Up2^E5y~|B0;}4~(n9cM3cPrZ=?#K_?OyzJDxw44JV?x>L7Yr#;RO2jb>IPqyZ`?Ut! zAk7DEL=T3Rekhk|eAp6nOd0!s0kJM&Ca0j1+Xy#N#V#h1^@<_pku<`WN5Gtqw$!d} z)dG@5X7(VetHL2*2pvop9hZ2A1u$L)|J0rkLc{+Yd`MD4ZS_F-m!Q<-J;eli2c43lGhI zdD?|bhqEmQYW6J<7XH&Zanf1jQg)bTzYiAglpYZ#^b;t%!)N%9!@U%K>pbINXU!Z0 z++P%a$8?foyFIctVkRJ>VCfSuATllOUs1d5O>;3Y|Gw{y z8sB^gEh}PNN+S%zr-I3U7n;h;a_R4T4;eeQW-oH_UKh%oF8ne94TOdwKEo(acRH54 zNeR`{tz-o<$d2PCU4~AeQW>3A4&!KJDH@Ous8ixn82lB7ZnT3{>#Qg)SFdc9json< zBA_;lF3Gv-DM_~W3_&q>V&=kjNH=CaFwyjo;W02^Hdr?zmR z0TboWvwp`bwQbp{mes}O{-{f{CiJ6^cphMN6aC~iV3i;b==^vX4GV@z<+#PXtFr8{ zix2rgyNlD+7_CLEfmMRywa>U*Hx@TEre9Rzjx2Rz1x{|FJ{epP4GsL zGFnNHaHjUw3h)do93W|&vN?Ax|Bc4$?RSH%j>dobtB( z3QsE5VbY60QPORRlk2Q;Nz{uiBDE$GXOcoA-uyNIU}G?PM|S8&AdnRdX_c{&l0flG zmC4MDlh2jOVZT%>Pzat?s$qtmx_4>o5W-1xKvA> z8udD^Wh!uhZ;z1r$3BJ+_De##>~Ie0a0ZbW;8r!%S~GB-&|ObT>#^@f{_R~|eVW@= zCuMhbPd3#RTqq-M8Kw_O z5QKu;N_MTMlR$X^(+wy^HH=;+@1ie% zZ`6*w3>H)^R!pU?_*MnaCvHvuH7a4l*sg}}N>8rV*vDFS0jO20Sd=(zD7kTgcWGn{ zz=iSH@`KLPnD@WglaBb@)Tp}&_Ei{IF+X%g zW>3noDQNEmmmCRrH{TjveB=T#L!tGimM9tE5#;SAXg#-ei3bmvATnlQ3IIj(_p)D# Uq-Y@J-%`9eS6JN$d7K_Pho`QO2><{9 literal 3745 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 K&!ZvF6aNEFUlig1 From 699be25b64a8b67a99786387c8b0407f7e939590 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Nov 2025 17:05:46 +0100 Subject: [PATCH 93/96] general/clipboard: use textContent... ... and avoid having html entity encoded characters in clipboard. --- general/clipboard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/general/clipboard.js b/general/clipboard.js index 30c3134..cbcfa4a 100644 --- a/general/clipboard.js +++ b/general/clipboard.js @@ -1,7 +1,7 @@ /* copy code to clipboard */ function CopyToClipboard(element) { element.style.filter = 'invert(1)'; - navigator.clipboard.writeText(element.firstElementChild.innerHTML); + navigator.clipboard.writeText(element.firstElementChild.textContent); setTimeout(function() { element.style.filter = 'invert(0)'; }, 100); From b2d528577163d03335b1f4c89677decbd55640c2 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 7 Jun 2025 22:38:55 +0200 Subject: [PATCH 94/96] INITIAL-COMMANDS: drop the compatibility workaround... ... and make it depend in RouterOS 7.19 and its builtin certificates. --- INITIAL-COMMANDS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 374f716..88afb25 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -4,7 +4,7 @@ Initial commands [![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers) [![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network) [![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) -[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.15-yellow?style=flat)](https://mikrotik.com/download/changelogs/) +[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.19-yellow?style=flat)](https://mikrotik.com/download/changelogs/) [![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts) [![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) @@ -26,7 +26,7 @@ Run the complete base installation: :if (!((($CertSettings->"builtin-trust-anchors") = "trusted" || \ ($CertSettings->"builtin-trust-store") ~ "fetch" || \ ($CertSettings->"builtin-trust-store") = "all") && \ - [[ :parse (":return [ :len [ /certificate/builtin/find where common-name=\"" . $CertCommonName . "\" ] ]") ]] > 0)) do={ + [ :len [ /certificate/builtin/find where common-name=$CertCommonName ] ] > 0)) do={ :put "Importing certificate..."; /tool/fetch ($BaseUrl . "certs/" . $CertFileName) dst-path=$CertFileName as-value; :delay 1s; From 6d8f2f3028dd63c79f1c3ef04b25674e16420045 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 7 Jun 2025 22:41:29 +0200 Subject: [PATCH 95/96] global-functions: $CertificateAvailable: drop the compatibility workaround... ... and make it depend in RouterOS 7.19 and its builtin certificates. --- README.md | 2 +- global-functions.rsc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0aedfcf..7b92c5b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ RouterOS Scripts [![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers) [![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network) [![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) -[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.15-yellow?style=flat)](https://mikrotik.com/download/changelogs/) +[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.19-yellow?style=flat)](https://mikrotik.com/download/changelogs/) [![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts) [![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) diff --git a/global-functions.rsc b/global-functions.rsc index db9eac6..d8b9557 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -4,7 +4,7 @@ # Michael Gisbers # https://rsc.eworm.de/COPYING.md # -# requires RouterOS, version=7.15 +# requires RouterOS, version=7.19 # requires device-mode, fetch, scheduler # # global functions @@ -131,7 +131,7 @@ :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={ + [ :len [ /certificate/builtin/find where common-name=$CommonName ] ] > 0) do={ :return true; } From 1c7b9999e0b497a759eae3e31248f20e25f8b066 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 10 Oct 2025 09:11:27 +0200 Subject: [PATCH 96/96] doc/mod/ssh-keys-import: reverse old and new --- doc/mod/ssh-keys-import.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mod/ssh-keys-import.md b/doc/mod/ssh-keys-import.md index abf4d39..d0b607c 100644 --- a/doc/mod/ssh-keys-import.md +++ b/doc/mod/ssh-keys-import.md @@ -38,7 +38,7 @@ import that key: $SSHKeysImport "ssh-rsa AAAAB3Nza...QYZk8= user" admin; The third part of the key (`user` in this example) is inherited as -`key-owner` in RouterOS (or `info` starting with RouterOS 7.21beta2). Also +`info` in RouterOS (or `key-owner` with RouterOS 7.19.x and before). Also the `MD5` fingerprint is recorded, this helps to audit and verify the available keys.