aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
3 daysmod/notification-telegram: $FlushTelegramQueue: check for cert, againHEADmainGravatar Christian Hesse1-0/+6
Chances are that messages have been queued before system was fully up or connected. Thus the certificate may be missing, and it should be checked again for on flush.
7 dayslog-forward: always use memo symbol...Gravatar Christian Hesse1-1/+1
... and add warning sign on top.
8 daysfw-addr-lists: calculate branch after post-processing...Gravatar Christian Hesse1-1/+4
... as branch will likely change, and we want to avoid duplicates. 😉
8 daysfw-addr-lists: do not use IPv6 net addresses smaller /64Gravatar Christian Hesse1-2/+8
This should reduce the number of addresses in list by aggregating them, and also fix addresses with host part set (like 2001:470:1:fb5::2a0/64, which should be 2001:470:1:fb5::/64 really). The latter caused new warnings with RouterOS 7.21beta2.
8 daysmod/ssh-keys-import: handle new parameterGravatar Christian Hesse2-3/+6
With RouterOS 7.21beta2 the user SSH keys "key-owner" field was renamed to "info". Either of both is displayed in red by syntax highlighting, but it works anyway.
14 daysfw-addr-lists: check last character of line for JSONGravatar Christian Hesse1-1/+1
This is not a proof, but a line also ending with a curly bracket has higher probability of being valid JSON. Better safe than sorry... We are suffering a CVE in RouterOS: https://www.cve.org/CVERecord?id=CVE-2025-10948
2025-09-30packages-update: fix condition when checking for schedulerGravatar Christian Hesse1-1/+1
This broke with commit 6b0c9ab17d2e7e3693cebf281e5300d1e4de3446...
2025-09-25generate valid HTML, including head & styleGravatar Christian Hesse3-2/+26
2025-09-25mod/ssh-keys-import: $SSHKeysImportFile: fix file exists condition...Gravatar Miquel Bonastre1-1/+1
... which broke in commit 80aed200fd7400e4a4958ba314912488780be635.
2025-09-25global-functions: $WaitForFile: try less expensive operationGravatar Christian Hesse1-7/+4
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-15packages-update: exit early if scheduler existsGravatar Christian Hesse1-0/+5
2025-08-26Merge branch 'check-health' into nextGravatar Christian Hesse4-13/+16
2025-08-25check-health.d/voltage: use script name for origin in notificationGravatar Christian Hesse1-4/+5
2025-08-25check-health.d/temperature: use script name for origin in notificationGravatar Christian Hesse1-3/+4
2025-08-25check-health.d/state: use script name for origin in notificationGravatar Christian Hesse1-3/+4
2025-08-25check-health: pass script name to pluginGravatar Christian Hesse1-1/+1
2025-08-25check-health: fix variable nameGravatar Christian Hesse1-2/+2
2025-08-16global-functions: $CertificateAvailable: properly handle duplicate CNGravatar Christian Hesse1-0/+5
There are CA certificates with identical CommonName out there... 🤪 Let's handle these. [admin@MikroTik] > /certificate/print proplist=common-name,skid where common-name="GlobalSign"; Flags: T - TRUSTED Columns: COMMON-NAME, SKID # COMMON-NAME SKID 0 T GlobalSign 8FF04B7FA82E4524AE4D50FA639A8BDEE2DD1BBC 1 T GlobalSign 3DE629489BEA07CA21444A26DE6EDED283D09F59 2 T GlobalSign AE6C05A39313E2A2E7E2D71CD6C7F07FC86753A0 3 T GlobalSign 54B07BAD45B8E2407FFB0A6EFBBE33C93CA384D5
2025-07-28global-functions: $SymbolByUnicodeName: allow to add more symbols...Gravatar Christian Hesse1-2/+4
... for example from a module. Add a script `mod/symbols-extra` with something like: :global SymbolsExtra; :set ($SymbolsExtra->"rocket") "\F0\9F\9A\80";
2025-07-21netwatch-notify: increase the address-list timeout even furtherGravatar Christian Hesse1-2/+2
2025-07-21netwatch-notify: give the number of failures...Gravatar Christian Hesse1-1/+1
... to indicated this happened several times.
2025-07-07accesslist-duplicates: print without pagingGravatar Christian Hesse4-6/+6
2025-06-25netwatch-dns: fix indentionGravatar Christian Hesse1-1/+1
2025-06-25netwatch-dns: retry doh server...Gravatar Christian Hesse1-5/+7
... for more resilience on bad connectivity or saturated link.
2025-06-23Merge branch 'file' into nextrouteros-7.20beta4-1Gravatar Christian Hesse1-4/+22
2025-06-23global-functions: $FileGet: mitigate race with file propertiesGravatar Christian Hesse1-0/+6
RouterOS is suffering a race condition, where a file exists, but its properties are not (yet) available. This is handled in $WaitForFile. This passes an interval of zero to $WaitForFile, as does not wait for the file to exist, but wants to avoid the race only.
2025-06-23global-functions: $WaitForFile: (mostly) revert changesGravatar Christian Hesse1-4/+16
This (mostly) reverts commits 0e00a228d67d77fadc80eee2df04c2cec25b8db8 and e08bb2192dfd22b25652553f28304818a3602331. This is required for RouterOS 7.20beta4. That fixed recursive find for files, and (again, or still?) suffers timing (and thus racing) issues getting file properties. This breaks RouterOS 7.20beta2 again, so that specific version is not supported. Just update...
2025-06-20packages-update: convert to time before comparing...Gravatar Christian Hesse1-2/+3
... to avoid: packages-update: Script 'packages-update' exited with error: Script Error: cannot compare if truth value is more than or equal to ip address
2025-06-11doc/fw-addr-lists: add a warning on possible subsystem crashGravatar Christian Hesse1-1/+4
2025-06-11fw-addr-lists: delay on possible scripting subsystem crashGravatar Christian Hesse1-0/+6
This happens in :convert when a list is way too large. Let's use $LogPrintOnce here. If the scripting subsystem really crashes the message will be purged from $LogPrintOnceMessages anyway (as all global variables are lost).
2025-06-11capsman-download-packages: revert changes for "new functionality"Gravatar Christian Hesse4-13/+13
(Though we keep the quoting for type.) Well, turned out this functionality is for `/file/print` only, but does not work with `/file/find`. 🫣🥴 This reverts commit 15fd522d3db507cc7c22af9cd59ff85d41a5be6f.
2025-06-04update list of contributorsGravatar Christian Hesse1-0/+1
2025-06-04check-routeros-update: remove a stale schedulerGravatar Christian Hesse1-3/+9
2025-06-04packages-update: support deferred reboot with longer intervalGravatar Christian Hesse2-5/+10
2025-06-04Merge branch 'file' into nextrouteros-7.20beta2-1Gravatar Christian Hesse9-67/+107
2025-06-04capsman-download-packages: adopt new functionality from file menuGravatar Christian Hesse4-13/+13
2025-06-04capsman-download-packages: use $FileGet ...Gravatar Christian Hesse3-3/+6
... to work around restrictions in new file handling.
2025-06-04telegram-chat: use $FileExists ...Gravatar Christian Hesse1-1/+2
... to work around restrictions in new file handling.
2025-06-04mod/ssh-keys-import: use $FileExists ...Gravatar Christian Hesse1-2/+2
... to work around restrictions in new file handling.
2025-06-04mod/notification-email: use $RmFileGravatar Christian Hesse1-1/+2
2025-06-04mod/notification-email: use $FileExists ...Gravatar Christian Hesse1-1/+2
... to work around restrictions in new file handling.
2025-06-04backup-email: add a comment why files are not removedGravatar Christian Hesse1-0/+1
2025-06-04backup-email: check for .conf fileGravatar Christian Hesse1-1/+2
2025-06-04backup-email: use :retry and $FileExists ...Gravatar Christian Hesse1-10/+11
... to work around restrictions in new file handling.
2025-06-04global-functions: $DownloadPackage: use $FileExists ...Gravatar Christian Hesse1-2/+3
... to work around restrictions in new file handling.
2025-06-04global-functions: introduce $FileExistsGravatar Christian Hesse1-0/+24
2025-06-04global-functions: $WaitForFile: use :retry for simplification, ...Gravatar Christian Hesse1-8/+6
... and to work around restrictions in new file handling.
2025-06-04global-functions: $WaitForFile: drop the workaroundrouteros-7.18rc1-2Gravatar Christian Hesse1-9/+0
This was fixed in RouterOS 7.18rc1, so should be ok to remove now.
2025-06-04global-functions: $RmFile: use $FileGet ...Gravatar Christian Hesse1-9/+10
... to work around restrictions in new file handling.
2025-06-04global-functions: $RmDir: use $FileGet ...Gravatar Christian Hesse1-9/+10
... to work around restrictions in new file handling.
2025-06-04global-functions: $MkDir: use $FileGet ...Gravatar Christian Hesse1-1/+3
... to work around restrictions in new file handling.
2025-06-03global-functions: introduce $FileGetGravatar Christian Hesse1-0/+13
2025-06-03Merge branch 'builtin-certs' into nextGravatar Christian Hesse3-11/+32
2025-06-03INITIAL-COMMANDS: use builtin certificates if possibleGravatar Christian Hesse1-10/+16
2025-05-28global-functions: $CertificateAvailable: try to use builtin certificatesGravatar Christian Hesse1-0/+5
The builtin certificates were introduced with RouterOS 7.19, so requires this hacky :parse workaround.
2025-05-28README: add a paragraph and link to jumpGravatar Christian Hesse1-2/+5
2025-05-28README: give a hint on builtin certificate storeGravatar Christian Hesse1-1/+8
I guess this should become the default any time in future...
2025-05-23telegram-chat: rename variable...Gravatar Christian Hesse1-2/+2
... to better describe the use.
2025-05-23telegram-chat: fix detection of repliesGravatar Christian Hesse1-1/+1
2025-05-23global-functions: $ScriptInstallUpdate: fix syntax errorGravatar Christian Hesse1-1/+1
2025-05-23fix the trust state for certificatesrouteros-7.19-1change-138Gravatar Christian Hesse2-1/+3
RouterOS 7.19 is suffering an issue with certificate store, where the trust state is not available correctly. This effects certificates imported a long time ago, with RouterOS 7.4 or older. Fixing trust state for all certificates by re-setting the trust state... (Reported as SUP-188791...)
2025-05-22DEBUG: fix typoGravatar Christian Hesse1-1/+1
2025-05-22telegram-chat: support debug output for updates in JSONGravatar Christian Hesse1-0/+3
2025-05-22telegram-chat: support trusted group chat idsGravatar Christian Hesse1-1/+3
But be warned: Adding a person to a trusted group will give her/him administrative control over the device(s) - without changes on the device itself! On the other hand... Removing permissions is easily done by removing a person from a group. Closes: https://github.com/eworm-de/routeros-scripts/issues/101
2025-05-22mod/notification-telegram: fix indentionGravatar Christian Hesse1-1/+1
2025-05-22fw-addr-lists: for IPv6 the CIDR is always expectedGravatar Christian Hesse1-2/+2
2025-05-22mod/notification-email: add the link symbolGravatar Christian Hesse1-1/+2
2025-05-22mod/notification-email: properly truncate the bodyGravatar Christian Hesse1-3/+13
Truned out that the size limit for e-mail message/body is anywhere just below 64kB... So truncate at about 62.000 bytes.
2025-05-22mod/notification-email: add error handling when sending mailGravatar Christian Hesse1-25/+30
2025-05-22mod/inspectvar: replace only when matchingGravatar Christian Hesse1-1/+6
2025-05-22mod/inspectvar: remove CR, replace LFGravatar Christian Hesse1-0/+2
2025-05-22mod/inspectvar: print the length for stringsGravatar Christian Hesse1-0/+5
2025-05-22mod/inspectvar: use $CharacterMultiplyGravatar Christian Hesse1-5/+3
2025-05-22Merge branch 'onerror' into nextGravatar Christian Hesse23-174/+175
2025-05-22update-tunnelbroker: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-22unattended-lte-firmware-upgrade: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-6/+6
2025-05-22telegram-chat: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-22sms-forward: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-22netwatch-notify: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-6/+6
2025-05-22netwatch-dns: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-4/+4
2025-05-22mod/ssh-keys-import: :do ... on-error=... -> ... well... - fix condition 🥴Gravatar Christian Hesse1-3/+1
2025-05-21mod/ssh-keys-import: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21mod/scriptrunonce: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21mode-button: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21mod/notification-gotify: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-6/+6
2025-05-21mod/notification-matrix: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-21/+21
2025-05-21mod/notification-ntfy: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-6/+6
2025-05-21mod/notification-telegram: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-9/+9
2025-05-21lease-script: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21gps-track: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21global-functions: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21global-functions: $ValidateSyntax: add debug outputGravatar Christian Hesse1-0/+3
2025-05-21global-functions: $ValidateSyntax: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-2/+2
2025-05-21global-functions: $ScriptInstallUpdate: :do ... on-error=... -> :onerror ... ↵Gravatar Christian Hesse1-15/+13
do=...
2025-05-21global-functions: $RmFile: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21global-functions: $RmDir: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21global-functions: $MkDir: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-6/+6
2025-05-21global-functions: $GetMacVendor: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21global-functions: $FetchHuge: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3
2025-05-21global-functions: $DownloadPackage: :do ... on-error=... -> :onerror ... do=...Gravatar Christian Hesse1-3/+3