Compare commits

...

6 commits

Author SHA1 Message Date
Christian Hesse
fb3534c63f global-functions: $CertificateAvailable: drop the compatibility workaround...
... and make it depend in RouterOS 7.19 and its builtin certificates.
2025-09-25 10:33:45 +02:00
Christian Hesse
78a4efcc83 INITIAL-COMMANDS: drop the compatibility workaround...
... and make it depend in RouterOS 7.19 and its builtin certificates.
2025-09-25 10:33:45 +02:00
Christian Hesse
14b51d96b0 generate valid HTML, including head & style 2025-09-25 10:25:20 +02:00
Miquel Bonastre
2c715096b9 mod/ssh-keys-import: $SSHKeysImportFile: fix file exists condition...
... which broke in commit 80aed200fd.
2025-09-25 10:24:07 +02:00
Christian Hesse
2773fef9d8 global-functions: $WaitForFile: try less expensive operation
Checking a specific file is less expensive operation than finding one,
especially when on hardware with huge storage and lots of files (like
RDS). We have to keep the find command in the latter loop, though.
2025-09-25 10:24:07 +02:00
Christian Hesse
6b0c9ab17d packages-update: exit early if scheduler exists 2025-09-15 13:18:30 +02:00
8 changed files with 43 additions and 17 deletions

View file

@ -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)
@ -22,8 +22,8 @@ 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={
:if (!([ /certificate/settings/get builtin-trust-anchors ] = "trusted" && \
[ :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;

View file

@ -11,8 +11,8 @@ HTML = $(MARKDOWN:.md=.html)
all: $(CAPSMAN) $(LOCAL) $(WIFI) $(HTML) checksums.json
%.html: %.md Makefile
markdown $< | sed 's/href="\([-_\./[:alnum:]]*\)\.md"/href="\1.html"/g' > $@
%.html: %.md 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|' \

View file

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

9
contrib/html.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/sh
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 '/<h[1234] /s| id="\(.*\)">| id="\L\1">|'
printf '</body></html>'

View file

@ -0,0 +1,15 @@
<!DOCTYPE html><html lang="en">
<head><title>RouterOS Scripts :: __TITLE__</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style>
body { font-family: sans-serif; }
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; }
pre { background-color: #f8f8f8; border: 1px solid #ccc; overflow: auto; padding: 6px 10px; border-radius: 3px; }
pre code { margin: 0; padding: 0; border: 0; }
</style>
<link rel="icon" href="/logo.png" type="image/png">
</head><body>

View file

@ -4,7 +4,7 @@
# Michael Gisbers <michael@gisbers.de>
# https://rsc.eworm.de/COPYING.md
#
# requires RouterOS, version=7.15
# requires RouterOS, version=7.19
# requires device-mode, fetch, scheduler
#
# global functions
@ -121,8 +121,8 @@
:return false;
}
:if (([ /certificate/settings/get ]->"builtin-trust-anchors") = "trusted" && \
[[ :parse (":return [ :len [ /certificate/builtin/find where common-name=\"" . $CommonName . "\" ] ]") ]] > 0) do={
:if ([ /certificate/settings/get builtin-trust-anchors ] = "trusted" && \
[ :len [ /certificate/builtin/find where common-name=$CommonName ] ] > 0) do={
:return true;
}
@ -1787,14 +1787,11 @@
:local Delay ([ $MAX [ $EitherOr $WaitTime 2s ] 100ms ] / 9);
:do {
:retry {
:if ([ :len [ /file/find where name=$FileName ] ] = 0) do={
:error false;
}
:retry {
/file/get $FileName;
:return true;
} delay=$Delay max=10;
} on-error={
:return false;
}
} on-error={ }
:while ([ :len [ /file/find where name=$FileName ] ] > 0) do={
:do {

View file

@ -85,7 +85,7 @@
:return false;
}
:if ([ $FileExists $FileName ] = true) do={
:if ([ $FileExists $FileName ] = false) do={
$LogPrint warning $0 ("File '" . $FileName . "' does not exist.");
:return false;
}

View file

@ -41,6 +41,11 @@
/system/reboot;
}
:if ([ /system/scheduler/find where name="_RebootForUpdate" ] > 0) do={
$LogPrint warning $ScriptName ("Scheduler for reboot already exists.");
:return false;
}
:local Interval [ $IfThenElse ([ :totime $PackagesUpdateDeferReboot ] >= 1d) \
$PackagesUpdateDeferReboot 1d ];
:local StartTime [ :tostr [ :totime (10800 + [ $GetRandomNumber 7200 ]) ] ];