aboutsummaryrefslogtreecommitdiffstats
path: root/global-functions
AgeCommit message (Expand)AuthorFilesLines
2022-06-17global-functions: $WaitTimeSync: drop declaration of unused functionGravatar Christian Hesse1-1/+0
2022-06-16fix typos: 'at lease' -> 'at least'Gravatar Christian Hesse1-2/+2
2022-06-15drop script 'rotate-ntp'•••For RouterOS 6.x a separate package 'ntp' exists. This adds server functionality, but allows ip addresses for the client only. I added the script 'rotate-ntp' to update addresses from names... Now with RouterOS 7.x there's no extra package and the limitation does no longer exist. So let's just drop the script. This adds migration code, that... * removes the script from configuration * removes a scheduler from configuration * sets the configured ntp pool name for ntp client change-81Gravatar Christian Hesse1-9/+1
2022-05-20log-forward: change symbol for notificationGravatar Christian Hesse1-0/+1
2022-05-17global-functions: $FlushEmailQueue: return if time is not synced•••The local system time is used in the mail header. We do not want the mails to be sent in the past, so return early (and thus wait for time being synced). Gravatar Christian Hesse1-0/+6
2022-05-12notify about freeze of routeros-v7 branchchange-80Gravatar Christian Hesse1-1/+1
2022-05-11global-functions: RouterOS v7 path syntaxGravatar Christian Hesse1-83/+78
2022-04-28global-functions: $LogPrintExit2: handle empty nameGravatar Christian Hesse1-1/+1
2022-04-28global-functions: catch runtime error when loading modulesGravatar Christian Hesse1-1/+5
2022-04-28global-functions: validate syntax of modulesGravatar Christian Hesse1-1/+6
2022-04-28global-functions: set $0 with script name•••Now that we have some active code at the bottom... Gravatar Christian Hesse1-2/+4
2022-04-26global-functions: $DefaultRouteIsReachable: update properties for ROS 7.xrouteros-7.x-6Gravatar Christian Hesse1-1/+1
2022-04-26global-functions: $ScriptInstallUpdate: support giving comment...•••... 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/" Gravatar Christian Hesse1-2/+3
2022-03-30introduce backup-partitionchange-79Gravatar Christian Hesse1-1/+1
2022-03-08global-functions: (re-)introduce global $Read•••... to interactively read input from user on terminal. Gravatar Christian Hesse1-0/+6
2022-03-01global-functions: $FlushEmailQueue: delay if "in-progress"...•••Something else is sending a mail... Let's wait and hope the status is not confused. Gravatar Christian Hesse1-0/+1
2022-02-24global-functions: $DeviceInfo: firmware only if upgrade pendingGravatar Christian Hesse1-1/+2
2022-02-21doc/mod: notify about new documentationchange-78Gravatar Christian Hesse1-1/+1
2022-02-10global-functions: $DownloadPackage: handle special cases•••This is a RouterOS v7 only change! * Revert commit 1e6931c8e34d5035cb07baa98b57eccbcd4278ab (but keep the cherry-picked one in branch routeros-v6). * Drop special case 'routeros-$arch', which no longer exists. * Update package name 'system' to 'routeros'. This should be the correct name, and is expected by CAPsMAN. No idea why package-name property for the file is different... Gravatar Christian Hesse1-7/+3
2022-02-10global-functions: $MkDir: do not act without directoryGravatar Christian Hesse1-0/+4
2022-02-10introduce firmware-upgrade-rebootchange-77Gravatar Christian Hesse1-1/+1
2022-02-10netwatch-notify: allow to suppress notification on host downchange-76Gravatar Christian Hesse1-1/+1
2022-01-20global-functions: $ScriptInstallUpdate: quote names in log outputGravatar Christian Hesse1-9/+9
2022-01-20global-functions: $ScriptInstallUpdate: give final url in debug outputGravatar Christian Hesse1-7/+6
2022-01-17global-functions: $DownloadPackage: handle special case with name•••For RouterOS 6.x bundled package version and architecture are swapped. Closes: #21 Gravatar Christian Hesse1-0/+4
2022-01-17global-functions: $DownloadPackage: give url in debug outputGravatar Christian Hesse1-3/+3
2022-01-14global: notify about merging 'routeros-v7' into 'main'change-75Gravatar Christian Hesse1-1/+1
2022-01-14global-functions: bump the required version for RouterOS 7.x•••... but keep a warning when running RouterOS v6. Gravatar Christian Hesse1-5/+4
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 warning•••Passing a boolean does not work... Handle as string. Gravatar Christian Hesse1-5/+4
2021-12-14global-functions: $DownloadPackage: make directory first•••The fetch command creates the directory itself, however using $MkDir gives better error message when creating directory fails. Gravatar Christian Hesse1-0/+6
2021-12-14global-functions: $MkDir: log errorGravatar Christian Hesse1-1/+3
2021-12-14global-functions: $NotificationFunctions->"email": do not declare unused func...Gravatar Christian Hesse1-1/+0
2021-12-13global-functions: $DeviceInfo: show license level if available•••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. Gravatar Christian Hesse1-0/+3
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 loop•••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... Gravatar Christian Hesse1-1/+2
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 firmware•••(I would like to show a note if the upgrade is pending... But did not find a way to get that information. Is there?) Gravatar Christian Hesse1-0/+2
2021-11-16check-health: support hard lower limit for voltage•••... to detect slow decrease of voltage, for example with UPS. change-69Gravatar Christian Hesse1-1/+1
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 $LogPrintExit•••... which has been replaced by $LogPrintExit2 some time ago. Gravatar Christian Hesse1-9/+0
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 settings•••No need to queue mails if 'address' and 'from' are not specified... Gravatar Christian Hesse1-1/+2
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...•••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 change-64Gravatar Christian Hesse1-1/+1
2021-09-21global-functions: notify about move of $IPCalc and $ScriptRunOnce to modules•••Just install with... $ScriptInstallUpdate global-functions.d/ipcalc ... and/or... $ScriptInstallUpdate global-functions.d/scriptrunonce ... and use the functions as before. change-63Gravatar Christian Hesse1-1/+1
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.x•••Strings with escape sequence have to be enclosed in parentheses. Looks like RouterOS 7.x is stricter here... routeros-7.1rc3Gravatar Christian Hesse1-6/+6
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 index•••This should mitigate race conditions while rewriting the array. Gravatar Christian Hesse1-17/+50
2021-08-31global-functions: $ScriptLock: do not store but calculate job count•••This should mitigate some more race conditions. Gravatar Christian Hesse1-7/+10
2021-07-25global-functions: $ScriptLock: check for successful removal of ticket•••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. Gravatar Christian Hesse1-5/+9
2021-07-15global-functions: $ScriptLock: fix off-by-one check...•••... for stale job tickets Signed-off-by: Christian Hesse <mail@eworm.de> Gravatar Ben Harris1-1/+1
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 variable•••This was a left-over from re-run message. Gravatar Christian Hesse1-1/+0
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 cap•••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. change-59Gravatar Michael Gisbers1-1/+1
2021-07-01global-functions: $ScriptLock: use hex string for ticket•••Does not matter what the ticket looks like, but using hex string it is not converted to number. Gravatar Christian Hesse1-2/+2
2021-07-01global-functions: $ScriptLock: use a limit on lock...•••... to make sure it does not lock forever. Gravatar Christian Hesse1-4/+6
2021-06-30global-functions: $ScriptLock: allow to wait for lockGravatar Christian Hesse1-0/+6
2021-06-30global-functions: $ScriptLock: rework with tickets•••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. Gravatar Christian Hesse1-6/+40
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...•••... with true instead of breaking with error. Gravatar Christian Hesse1-3/+8
2021-06-30global-functions: $LogPrintExit2: allow origin-specific debug•••Add something like this in global-config-overlay: :global PrintDebugOverride { "dhcp-to-dns"=true; } Gravatar Christian Hesse1-1/+6
2021-06-28global-functions: $GetRandomNumber: use $HexToNumGravatar Christian Hesse1-11/+2
2021-06-28global-functions: $GetRandom20CharHex: do not remove otp...•••... as it is instantly invalid anyway. Gravatar Christian Hesse1-3/+1
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 directory•••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 Gravatar Christian Hesse1-7/+5
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 array•••This did not send anything at all... Fixes #12 Gravatar Christian Hesse1-1/+1
2021-06-09log-forward: implement reverse logic to include messages...•••... 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*. change-55Gravatar Christian Hesse1-1/+1
2021-06-08global-functions: make Telegram notifications a modulechange-54Gravatar Christian Hesse1-157/+1
2021-06-08global-functions: implement notifications via Matrix•••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/ change-53Gravatar Michael Gisbers1-1/+1
2021-06-08global-functions: make notification functions extensible•••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! Gravatar Christian Hesse1-133/+159