aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2023-11-14 18:51:54 +0100
committerGravatar Christian Hesse <mail@eworm.de>2023-11-15 15:10:49 +0100
commit6384f6a23986dfc0f851dcecedd6838e1b975e41 (patch)
tree49a2511efe8ae7caa4f511d64ffacccdd3ef3332
parentc7e2ff71e6d2308c96e32ad62174fb756892bcc7 (diff)
drop old files left from migration
-rw-r--r--global-config.changes123
-rw-r--r--global-functions257
-rw-r--r--news-and-changes.rsc3
3 files changed, 2 insertions, 381 deletions
diff --git a/global-config.changes b/global-config.changes
deleted file mode 100644
index 47cfbc6..0000000
--- a/global-config.changes
+++ /dev/null
@@ -1,123 +0,0 @@
-# News, changes and migration by RouterOS Scripts
-# Copyright (c) 2019-2023 Christian Hesse <mail@eworm.de>
-# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md
-
-:global IfThenElse;
-:global RequiredRouterOS;
-
-# Changes for global-config to be added to notification on script updates
-:global GlobalConfigChanges {
- 1="Moved variables from 'global-config' to 'global-functions' for independence";
- 2="Variable names became CamelCase to work around scripting issues";
- 3="Variable for certificate renew passphrase became an array to support multiple passphrases";
- 4="Added option to ignore global-config changes";
- 5="Split off new script 'cloud-backup' from 'email-backup'";
- 6="Introduced script 'upload-backup' with new configuration parameters";
- 7="Introduced script 'check-health' with new configuration parameters";
- 8="Added donation hint and option to silence it";
- 9="Introduced configuration overlay 'global-config-overlay'";
- 10="Made health threshold for voltage configurable";
- 11="Introduced function '\$ScriptInstallUpdate' to install new and update existing scripts";
- 12="Removed '\$ScriptUpdatesConfigChangesIgnore', comment '\$GlobalConfigVersion' in 'global-config-overlay' to disable change notifications";
- 13="Configuration for script 'bridge-port-to-default' changed with new syntax in comment";
- 14="Dropped script 'script-updates', use '\$ScriptInstallUpdate' exclusively!";
- 15="New documentation is online! https://git.eworm.de/cgit/routeros-scripts/about/#available-scripts";
- 16="Happy with RouterOS Scripts and have a GitHub and/or GitLab account? Please star!";
- 17="Introduced script 'early-errors'";
- 18=("Added a simple IP calculation function, try: \$IPCalc " . [ /ip/address/get ([ find ]->0) address ]);
- 19="Commenting scripts with 'ignore', 'base-url=...' and 'url-suffix=...' is honored on update";
- 20="Added support for hooks to 'netwatch-notify'";
- 21="Added support for installing patch updates automatically by 'check-routeros-update'";
- 22="Dropped '\$ScriptUpdatesIgnore' from global configuration, auto-migrating to ignore flag in comment"
- 23="Added 'log-forward' with configurable filter, which replaces 'early-errors'";
- 24="Made symbols in notifications configurable.";
- 25="Added support for DHCP server name in DNS FQDN via '\$ServerNameInZone'";
- 26="Made check count threshold in 'netwatch-notify' configurable.";
- 27="Added queue for Telegram notifications to resend later on error.";
- 28="Made 'dhcp-to-dns' act on all bound leases, not just dynamic ones.";
- 29="Added filter on log message text for 'log-forward'.";
- 30="Implemented simple rate limit for 'log-forward' to prevent flooding.";
- 31="Switched Telegram notifications to fixed-width font, with opt-out.";
- 32="Merged mode (& reset) button scripts in single new script 'mode-button'.";
- 33="Added configurable deviation on health temperature recovery threshold against notification flooding.";
- 34="Introduced script 'ospf-to-leds' to visualize OSPF instance state via LEDs.";
- 35="Implemented visual feedback for 'mode-button' with configurable LED.";
- 36="Added support for installing updates automatically if seen in neighbor list.";
- 37="Implemented simple dependency model in 'netwatch-notify'.";
- 38="Imported new Let's Encrypt intermediate certificate 'R3'.";
- 39="Added support for interface specific address list entries in 'ipv6-update'.";
- 40="Made the certificate renewal time configurable.";
- 41="Implemented migration mechanism for script updates.";
- 42="Made severity in terminal output colorful, with opt-out.";
- 43="Added queue for e-mail notifications to resend later on error.";
- 44="Dropped script 'global-wait', all scripts wait on their own now.";
- 45="We have a Telegram Group! Come along and say hello: https://t.me/routeros_scripts";
- 46="Added configurable random delay in backup scripts to stretch execution and prevent resource congestion.";
- 47="Removed obsolete intermediate certificate 'Let's Encrypt Authority X3' from store.";
- 48="Added support for overriding e-mail and Telegram settings for every script.";
- 49="Dropped '\$EmailBackupTo' & '\$EmailBackupCc' from configuration, use settings override if required.";
- 50="Added support for dynamic address update in 'netwatch-notify'.";
- 51="Added 'ipsec-to-dns' to add DNS records for IPSec peers from mode-config.";
- 52="Updated Let's Encrypt trust chain to use root certificate 'ISRG Root X1'. Do not re-import the old chain!";
- 53="Added support to send notifications via Matrix.";
- 54="Support for Telegram notifications moved to a module. It is installed automatically if required.";
- 55="Added reverse logic in 'log-forward', so messages can be included even if filtered before.";
- 56="Added tags in all backup, lease and ppp-on-up scripts. These are used by 'packages-update', 'lease-script' and 'ppp-on-up' to find the scripts.";
- 57="Celebrating the 1.000th commit - Hooray!";
- 58="Added a cleanup script for 'hotspot-to-wpa' to purge old access list entries.";
- 59="Updating CAP with 'check-routeros-update' is now possible with opt-in.";
- 60="Implemented a pre-down hook in 'netwatch-notify' that fires at two thirds of failed checks.";
- 61="Finally removed old scripts.";
- 62="Added '\$ScriptRunOnce' to run a script from URL once without installation, intended to aid configuration management and the like.";
- 63="Moved optional functions '\$IPCalc' and '\$ScriptRunOnce' to modules.";
- 64="Implemented '\$InspectVar' in module to inspect variables.";
- 65="Added module to manage VLANs on bridge ports.";
- 66="Moved script 'bridge-port-to-default' to new module.";
- 67="Moved modules to directory with shorter name.";
- 68="Reintroduced 'global-wait' for functions in scheduler.";
- 69="Support hard lower limit for voltage in 'check-health'.";
- 70="MikroTik started pushing RouterOS v7. Changes are no longer required.";
- 71="MikroTik is pushing RouterOS v7 even more, in parallel branches. If you want to keep RouterOS v6 for some time see https://git.eworm.de/cgit/routeros-scripts/about/#requirements";
- 72="Introduced new script 'netwatch-dns' to manage DNS and DoH servers from netwatch.";
- 73="Renamed backup scripts ('cloud-backup' -> 'backup-cloud', 'email-backup' -> 'backup-email', 'upload-backup' -> 'backup-upload').";
- 74="Extended 'hotspot-to-wpa', it can now read additional configuration from templates and hotspot users.";
- 75=("Finally merged the RouterOS v7 code into the main branch. " . [ $IfThenElse ([ $RequiredRouterOS "global-config.changes" "7.0" false ] = true) \
- ("You may now drop '\$ScriptUpdatesUrlSuffix' from 'global-config-overlay'.") \
- ("Still running RouterOS v6, so last reminder to see https://git.eworm.de/cgit/routeros-scripts/about/#requirements") ]);
- 76="Added an option to suppress notifications on host down with 'netwatch-notify'.";
- 77="Introduced new script 'firmware-upgrade-reboot'. Handle with care!";
- 78="New documentation is online for notifications via Telegram & Matrix, variable inspection, ip address calculation and running scripts once.";
- 79="Introduced new script 'backup-partition' to save configuration to fallback partition.";
- 80="The 'routeros-v7' branch will now freeze, and vanish any time in future. You already switched to 'main' branch, well done!";
- 81="Dropped script 'rotate-ntp', as the limitation does no longer exist.";
- 82="Renamed the comment parameter 'hostname' to just 'name' for 'netwatch-notify'.";
- 83="Introduced new setting to disable news and change notifications, dropped version from configuration.";
- 84="Support for e-mail notifications moved to a module. It is installed automatically if required.";
- 85="Dropped 'netwatch-syslog', filtering in firewall is advised.";
- 86="Added support for hooks in 'sms-forward'. This now provides similar functionality to 'sms-action', but is more flexible.";
- 87="Added support for extra text (or emojis \F0\9F\9A\80) in notification tags.";
- 88="Added support for monitoring CPU utilization and available free RAM in 'check-health'.";
- 89="Made the warning time for 'check-certificates' configurable.";
- 90="Chat with your router! Introduced 'telegram-chat' to chat via Telegram bot and send commands to your router.";
- 91="Dropped check for CAP in 'check-routeros-update' to solve issues with wifiwave2 package.";
- 92="Made qr-code url configurable for 'daily-psk'.";
- 93="Added support to backup global-config-overlay in 'backup-email' and 'backup-upload'.";
- 94="Added support for host addresses in address-list for 'ipv6-update'.";
- 95="Renamed script files in repository, running migration. Warnings (one per script) are expected, no user interaction is required.";
-};
-
-# Migration steps to be applied on script updates
-:global GlobalConfigMigration {
- 41=":global SendNotification; \$SendNotification (\"Migration mechanism\") (\"Congratulations!\nSuccessfully tested the new migration mechanism.\");";
- 47="/certificate/remove [ find where fingerprint=\"731d3d9cfaa061487a1d71445a42f67df0afca2a6c2d2f98ff7b3ce112b1f568\" or fingerprint=\"25847d668eb4f04fdd40b12b6b0740c567da7d024308eb6c2c96fe41d9de218d\" ];";
- 52=":global CertificateDownload; :if ([ :len [ /certificate/find where fingerprint=\"67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd\" or fingerprint=\"96bcec06264976f37460779acf28c5a7cfe8a3c0aae11a8ffcee05c0bddf08c6\" ] ] < 2) do={ \$CertificateDownload \"R3\"; }; /certificate/remove [ find where fingerprint=\"0687260331a72403d909f105e69bcf0d32e1bd2493ffc6d9206d11bcd6770739\" ];";
- 54=":global ScriptInstallUpdate; :global TelegramTokenId; :global TelegramChatId; :if ([ :len \$TelegramTokenId ] > 0 && [ :len \$TelegramChatId ] > 0) do={ \$ScriptInstallUpdate mod/notification-telegram; }";
- 61="/system/script/remove [ find where name~\"^(early-errors|mode-button-(event|scheduler)|script-updates)\\\$\" source~\"^#!rsc by RouterOS\\n\" ];";
- 66=":global ScriptInstallUpdate; :if ([ :len [ /system/script/find where name=\"bridge-port-to-default\" ] ] > 0) do={ /system/script/remove [ find where name~\"^bridge-port-to(-default|ggle)\\\$\" ]; \$ScriptInstallUpdate mod/bridge-port-to; }";
- 67=":global ScriptInstallUpdate; :global CharacterReplace; :foreach Script in=[ /system/script/find where name~\"^global-functions.d/\" ] do={ /system/script/set name=[ \$CharacterReplace [ /system/script/get \$Script name ] \"global-functions.d/\" \"mod/\" ] \$Script; }; \$ScriptInstallUpdate;";
- 73=":global ScriptInstallUpdate; :global CharacterReplace; :foreach Old,New in={ \"cloud-backup\"=\"backup-cloud\"; \"email-backup\"=\"backup-email\"; \"upload-backup\"=\"backup-upload\" } do={ /system/script/set name=\$New [ find where name=\$Old ]; :foreach Scheduler in=[ /system/scheduler/find where on-event~\$Old ] do={ /system/scheduler/set \$Scheduler name=[ \$CharacterReplace [ get \$Scheduler name ] \$Old \$New ] on-event=[ \$CharacterReplace [ get \$Scheduler on-event ] \$Old \$New ]; }; }; \$ScriptInstallUpdate;";
- 81=":global NtpPool; :if ([ :len [ /system/script/find where name=\"rotate-ntp\" ] ] > 0) do={ /system/script/remove [ find where name=\"rotate-ntp\" ]; /system/scheduler/remove [ find where name=\"rotate-ntp\" ]; /system/ntp/client/set servers=\$NtpPool; };";
- 82=":global CharacterReplace; :foreach Netwatch in=[ /tool/netwatch/find where comment~\"notify\" !disabled ] do={ /tool/netwatch/set \$Netwatch comment=[ \$CharacterReplace [ get \$Netwatch comment ] \"hostname=\" \"name=\" ]; };";
- 84=":global ScriptInstallUpdate; :global EmailGeneralTo; :if ([ /tool/e-mail/get address ] != \"0.0.0.0\" && [ :len \$EmailGeneralTo ] > 0) do={ \$ScriptInstallUpdate mod/notification-email; }";
- 95=":global ScriptInstallUpdate; :global CharacterReplace; :foreach Script in=[ /system/script/find where name~\"\\\\.rsc\\\$\" source~\"^#!rsc by RouterOS\\n\" ] do={ /system/script/set \$Script name=[ \$CharacterReplace [ get \$Script name ] \".rsc\" \"\" ]; }; \$ScriptInstallUpdate;";
-};
diff --git a/global-functions b/global-functions
deleted file mode 100644
index 431a343..0000000
--- a/global-functions
+++ /dev/null
@@ -1,257 +0,0 @@
-#!rsc by RouterOS
-# RouterOS script: global-functions
-# Copyright (c) 2013-2023 Christian Hesse <mail@eworm.de>
-# Michael Gisbers <michael@gisbers.de>
-# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md
-#
-# requires RouterOS, version=7.7
-#
-# WARNING: If you find this stripped version of global-functions
-# on your Router something went wrong and migration failed. To
-# recover run this function: $RouterOSScriptsRecover
-
-# expected configuration version
-:global ExpectedConfigVersion 95;
-
-# global functions
-:global RouterOSScriptsRecover;
-:global ScriptInstallUpdate;
-
-# recover from failed migration
-:set RouterOSScriptsRecover do={
- :global ScriptInstallUpdate;
-
- :foreach Script in={ "global-config"; "global-functions" } do={
- /system/script/set name=$Script source=([ /tool/fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . ".rsc") output=user as-value]->"data");
- /system/script/run $Script;
- }
-
- $ScriptInstallUpdate;
-}
-
-# install new scripts, update existing scripts
-:set ScriptInstallUpdate do={
- :local Scripts [ :toarray $1 ];
- :local NewComment [ :tostr $2 ];
-
- :global ExpectedConfigVersion;
- :global Identity;
- :global IDonate;
- :global NoNewsAndChangesNotification;
- :global NotificationsWithSymbols;
- :global ScriptUpdatesBaseUrl;
- :global ScriptUpdatesFetch;
- :global ScriptUpdatesUrlSuffix;
-
- :global CertificateAvailable;
- :global EitherOr;
- :global Grep;
- :global IfThenElse;
- :global LogPrintExit2;
- :global ParseKeyValueStore;
- :global RequiredRouterOS;
- :global SendNotification2;
- :global SymbolForNotification;
- :global ValidateSyntax;
-
- :if ([ $CertificateAvailable "E1" ] = false) do={
- $LogPrintExit2 warning $0 ("Downloading certificate failed, trying without.") false;
- }
-
- :foreach Script in=$Scripts do={
- :if ([ :len [ /system/script/find where name=$Script ] ] = 0) do={
- $LogPrintExit2 info $0 ("Adding new script: " . $Script) false;
- /system/script/add name=$Script owner=$Script source="#!rsc by RouterOS\n" comment=$NewComment;
- }
- }
-
- :local ExpectedConfigVersionBefore $ExpectedConfigVersion;
- :local ReloadGlobalFunctions false;
- :local ReloadGlobalConfig false;
-
- :foreach Script in=[ /system/script/find where source~"^#!rsc by RouterOS\n" ] do={
- :local ScriptVal [ /system/script/get $Script ];
- :local ScriptFile [ /file/find where name=("script-updates/" . $ScriptVal->"name") ];
- :local SourceNew;
- :if ([ :len $ScriptFile ] > 0) do={
- :set SourceNew [ /file/get $ScriptFile contents ];
- /file/remove $ScriptFile;
- }
-
- :foreach Scheduler in=[ /system/scheduler/find where on-event~("\\b" . $ScriptVal->"name" . "\\b") ] do={
- :local SchedulerVal [ /system/scheduler/get $Scheduler ];
- :if ($ScriptVal->"policy" != $SchedulerVal->"policy") do={
- $LogPrintExit2 warning $0 ("Policies differ for script '" . $ScriptVal->"name" . \
- "' and its scheduler '" . $SchedulerVal->"name" . "'!") false;
- }
- }
-
- :if ([ :len $SourceNew ] = 0 && $ScriptUpdatesFetch = true) do={
- :local Comment [ $ParseKeyValueStore ($ScriptVal->"comment") ];
- :if (!($Comment->"ignore" = true)) do={
- :do {
- :local BaseUrl $ScriptUpdatesBaseUrl;
- :local UrlSuffix $ScriptUpdatesUrlSuffix;
- :if ([ :typeof ($Comment->"base-url") ] = "str") do={ :set BaseUrl ($Comment->"base-url"); }
- :if ([ :typeof ($Comment->"url-suffix") ] = "str") do={ :set UrlSuffix ($Comment->"url-suffix"); }
- :local Url ($BaseUrl . $ScriptVal->"name" . ".rsc" . $UrlSuffix);
-
- $LogPrintExit2 debug $0 ("Fetching script '" . $ScriptVal->"name" . "' from url: " . $Url) false;
- :local Result [ /tool/fetch check-certificate=yes-without-crl $Url output=user as-value ];
- :if ($Result->"status" = "finished") do={
- :set SourceNew ($Result->"data");
- }
- } on-error={
- :if ($ScriptVal->"source" = "#!rsc by RouterOS\n") do={
- $LogPrintExit2 warning $0 ("Failed fetching script '" . $ScriptVal->"name" . \
- "', removing dummy. Typo on installation?") false;
- /system/script/remove $Script;
- } else={
- $LogPrintExit2 warning $0 ("Failed fetching script '" . $ScriptVal->"name" . "'!") false;
- }
- }
- }
- }
-
- :if ([ :len $SourceNew ] > 0) do={
- :if ($SourceNew != $ScriptVal->"source") do={
- :if ([ :pick $SourceNew 0 18 ] = "#!rsc by RouterOS\n") do={
- :local Required ([ $ParseKeyValueStore [ $Grep $SourceNew "# requires RouterOS, " ] ]->"version");
- :if ([ $RequiredRouterOS $0 [ $EitherOr $Required "0.0" ] false ] = true) do={
- :if ([ $ValidateSyntax $SourceNew ] = true) do={
- $LogPrintExit2 info $0 ("Updating script: " . $ScriptVal->"name") false;
- /system/script/set owner=($ScriptVal->"name") source=$SourceNew $Script;
- :if ($ScriptVal->"name" = "global-config") do={
- :set ReloadGlobalConfig true;
- }
- :if ($ScriptVal->"name" = "global-functions" || $ScriptVal->"name" ~ ("^mod/.")) do={
- :set ReloadGlobalFunctions true;
- }
- } else={
- $LogPrintExit2 warning $0 ("Syntax validation for script '" . $ScriptVal->"name" . \
- "' failed! Ignoring!") false;
- }
- } else={
- $LogPrintExit2 warning $0 ("The script '" . $ScriptVal->"name" . "' requires RouterOS " . \
- $Required . ", which is not met by your installation. Ignoring!") false;
- }
- } else={
- $LogPrintExit2 warning $0 ("Looks like new script '" . $ScriptVal->"name" . \
- "' is not valid (missing shebang). Ignoring!") false;
- }
- } else={
- $LogPrintExit2 debug $0 ("Script '" . $ScriptVal->"name" . "' did not change.") false;
- }
- } else={
- $LogPrintExit2 debug $0 ("No update for script '" . $ScriptVal->"name" . "'.") false;
- }
- }
-
- :if ($ReloadGlobalFunctions = true) do={
- $LogPrintExit2 info $0 ("Reloading global functions.") false;
- :do {
- /system/script/run global-functions;
- } on-error={
- $LogPrintExit2 error $0 ("Reloading global functions failed!") false;
- }
- }
-
- :if ($ReloadGlobalConfig = true) do={
- $LogPrintExit2 info $0 ("Reloading global configuration.") false;
- :do {
- /system/script/run global-config;
- } on-error={
- $LogPrintExit2 error $0 ("Reloading global configuration failed!" . \
- " Syntax error or missing overlay?") false;
- }
- }
-
- :if ($ExpectedConfigVersionBefore > $ExpectedConfigVersion) do={
- $LogPrintExit2 warning $0 ("The configuration version decreased from " . \
- $ExpectedConfigVersionBefore . " to " . $ExpectedConfigVersion . \
- ". Installed an older version?") false;
- }
-
- :if ($ExpectedConfigVersionBefore < $ExpectedConfigVersion) do={
- :global GlobalConfigChanges;
- :global GlobalConfigMigration;
- :local ChangeLogCode;
-
- :do {
- :local Url ($ScriptUpdatesBaseUrl . "news-and-changes.rsc" . $ScriptUpdatesUrlSuffix);
- $LogPrintExit2 debug $0 ("Fetching news, changes and migration: " . $Url) false;
- :local Result [ /tool/fetch check-certificate=yes-without-crl $Url output=user as-value ];
- :if ($Result->"status" = "finished") do={
- :set ChangeLogCode ($Result->"data");
- }
- } on-error={
- $LogPrintExit2 warning $0 ("Failed fetching news, changes and migration!") false;
- }
-
- :if ([ :len $ChangeLogCode ] > 0) do={
- :if ([ $ValidateSyntax $ChangeLogCode ] = true) do={
- :do {
- [ :parse $ChangeLogCode ];
- } on-error={
- $LogPrintExit2 warning $0 ("The changelog failed to run!") false;
- }
- } else={
- $LogPrintExit2 warning $0 ("The changelog failed syntax validation!") false;
- }
- }
-
- :if ([ :len $GlobalConfigMigration ] > 0) do={
- :for I from=($ExpectedConfigVersionBefore + 1) to=$ExpectedConfigVersion do={
- :local Migration ($GlobalConfigMigration->[ :tostr $I ]);
- :if ([ :typeof $Migration ] = "str") do={
- :if ([ $ValidateSyntax $Migration ] = true) do={
- $LogPrintExit2 info $0 ("Applying migration for change " . $I . ": " . $Migration) false;
- :do {
- [ :parse $Migration ];
- } on-error={
- $LogPrintExit2 warning $0 ("Migration code for change " . $I . " failed to run!") false;
- }
- } else={
- $LogPrintExit2 warning $0 ("Migration code for change " . $I . " failed syntax validation!") false;
- }
- }
- }
- }
-
- :local NotificationMessage ("The configuration version on " . $Identity . " increased " . \
- "to " . $ExpectedConfigVersion . ", current configuration may need modification. " . \
- "Please review and update global-config-overlay, then re-run global-config.");
- $LogPrintExit2 info $0 ($NotificationMessage) false;
-
- :if ([ :len $GlobalConfigChanges ] > 0) do={
- :set NotificationMessage ($NotificationMessage . "\n\nChanges:");
- :for I from=($ExpectedConfigVersionBefore + 1) to=$ExpectedConfigVersion do={
- :local Change ($GlobalConfigChanges->[ :tostr $I ]);
- :set NotificationMessage ($NotificationMessage . "\n " . \
- [ $IfThenElse ($NotificationsWithSymbols = true) ("\E2\97\8F") "*" ] . " " . $Change);
- $LogPrintExit2 info $0 ("Change " . $I . ": " . $Change) false;
- }
- } else={
- :set NotificationMessage ($NotificationMessage . "\n\nNews and changes are not available.");
- }
-
- :if ($NoNewsAndChangesNotification != true) do={
- :local Link;
- :if ($IDonate != true) do={
- :set NotificationMessage ($NotificationMessage . \
- "\n\n==== donation hint ====\n" . \
- "This project is developed in private spare time and usage is " . \
- "free of charge for you. If you like the scripts and think this is " . \
- "of value for you or your business please consider a donation.");
- :set Link "https://git.eworm.de/cgit/routeros-scripts/about/#donate";
- }
-
- $SendNotification2 ({ origin=$0; \
- subject=([ $SymbolForNotification "pushpin" ] . "News and configuration changes"); \
- message=$NotificationMessage; link=$Link });
- }
-
- :set GlobalConfigChanges;
- :set GlobalConfigMigration;
- }
-}
diff --git a/news-and-changes.rsc b/news-and-changes.rsc
index d0b3820..f4c50c2 100644
--- a/news-and-changes.rsc
+++ b/news-and-changes.rsc
@@ -5,7 +5,8 @@
:global IfThenElse;
:global RequiredRouterOS;
-# News, changes and migration up to change 95 are in global-config.changes!
+# News, changes and migration up to change 95:
+# https://git.eworm.de/cgit/routeros-scripts/plain/global-config.changes?h=change-95
# Changes for global-config to be added to notification on script updates
:global GlobalConfigChanges {