aboutsummaryrefslogtreecommitdiffstats
path: root/global-functions
AgeCommit message (Collapse)AuthorFilesLines
2022-05-12notify about freeze of routeros-v6 branchchange-80-v6Gravatar Christian Hesse1-1/+1
2022-04-28global-functions: $LogPrintExit2: handle empty nameGravatar Christian Hesse1-1/+1
(cherry picked from commit f417bcbcd4ab7458f1d0b4265ccda2854ba96b4f)
2022-04-28global-functions: catch runtime error when loading modulesGravatar Christian Hesse1-1/+5
(cherry picked from commit e74bec7e5b62e54d10b1f3ba058868536b35fdc6)
2022-04-28global-functions: validate syntax of modulesGravatar Christian Hesse1-1/+6
(cherry picked from commit 7c8e230521f1a936da034dfc05197fe9434926ed)
2022-04-28global-functions: set $0 with script nameGravatar Christian Hesse1-2/+4
Now that we have some active code at the bottom... (cherry picked from commit 9bc2123ee5bd7af4a8e1ca47696a3f3379d5a028)
2022-04-28global-functions: $ScriptInstallUpdate: support giving comment...Gravatar Christian Hesse1-2/+3
... for new scripts. This allows to have extra settings from the beginning, for example: $ScriptInstallUpdate script1,script2 "base-url=https://example.com/your/custom/repository/" (cherry picked from commit a058c9e1edd8dc4895a64881ee1b495e86fe7510)
2022-03-31introduce backup-partitionchange-79-v6Gravatar Christian Hesse1-1/+1
(cherry picked from commit 71b69fc1898babf490b7dc8e7b0769022d5a2f79)
2022-03-08global-functions: (re-)introduce global $ReadGravatar Christian Hesse1-0/+6
... to interactively read input from user on terminal. (cherry picked from commit 07cc38e973a6037649083494332fbae1946b48b4)
2022-03-04global-functions: update upgrade instructionGravatar Christian Hesse1-2/+1
The branch 'routeros-v7' will not exist forever... And the link is gone already.
2022-03-01global-functions: $FlushEmailQueue: delay if "in-progress"...Gravatar Christian Hesse1-0/+1
Something else is sending a mail... Let's wait and hope the status is not confused. (cherry picked from commit c9b6cee83f686a532183016712c9441e77558917)
2022-02-24global-functions: $DeviceInfo: firmware only if upgrade pendingGravatar Christian Hesse1-1/+2
(cherry picked from commit a00e912bb5c556eaead42a4213c545a34c3959d9)
2022-02-21doc/mod: notify about new documentationchange-78-v6Gravatar Christian Hesse1-1/+1
2022-02-10global-functions: $MkDir: do not act without directoryGravatar Christian Hesse1-0/+4
(cherry picked from commit 7b48b25c271111570d27708ceac437e24f05e6fe)
2022-02-10introduce firmware-upgrade-rebootchange-77-v6Gravatar Christian Hesse1-1/+1
(cherry picked from commit 3c358980cb416c61419a0aaa384ab1db1dab8d29)
2022-02-10netwatch-notify: allow to suppress notification on host downchange-76-v6Gravatar Christian Hesse1-1/+1
(cherry picked from commit c6e581d4f90c9bea0adf405685aa634e264d1f3b)
2022-01-20global-functions: $ScriptInstallUpdate: quote names in log outputGravatar Christian Hesse1-9/+9
(cherry picked from commit 5e32105e7ea4bd357f9826d1ca24ca6e2c455bdc)
2022-01-20global-functions: $ScriptInstallUpdate: give final url in debug outputGravatar Christian Hesse1-7/+6
(cherry picked from commit b4a5d824a268fae9f06ccf61fff4f67c760773ed)
2022-01-17global-functions: $DownloadPackage: handle special case with nameGravatar Christian Hesse1-0/+4
For RouterOS 6.x bundled package version and architecture are swapped. Closes: #21 (cherry picked from commit 1e6931c8e34d5035cb07baa98b57eccbcd4278ab)
2022-01-17global-functions: $DownloadPackage: give url in debug outputGravatar Christian Hesse1-3/+3
(cherry picked from commit 51cd11c80380eac0bfde4649cb30747c198881b7)
2022-01-14global: send notification on 'routeros-v6'change-75-v6Gravatar Christian Hesse1-1/+1
This is mainly to keep the version in 'routeros-v6' and 'main' in sync...
2022-01-07hotspot-to-wpa: support settings from templatechange-74Gravatar Christian Hesse1-1/+1
2022-01-06Migrate configuration and send notification on renameschange-73Gravatar Christian Hesse1-1/+1
2022-01-03introduce netwatch-dnschange-72Gravatar Christian Hesse1-1/+1
2022-01-01update copyright for 2022Gravatar Christian Hesse1-1/+1
2021-12-20global-functions: $RequiredRouterOS: fix warningGravatar Christian Hesse1-5/+4
Passing a boolean does not work... Handle as string.
2021-12-14global-functions: $DownloadPackage: make directory firstGravatar Christian Hesse1-0/+6
The fetch command creates the directory itself, however using $MkDir gives better error message when creating directory fails.
2021-12-14global-functions: $MkDir: log errorGravatar Christian Hesse1-1/+3
2021-12-14global-functions: $NotificationFunctions->"email": do not declare unused ↵Gravatar Christian Hesse1-1/+0
function
2021-12-13global-functions: $DeviceInfo: show license level if availableGravatar Christian Hesse1-0/+3
This now shows license level for CHR. The property is named different for Routerboards. As these have the license bundled to hardware anyway we do not show it there.
2021-12-13README: changes for RouterOS v6change-71Gravatar Christian Hesse1-1/+1
2021-12-10global-functions: $ScriptLock: simplify cleanup codeGravatar Christian Hesse1-5/+2
2021-12-09global-functions: $ScriptLock: remove ticket in a loopGravatar Christian Hesse1-1/+2
This was not required with RouterOS v6, but for any reason removing a ticket may fail with RouterOS v7 in very rare cases. So remove in a loop...
2021-12-09global-functions: $ScriptLock: cleanup in dedicated functionGravatar Christian Hesse1-4/+13
2021-12-09global-functions: $ScriptLock: initialize earlierGravatar Christian Hesse1-4/+3
2021-12-09global-functions: $ScriptLock: initialize empty array on cleanupGravatar Christian Hesse1-2/+2
2021-12-07global-functions: give a hint on RouterOS v7Gravatar Christian Hesse1-0/+6
2021-12-07global-config: load overlay automaticallyGravatar Christian Hesse1-4/+4
2021-12-07README: changes for RouterOS v7change-70Gravatar Christian Hesse1-1/+1
2021-11-22global-functions: $DeviceInfo: add current firmwareGravatar Christian Hesse1-0/+2
(I would like to show a note if the upgrade is pending... But did not find a way to get that information. Is there?)
2021-11-16check-health: support hard lower limit for voltagechange-69Gravatar Christian Hesse1-1/+1
... to detect slow decrease of voltage, for example with UPS.
2021-11-16check-health: indicate voltage increase or decreaseGravatar Christian Hesse1-0/+2
2021-11-16reintroduce global-waitchange-68Gravatar Christian Hesse1-1/+1
2021-11-16global-functions: drop deprecated function $LogPrintExitGravatar Christian Hesse1-9/+0
... which has been replaced by $LogPrintExit2 some time ago.
2021-11-15shorten modules directory name (global-functions.d -> mod)change-67Gravatar Christian Hesse1-3/+3
2021-11-15bridge-port-to-default -> global-functions.d/bridge-port-tochange-66Gravatar Christian Hesse1-1/+1
2021-11-12add global-functions.d/bridge-port-vlanchange-65Gravatar Christian Hesse1-1/+1
2021-10-01global-functions: $NotificationFunctions->"email": check for valid settingsGravatar Christian Hesse1-1/+2
No need to queue mails if 'address' and 'from' are not specified...
2021-10-01global-functions: $DeviceInfo: do not fail on non-RouterBoard with ROS 7.xGravatar Christian Hesse1-1/+4
2021-09-21global-functions.d/inspectvar: add $InspectVar...change-64Gravatar Christian Hesse1-1/+1
to inspect variables. This is useful for variables with (nested) arrays, for example inspecting $NetwatchNotify (from netwatch-notify): [admin@Mikrotik] > $InspectVar $NetwatchNotify -type-> array -key-> quad-one -type-> array -key-> count -type-> num -value-> 0 -key-> notified -type-> bool -value-> false -key-> parent -type-> nothing -key-> resolve-failed -type-> nothing -key-> since -type-> nothing -key-> example.com -type-> array -key-> count -type-> num -value-> 0 -key-> notified -type-> bool -value-> false -key-> parent -type-> str -value-> quad-one -key-> resolve-failed -type-> nothing -key-> since -type-> nothing
2021-09-21global-functions: notify about move of $IPCalc and $ScriptRunOnce to moduleschange-63Gravatar Christian Hesse1-1/+1
Just install with... $ScriptInstallUpdate global-functions.d/ipcalc ... and/or... $ScriptInstallUpdate global-functions.d/scriptrunonce ... and use the functions as before.
2021-09-21global-functions: move $ScriptRunOnce to optional moduleGravatar Christian Hesse1-41/+0
2021-09-21global-functions: move $IPCalc to optional moduleGravatar Christian Hesse1-30/+0
2021-09-08global-functions*: syntax for ROS 7.xrouteros-7.1rc3Gravatar Christian Hesse1-6/+6
Strings with escape sequence have to be enclosed in parentheses. Looks like RouterOS 7.x is stricter here...
2021-09-02global-functions: $CertificateAvailable: drop version checkGravatar Christian Hesse1-5/+0
2021-09-01global-functions: $RequiredRouterOS: allow to use without warningGravatar Christian Hesse1-6/+9
2021-08-31global-functions: $ScriptLock: handle array by indexGravatar Christian Hesse1-17/+50
This should mitigate race conditions while rewriting the array.
2021-08-31global-functions: $ScriptLock: do not store but calculate job countGravatar Christian Hesse1-7/+10
This should mitigate some more race conditions.
2021-07-25global-functions: $ScriptLock: check for successful removal of ticketGravatar Christian Hesse1-5/+9
The script is already locked, so there is no second script to remove a ticket at the same time. However a new script can add a new ticket and overwrite the removal... Thus check for successful removal anyway.
2021-07-15global-functions: $ScriptLock: fix off-by-one check...Gravatar Ben Harris1-1/+1
... for stale job tickets Signed-off-by: Christian Hesse <mail@eworm.de>
2021-07-10global-functions: introduce $ScriptRunOncechange-62Gravatar Christian Hesse1-1/+42
2021-07-09global-functions: $ScriptInstallUpdate: add error handling for changelogGravatar Christian Hesse1-1/+5
2021-07-09finally remove old scriptschange-61Gravatar Christian Hesse1-1/+1
2021-07-09global-functions: $ScriptInstallUpdate: add error handling for migrationGravatar Christian Hesse1-1/+5
2021-07-09global-functions: $ScriptInstallUpdate: drop unused variableGravatar Christian Hesse1-1/+0
This was a left-over from re-run message.
2021-07-09global-functions: $ScriptInstallUpdate: drop the migration patternGravatar Christian Hesse1-1/+1
2021-07-09netwatch-notify: implement pre-down hookchange-60Gravatar Christian Hesse1-1/+1
2021-07-09global-functions: $ScriptLock: drop variable, just returnGravatar Christian Hesse1-3/+2
2021-07-08global-functions: $ScriptLock: make ticket management more reliableGravatar Christian Hesse1-10/+27
2021-07-01check-routeros-update: allow update for capchange-59Gravatar Michael Gisbers1-1/+1
If CAPsMAN is running on a device with just 16MB flash downloading the packages is not possible (or at least lost at reboot). So allow a CAP to update with opt-in.
2021-07-01global-functions: $ScriptLock: use hex string for ticketGravatar Christian Hesse1-2/+2
Does not matter what the ticket looks like, but using hex string it is not converted to number.
2021-07-01global-functions: $ScriptLock: use a limit on lock...Gravatar Christian Hesse1-4/+6
... to make sure it does not lock forever.
2021-06-30global-functions: $ScriptLock: allow to wait for lockGravatar Christian Hesse1-0/+6
2021-06-30global-functions: $ScriptLock: rework with ticketsGravatar Christian Hesse1-6/+40
Getting the order right is not easy... We use a global variable to store "tickets" in an array. Based on that scripts know their order.
2021-06-30global-functions: $ScriptLock: check if script is runningGravatar Christian Hesse1-0/+4
2021-06-30global-functions: $ScriptLock: check if script existsGravatar Christian Hesse1-0/+4
2021-06-30global-functions: $ScriptLock: allow to return...Gravatar Christian Hesse1-3/+8
... with true instead of breaking with error.
2021-06-30global-functions: $LogPrintExit2: allow origin-specific debugGravatar Christian Hesse1-1/+6
Add something like this in global-config-overlay: :global PrintDebugOverride { "dhcp-to-dns"=true; }
2021-06-28global-functions: $GetRandomNumber: use $HexToNumGravatar Christian Hesse1-11/+2
2021-06-28global-functions: $GetRandom20CharHex: do not remove otp...Gravatar Christian Hesse1-3/+1
... as it is instantly invalid anyway.
2021-06-24global-functions: $RandomDelay: allow to specify unit in second argumentGravatar Christian Hesse1-1/+2
2021-06-23hotspot-to-wpa: add optional cleanup scriptchange-58Gravatar Christian Hesse1-1/+1
2021-06-23celebrating the 1.000th commit - hooray!change-57Gravatar Christian Hesse1-1/+1
2021-06-23notify about tag in scriptschange-56Gravatar Christian Hesse1-1/+1
2021-06-21global-functions: $MkDir: abuse smb share to create directoryGravatar Christian Hesse1-7/+5
The smb feature is provided by system package... So we have it anyway. It gives some benefits compared to abusing fetch: * It is faster! * No need to alter, enable and restore a service! (The share is created disabled.) * Firewall rules can not break this. * No temporary file is created. * Less code! Let's hope we do not introduce new breakage. Closes #14
2021-06-17global-functions: $NotificationFunctions->"email": support removing attachmentGravatar Christian Hesse1-2/+8
2021-06-16global-functions: $HexToNum: properly handle capital charactersGravatar Christian Hesse1-2/+2
2021-06-15global-functions: introduce $HexToNumGravatar Christian Hesse1-0/+16
2021-06-10global-functions: $SendEMail2: fix name in arrayGravatar Christian Hesse1-1/+1
This did not send anything at all... Fixes #12
2021-06-09log-forward: implement reverse logic to include messages...change-55Gravatar Christian Hesse1-1/+1
... even if a filter matches to exclude them. Let's have an example: :global LogForwardFilter "(debug|info)"; :global LogForwardInclude "account"; This will forward everything about topic *account* (login, logout, failed login, ...) - even with topic *info*.
2021-06-08global-functions: make Telegram notifications a modulechange-54Gravatar Christian Hesse1-157/+1
2021-06-08global-functions: implement notifications via Matrixchange-53Gravatar Michael Gisbers1-1/+1
Matrix is an open network for secure, decentralized communication - and it has a web api. A warning on message type: Using 'm.notice' breaks rendering on Element for Android (no fixed width font) and does not pop up desktop notification. Thus we use 'm.text'. Should be safe as we do not send the messages in response to other messages. https://matrix.org/
2021-06-08global-functions: make notification functions extensibleGravatar Christian Hesse1-133/+159
This allows to add notification functions without overloading functions. Just add it into the array: :set ($NotificationFunctions->"fancy-messager") do={ # notification magic here... } Adding functions $SendFancyMessager and/or $SendFancyMessager2 may be useful. Optionally a function to flush a queue may be required. A BIG FAT WARNING about function parameters: Calling a function from array results in $0 for the function name being skipped. That's why we have to add the function name manually!
2021-06-08global-functions: $ScriptInstallUpdate: drop the re-run messageGravatar Christian Hesse1-5/+0
This makes sense just rarely... For important changes we have the migration mechanism. So just drop this.
2021-06-08global-functions: $ScriptInstallUpdate: reload configuration laterGravatar Christian Hesse1-7/+12
2021-06-08global-functions: $ScriptInstallUpdate: reload functions just onceGravatar Christian Hesse1-6/+11
2021-06-08global-functions: support loading modulesGravatar Christian Hesse1-1/+6
If script's name starts with "global-functions.d/" it is handled as module: * loaded at startup * triggers reload on update
2021-05-19global-functions: $DownloadPackage: quote package nameGravatar Christian Hesse1-2/+2
2021-05-18update Let's Encrypt trust chainchange-52Gravatar Christian Hesse1-1/+1
Drop 'DST Root CA X3', use 'ISRG Root X1' instead. The migration code makes sure that... * the intermediate certificate 'R3' is signed by 'ISRG Root X1' * 'ISRG Root X1' is self-signed, not cross-signed by 'DST Root CA X3' * 'DST Root CA X3' is finally gone
2021-05-17add 'ipsec-to-dns'change-51Gravatar Christian Hesse1-1/+1
2021-05-06netwatch-notify: support dynamic address updatechange-50Gravatar Christian Hesse1-1/+1