aboutsummaryrefslogtreecommitdiffstats
path: root/global-functions
AgeCommit message (Collapse)AuthorFilesLines
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
2021-04-29upload-backup: add second symbolGravatar Christian Hesse1-0/+1
2021-04-29cloud-backup: add second symbolGravatar Christian Hesse1-0/+1
2021-04-29email-backup: use $SendEMail2change-49Gravatar Christian Hesse1-1/+1
This drops $EmailBackupTo & $EmailBackupCc from settings! Use settings overwrite if required: :global EmailGeneralToOverride { "email-backup"="backup@example.com"; }
2021-04-29global-functions: $SendEMail2: support file attachmentsGravatar Christian Hesse1-3/+5
2021-04-29global-functions: $DownloadPackage: be more verboseGravatar Christian Hesse1-2/+4
2021-04-29global-functions: $DownloadPackage: fix typoGravatar Christian Hesse1-1/+1
2021-04-29global-functions: $FlushEmailQueue: try to avoid running simultaneouslyGravatar Christian Hesse1-1/+3
We can not check the status for a *specific* mail, so running simultaneously is a problem. Let's increase the interval to the number of queue items - and hope it helps. Decrease when done.
2021-04-28global-functions: notify about settings overridechange-48Gravatar Christian Hesse1-1/+1
2021-04-28global-functions: $ScriptInstallUpdate: pass origin to $SendNotification2Gravatar Christian Hesse1-2/+3
2021-04-28global-functions: $SendTelegram2: support overriding token id and chat idGravatar Christian Hesse1-7/+7
2021-04-28global-functions: $SendTelegram2: store token id in queueGravatar Christian Hesse1-4/+3
2021-04-28global-functions: $SendEMail2: support overriding to and ccGravatar Christian Hesse1-2/+8
2021-04-28global-functions: introduce $EitherOrGravatar Christian Hesse1-0/+11
2021-04-28global-functions: $ScriptInstallUpdate: use $SendNotification2Gravatar Christian Hesse1-3/+3
2021-04-28global-functions: introduce $SendEMail2, $SendNotification2 & $SendTelegram2Gravatar Christian Hesse1-27/+42
These accept just one array as argument. Adding new features is possible without breaking the API. These calls are the same for now: $SendNotification "Subject..." "Message..."; $SendNotification2 ({ subject="Subject..."; message="Message..." }); But the latter will bring more features in future.
2021-04-26global-functions: $LogPrintExit: add deprecation warningGravatar Christian Hesse1-0/+1
2021-03-21global-functions: CertificateDownload: silence certificate importGravatar Christian Hesse1-1/+1
2021-03-17global-functions: introduce $EscapeForRegExGravatar Christian Hesse1-0/+23
2021-03-10global-functions: $CertificateAvailable: use pre-test loopGravatar Christian Hesse1-2/+2
This is required to test for root CA (without intermediate) directly.
2021-03-04global-functions: $ScriptInstallUpdate: run migration unconditionallyGravatar Christian Hesse1-41/+52
We want the migration to run even if the notification is disabled.
2021-03-03global-functions: $DNSIsResolving: have a final returnGravatar Christian Hesse1-1/+1
2021-03-03global-functions: introduce and use $QuotedPrintableGravatar Christian Hesse1-2/+41
Some mail clients do not like unencoded utf-8 in subject... Let's encode in quoted-printable to fix.
2021-03-03global-functions: $UrlEncode: simplify codeGravatar Christian Hesse1-14/+15
2021-02-26global-functions: $ValidateSyntax: add line breaksGravatar Christian Hesse1-1/+1
This makes sure the closing curly bracket is not hidden in comment.
2021-02-26global-functions: $ScriptInstallUpdate: validate syntax of changelog and ↵Gravatar Christian Hesse1-15/+28
migration code
2021-02-26global-functions: introduce and use $ValidateSyntaxGravatar Christian Hesse1-7/+15
2021-02-25global-functions: $ScriptInstallUpdate: add syntax validationGravatar Christian Hesse1-18/+30
2021-02-25global-functions: $ScriptInstallUpdate: swap conditionsGravatar Christian Hesse1-4/+5
2021-02-25global-functions: $FlushEmailQueue: fix syntaxGravatar Christian Hesse1-1/+1
2021-02-25global-functions: $ScriptInstallUpdate: expect global-config-overlay to be ↵Gravatar Christian Hesse1-8/+3
present
2021-02-25global-functions: $ScriptInstallUpdate: list news with 'black circle'Gravatar Christian Hesse1-1/+4
... if symbols are enabled.
2021-02-24global-functions: $CertificateAvailable: use $0 for $RequiredRouterOSGravatar Christian Hesse1-1/+1
2021-02-24global-functions: silence fetchGravatar Christian Hesse1-4/+4
2021-02-24global-functions: $GetMacVendor: improve error handlingGravatar Christian Hesse1-0/+7
The API returns 404 on unknown mac vendor... We can just catch error, but not decide whether it is connection error or unknown vendor. Try without mac address - on error we have a connection issue.
2021-02-24certs: remove obsolote certificate "Let's Encrypt Authority X3"change-47Gravatar Christian Hesse1-1/+1
Let's Encrypt started issuing certificates from "R3" intermediate on December 2nd. All certificates should be renewed by now...
2021-02-24backup: notify about random delaychange-46Gravatar Christian Hesse1-1/+1
2021-02-24global: give script or function name in log messagesGravatar Christian Hesse1-60/+70
2021-02-24global-functions: $GetMacVendor: requires certificate "Cloudflare Inc ECC ↵Gravatar Christian Hesse1-1/+1
CA-3" now
2021-02-23global-functions: $ScriptInstallUpdate: handle migration before messageGravatar Christian Hesse1-3/+3
2021-02-22We have a Telegram group!change-45Gravatar Christian Hesse1-1/+1
2021-02-18global-functions: $FlushTelegramQueue: disable web page previewGravatar Christian Hesse1-1/+2
... just as without queue.
2021-02-18global-functions: $TimeIsSync: do not flood log...Gravatar Christian Hesse1-1/+1
... when returning gracefully.
2021-02-18global: drop script 'global-wait'change-44Gravatar Christian Hesse1-8/+1
All scripts wait for the global functions on their own now.
2021-02-18global-functions: $ScriptInstallUpdate: fix change notificationGravatar Christian Hesse1-2/+3
In RouterOS functions are of type 'array' with 'code' (numerical index 1) inside. Cast to string to make comparison work. Also define the function to make it available.
2021-02-18global-functions: $ScriptInstallUpdate: Properly escape question markGravatar Christian Hesse1-1/+1