From d2d913ec19c0395fdc1090bb8baaf911d79dbab0 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 3 Mar 2023 14:15:24 +0100 Subject: check-routeros-update: allow to install all updates automatically... ... but with extra hurdle for more awareness of danger. Let's not send a new notification, intentionally. This feature is dangerous, and we should not advertise it. --- check-routeros-update | 11 +++++++++++ doc/check-routeros-update.md | 4 ++++ global-config | 3 +++ 3 files changed, 18 insertions(+) diff --git a/check-routeros-update b/check-routeros-update index 3e5a381..d1c82c5 100644 --- a/check-routeros-update +++ b/check-routeros-update @@ -11,6 +11,7 @@ :while ($GlobalFunctionsReady != true) do={ :delay 500ms; } :global Identity; +:global SafeUpdateAll; :global SafeUpdateNeighbor; :global SafeUpdatePatch; :global SafeUpdateUrl; @@ -59,6 +60,16 @@ $LogPrintExit2 debug $0 ("Checking for updates...") false; } :if ($NumInstalled < $NumLatest) do={ + :if ($SafeUpdateAll ~ "^YES,? ?PLEASE!?\$") do={ + $LogPrintExit2 info $0 ("Installing ALL versions automatically, including " . \ + $Update->"latest-version" . "...") false; + $SendNotification2 ({ origin=$0; \ + subject=([ $SymbolForNotification "sparkles" ] . "RouterOS update"); \ + message=("Installing ALL versions automatically, including " . $Update->"latest-version" . \ + "... Updating on " . $Identity . "..."); link=$Link; silent=true }); + $DoUpdate; + } + :if ($SafeUpdatePatch = true && ($NumInstalled & 0xffff0000) = ($NumLatest & 0xffff0000)) do={ $LogPrintExit2 info $0 ("Version " . $Update->"latest-version" . " is a patch release, updating...") false; $SendNotification2 ({ origin=$0; \ diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index 8eec19b..8e158e1 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -56,6 +56,10 @@ The configuration goes to `global-config-overlay`, these are the parameters: automatically * `SafeUpdateUrl`: url on webserver to check for safe update, the channel (`long-term`, `stable` or `testing`) is appended +* `SafeUpdateAll`: install **all** updates automatically + +> ℹ️ **Info**: Installing **all** updates automatically requires extra +> confirmation. See `global-config` for details. Also notification settings are required for [e-mail](mod/notification-email.md), diff --git a/global-config b/global-config index c65e2f0..770efd0 100644 --- a/global-config +++ b/global-config @@ -105,6 +105,9 @@ :global SafeUpdatePatch false; # Allow to install updates automatically if seen in neighbor list. :global SafeUpdateNeighbor false; +# Install *ALL* updates automatically! +# Set to all upper-case "Yes, please!" to enable. +:global SafeUpdateAll "no"; # These thresholds control when to send health notification # on temperature and voltage. -- cgit v1.2.3-54-g00ecf