mirror of
https://github.com/eworm-de/routeros-scripts.git
synced 2025-12-06 01:49:28 +00:00
Compare commits
24 commits
7b07dd86de
...
c3428b6a2e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c3428b6a2e | ||
|
|
6e57826bbe | ||
|
|
576f41fc86 | ||
|
|
a9076f760d | ||
|
|
cb82d9b271 | ||
|
|
0a4b963c26 | ||
|
|
b4c3f6c58f | ||
|
|
fbeb1b53bb | ||
|
|
f3e5ba5024 | ||
|
|
ff05d2e95d | ||
|
|
0215c54b4f | ||
|
|
e4eaa31a87 | ||
|
|
7c950b5bc2 | ||
|
|
04fdbf17e7 | ||
|
|
5c7d7e017d | ||
|
|
6e4e3a50e5 | ||
|
|
324a778671 | ||
|
|
af340720cd | ||
|
|
b07f155021 | ||
|
|
22803175ed | ||
|
|
13d8e406a1 | ||
|
|
18782cf247 | ||
|
|
6cae963934 | ||
|
|
4da39b9cbc |
21 changed files with 152 additions and 44 deletions
|
|
@ -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;
|
||||
|
|
|
|||
51
Makefile
51
Makefile
|
|
@ -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 |
BIN
README.d/05-run-scripts.avif
Normal file
BIN
README.d/05-run-scripts.avif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
10
README.md
10
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";
|
||||
|
||||

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

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

|
||||

|
||||
|
||||
> 💡️ **Hint**: You see complaints regarding syntax errors? Most likely the
|
||||
> RouterOS on your device is too old. Check for updates!
|
||||
|
|
|
|||
|
|
@ -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
6
contrib/commitinfo.sh
Executable 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
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
4
contrib/html.sh.d/foot.html
Normal file
4
contrib/html.sh.d/foot.html
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
<p class="foot">RouterOS Scripts documentation generated on <i>__DATE__</i> for <i>__VERSION__</i></p>
|
||||
|
||||
</body></html>
|
||||
|
|
@ -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 />
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
11
contrib/template-capsman.sh
Executable 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
11
contrib/template-local.sh
Executable 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
11
contrib/template-wifi.sh
Executable 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}"
|
||||
|
|
@ -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;
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
BIN
general/eworm-meadow.avif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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" . \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue