Compare commits

...

24 commits

Author SHA1 Message Date
Christian Hesse
c3428b6a2e global-functions: set and fix global scheduler automatically...
... and also adjust README and INITIAL-COMMANDS.
2025-11-13 20:22:56 +01:00
Christian Hesse
6e57826bbe contrib/commitinfo: support updating the commit info 2025-11-13 19:34:10 +01:00
Christian Hesse
576f41fc86 global-functions: $FetchUserAgentStr: add commit info in user agent string 2025-11-13 16:07:28 +01:00
Christian Hesse
a9076f760d Merge branch 'rsc-eworm-de' into next 2025-11-13 16:07:28 +01:00
Christian Hesse
cb82d9b271 Merge branch 'contrib-template' into next 2025-11-13 16:07:28 +01:00
Christian Hesse
0a4b963c26 doc/mod/scriptrunonce: get script from rsc.eworm.de 2025-11-13 16:07:28 +01:00
Christian Hesse
b4c3f6c58f contrib/logo-color: drop width & height properties for images 2025-11-13 16:07:28 +01:00
Christian Hesse
fbeb1b53bb contrib/template-wifi: split off from Makefile 2025-11-13 16:07:28 +01:00
Christian Hesse
f3e5ba5024 INITIAL-COMMANDS: install from rsc.eworm.de 2025-11-13 16:07:28 +01:00
Christian Hesse
ff05d2e95d contrib/logo-color: place screenshots below each other...
... not side by side.
2025-11-13 16:07:28 +01:00
Christian Hesse
0215c54b4f contrib/template-local: split off from Makefile 2025-11-13 16:07:28 +01:00
Christian Hesse
e4eaa31a87 README: install from rsc.eworm.de 2025-11-13 16:07:28 +01:00
Christian Hesse
7c950b5bc2 general/style: make the blockquote darker 2025-11-13 16:07:28 +01:00
Christian Hesse
04fdbf17e7 contrib/template-capsman: split off from Makefile 2025-11-13 16:07:28 +01:00
Christian Hesse
5c7d7e017d fw-addr-lists.d/allow: use rsc.eworm.de in the list 2025-11-13 16:07:28 +01:00
Christian Hesse
6e4e3a50e5 Merge branch 'contrib-html-head-foot' into next 2025-11-13 16:07:28 +01:00
Christian Hesse
324a778671 fw-addr-lists.d/{allow,block}: use short url rsc.eworm.de 2025-11-13 16:07:28 +01:00
Christian Hesse
af340720cd Makefile: clean up and add phony targets 2025-11-13 16:07:28 +01:00
Christian Hesse
b07f155021 contrib/html: add a footer 2025-11-13 16:07:28 +01:00
Christian Hesse
22803175ed Merge branch 'contrib-html' into next 2025-11-13 16:07:28 +01:00
Christian Hesse
13d8e406a1 contrib/notification: add a head with eworm, QR code and caption 2025-11-13 16:07:28 +01:00
Christian Hesse
18782cf247 contrib/Makefile: hide the hint on broken site 2025-11-13 16:07:28 +01:00
Christian Hesse
6cae963934 contrib/logo-color: add a head with eworm, QR code and caption 2025-11-13 16:07:28 +01:00
Christian Hesse
4da39b9cbc contrib/html: add a head with eworm, QR code and caption 2025-11-13 16:07:28 +01:00
21 changed files with 152 additions and 44 deletions

View file

@ -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";
@ -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;

View file

