From 4da39b9cbc33d61a8d320d10031cbb0f5b0abe00 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 22:08:11 +0100 Subject: [PATCH 01/20] 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 40723d4..25d1e01 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 6cae9639344c9f8e6ae1f8bb714672f9f6fed550 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:26:37 +0100 Subject: [PATCH 02/20] 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 18782cf2470270f8264f2054dc75859b2f588de6 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:56:16 +0100 Subject: [PATCH 03/20] 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 13d8e406a1c1243a77e4e2c6bf59e9de27bde4c1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 23:27:09 +0100 Subject: [PATCH 04/20] 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 b07f155021b18f2845ce97d8ae998a8383210043 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 17:22:30 +0100 Subject: [PATCH 05/20] contrib/html: add a footer --- Makefile | 4 ++++ contrib/html.sh | 5 ++++- contrib/html.sh.d/foot.html | 4 ++++ general/style.css | 4 ++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 contrib/html.sh.d/foot.html diff --git a/Makefile b/Makefile index f841ca2..87db37d 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 diff --git a/contrib/html.sh b/contrib/html.sh index 25d1e01..dfdaf4a 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 af340720cdcfa337d76e6eabda0d238efefcf3ce Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 6 Nov 2025 17:32:37 +0100 Subject: [PATCH 06/20] 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 324a7786719e696523f0e13a2802dda94ed71bf0 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 23:03:58 +0100 Subject: [PATCH 07/20] 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 5c7d7e017d2728ff93436483b5fe60009ab6c05e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 7 Nov 2025 23:05:56 +0100 Subject: [PATCH 08/20] 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 04fdbf17e70af06855a299dd63645449069c4d25 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 18:18:36 +0100 Subject: [PATCH 09/20] 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 87db37d..a4fa101 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 7c950b5bc2cf5c8f4d6fda6ad807d0714a5802ba Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 22:53:31 +0100 Subject: [PATCH 10/20] 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 e4eaa31a8754b701267656a92eb12f6ee0199dc1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 00:23:02 +0100 Subject: [PATCH 11/20] README: install from rsc.eworm.de --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f751d02..af9ef65 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) From 0215c54b4f1be78c6b61b806b0f41f7d24ec3996 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 18:21:39 +0100 Subject: [PATCH 12/20] 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 a4fa101..3de629c 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 ff05d2e95dd5da5b4a482efa0d9c7039d22242c7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 11 Nov 2025 17:07:01 +0100 Subject: [PATCH 13/20] 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 f3e5ba5024adb18d9a8fcaed6df83af968c14fb6 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 00:23:37 +0100 Subject: [PATCH 14/20] 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 fbeb1b53bb7ae199bcaf575c75767fe6bc2a871a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 18:22:35 +0100 Subject: [PATCH 15/20] 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 3de629c..3d428ba 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 b4c3f6c58fc803004002631f168efde8c48dfecb Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 12:18:38 +0100 Subject: [PATCH 16/20] 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 0a4b963c26244626158ed37065e01ffcf8a1220b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 12 Nov 2025 00:25:18 +0100 Subject: [PATCH 17/20] 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 576f41fc865b0ed888ec52519747f482a1c32496 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 15:30:30 +0100 Subject: [PATCH 18/20] 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 6e57826bbed13e8fac3e337ce56d174fe6fdd855 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 19:34:10 +0100 Subject: [PATCH 19/20] contrib/commitinfo: support updating the commit info --- Makefile | 5 ++++- contrib/commitinfo.sh | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100755 contrib/commitinfo.sh diff --git a/Makefile b/Makefile index 3d428ba..83c38cc 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,9 @@ checksums: checksums.json checksums.json: contrib/checksums.sh $(ALL_RSC) contrib/checksums.sh > $@ +commitinfo: + contrib/commitinfo.sh + docs: $(HTML) %.html: %.md general/style.css contrib/html.sh contrib/html.sh.d/head.html diff --git a/contrib/commitinfo.sh b/contrib/commitinfo.sh new file mode 100755 index 0000000..6c82465 --- /dev/null +++ b/contrib/commitinfo.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +sed -i \ + -e "/^:global CommitId/c :global CommitId \"${COMMITID:-unknown}\";" \ + -e "/^:global CommitInfo/c :global CommitInfo \"${COMMITINFO:-unknown}\";" \ + global-functions.rsc From c3428b6a2ede18155fac6b9b1d387470494802da Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 13 Nov 2025 19:48:02 +0100 Subject: [PATCH 20/20] global-functions: set 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 | 8 ++++++++ 5 files changed, 11 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 af9ef65..6c4e94e 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 and schedule 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..91e8d62 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1900,6 +1900,14 @@ } } +:if ([ :len [ /system/scheduler/find where name="global-scripts" ] ] = 0) do={ + /system/scheduler/add name="global-scripts" start-time=startup; +} +:local OnEvent "/system/script { run global-config; run global-functions; }"; +: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" . \