@ -2,38 +2,43 @@
# 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
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 commitinfo docs rsc clean
all: checksums docs rsc
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
contrib/html.sh $< > $@
%.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!' \
< $< > $@
rsc: $(GEN_RSC)
%.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!' \
< $< > $@
%.capsman.rsc: %.template.rsc contrib/template-capsman.sh
contrib/template-capsman.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!' \
< $< > $@
%.local.rsc: %.template.rsc contrib/template-local.sh
contrib/template-local.sh $< > $@
checksums.json: contrib/checksums.sh *.rsc */*.rsc
contrib/checksums.sh > $@
%.wifi.rsc: %.template.rsc contrib/template-wifi.sh
contrib/template-wifi.sh $< > $@
clean:
rm -f $(HTML) checksums.json

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -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,16 +125,16 @@ 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)
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!

View file

@ -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)

6
contrib/commitinfo.sh Executable file
View file

@ -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

View file

@ -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 \
@ -16,4 +18,7 @@ markdown -f toc,idanchor "${1}" | sed \
-e '/<h[1234] /s|-2c-||g' -e '/<h[1234] /s|--26-amp-3b-||g' \
-e '/The above link may be broken on code hosting sites/s|blockquote|blockquote style="display: none;"|'
printf '</body></html>'
sed \
-e "s|__DATE__|${DATE:-$(date --rfc-email)}|" \
-e "s|__VERSION__|${VERSION:-unknown}|" \
< "${0}.d/foot.html"

View file

@ -0,0 +1,4 @@
<p class="foot">RouterOS Scripts documentation generated on <i>__DATE__</i> for <i>__VERSION__</i></p>
</body></html>

View file

@ -4,3 +4,12 @@
<link rel="stylesheet" type="text/css" href="__STYLE__">
<link rel="icon" type="image/png" href="__LOGO__">
</head><body>
<table><tr>
<td><img src="__EWORM__" alt="eworm on meadow" /></td>
<td><img src="__QR_CODE__" alt="QR code: rsc.eworm.de" /></td>
<td class="head"><span class="top">RouterOS Scripts</span><br />
<span class="bottom">a collection of scripts for MikroTik RouterOS</span></td>
</tr></table>
<hr />

View file

@ -6,6 +6,14 @@
<script src="logo-color.d/script.js"></script>
</head><body>
<table><tr>
<td><img src="../general/eworm-meadow.avif" alt="eworm on meadow" /></td>
<td><img src="../general/qr-code.png" alt="QR code: rsc.eworm.de" /></td>
<td class="head"><span class="top">RouterOS Scripts</span><br />
<span class="bottom">a collection of scripts for MikroTik RouterOS</span></td>
</tr></table>
<hr />
<h1>Logo Color Changer</h1>
<p><a href="../README.md">⬅️ Go back to main README</a></p>
@ -29,9 +37,9 @@ something that differentiates? Color it!</p>
<p>Then right-click, click "<i>Take Screenshot</i>" and finally select the
logo and download it.</p>
<p><img src="logo-color.d/browser-01.avif" width=533 height=482 alt="Screenshot Browser 01">
<img src="logo-color.d/browser-02.avif" width=533 height=482 alt="Screenshot Browser 02">
<img src="logo-color.d/browser-03.avif" width=533 height=482 alt="Screenshot Browser 03"></p>
<p><img src="logo-color.d/browser-01.avif" alt="Screenshot Browser 01"></p>
<p><img src="logo-color.d/browser-02.avif" alt="Screenshot Browser 02"></p>
<p><img src="logo-color.d/browser-03.avif" alt="Screenshot Browser 03"></p>
<p>(This example is with
<a href="https://www.mozilla.org/de/firefox/new/">Firefox</a>. The workflow

View file

@ -6,6 +6,14 @@
<script src="notification.d/script.js"></script>
</head><body>
<table><tr>
<td><img src="../general/eworm-meadow.avif" alt="eworm on meadow" /></td>
<td><img src="../general/qr-code.png" alt="QR code: rsc.eworm.de" /></td>
<td class="head"><span class="top">RouterOS Scripts</span><br />
<span class="bottom">a collection of scripts for MikroTik RouterOS</span></td>
</tr></table>
<hr />
<h1>Notification Generator</h1>
<p><a href="../README.md">⬅️ Go back to main README</a></p>

11
contrib/template-capsman.sh Executable file
View file

@ -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}"

11
contrib/template-local.sh Executable file
View file

@ -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}"

11
contrib/template-wifi.sh Executable file
View file

@ -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}"

View file

@ -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)

View file

@ -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
git.eworm.de
# https://rsc.eworm.de/doc/fw-addr-lists.md
rsc.eworm.de

View file

@ -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

BIN
general/eworm-meadow.avif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -18,7 +18,7 @@ a:hover {
blockquote {
border-left: 4px solid #ccc;
padding: 0 10px;
color: #777;
color: #555;
}
code {
margin: 0 2px;
@ -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;
@ -68,6 +72,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;

View file

@ -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
@ -1894,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" . \