From 608499bc8949144c2ab3f1c77b632b1c0bfc9ab1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 23 Jul 2026 07:44:11 +0200 Subject: [PATCH 1/5] README: mention mode-button-scheduler --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 68216a20..9985bb2b 100644 --- a/README.md +++ b/README.md @@ -294,7 +294,7 @@ Available scripts * [Manage IP addresses with bridge status](doc/ip-addr-bridge.md) (`ip-addr-bridge`) * [Manage LEDs dark mode](doc/leds-mode.md) (`leds-day-mode`, `leds-night-mode` & `leds-toggle-mode`) * [Forward log messages via notification](doc/log-forward.md) (`log-forward`) -* [Mode button with multiple presses](doc/mode-button.md) (`mode-button`) +* [Mode button with multiple presses](doc/mode-button.md) (`mode-button` & `mode-button-scheduler`) * [Manage DNS and DoH servers from netwatch](doc/netwatch-dns.md) (`netwatch-dns`) * [Notify on host up and down](doc/netwatch-notify.md) (`netwatch-notify`) * [Visualize OSPF state via LEDs](doc/ospf-to-leds.md) (`ospf-to-leds`) From 1867c110c4356232b8434e2bb768586ead10a5c9 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 23 Jul 2026 09:33:57 +0200 Subject: [PATCH 2/5] global-functions: $ScriptInstallUpdate: support setting policy --- global-functions.rsc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/global-functions.rsc b/global-functions.rsc index 85744878..35e4de7f 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1434,8 +1434,15 @@ :error false; } + :local ReqPolicy [ $ParseKeyValueStore [ $Grep $SourceNew ("\23 requires policy, ") ] ]; + :if ([ :len ($ReqPolicy->"policy") ] > 0) do={ + :set ($ScriptVal->"policy") [ :toarray delimiter=";" ($ReqPolicy->"policy") ]; + $LogPrint debug $0 ("New policy for script '" . $ScriptVal->"name" . \ + "': " . ($ReqPolicy->"policy")); + } + $LogPrint info $0 ("Updating script: " . $ScriptVal->"name"); - /system/script/set owner=($ScriptVal->"name") \ + /system/script/set owner=($ScriptVal->"name") policy=($ScriptVal->"policy") \ source=[ $IfThenElse ($ScriptUpdatesCRLF = true) $SourceCRLF $SourceNew ] $Script; :if ($ScriptVal->"name" = "global-config" || \ $ScriptVal->"name" = "global-functions" || \ From 162dfbd8b6b503b5d0df329fca4bff2f6e47add9 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 23 Jul 2026 09:35:00 +0200 Subject: [PATCH 3/5] global-functions: $ScriptInstallUpdate: support setting dont-require-permissions --- global-functions.rsc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/global-functions.rsc b/global-functions.rsc index 35e4de7f..f77b96ce 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1440,9 +1440,14 @@ $LogPrint debug $0 ("New policy for script '" . $ScriptVal->"name" . \ "': " . ($ReqPolicy->"policy")); } + :if ([ :len ($ReqPolicy->"dont-require-permissions") ] > 0) do={ + :set ($ScriptVal->"dont-require-permissions") ($ReqPolicy->"dont-require-permissions"); + $LogPrint debug $0 ("Setting dont-require-permissions for script '" . $ScriptVal->"name" . "'."); + } $LogPrint info $0 ("Updating script: " . $ScriptVal->"name"); /system/script/set owner=($ScriptVal->"name") policy=($ScriptVal->"policy") \ + dont-require-permissions=($ScriptVal->"dont-require-permissions") \ source=[ $IfThenElse ($ScriptUpdatesCRLF = true) $SourceCRLF $SourceNew ] $Script; :if ($ScriptVal->"name" = "global-config" || \ $ScriptVal->"name" = "global-functions" || \ From 6ec01a86950d7d215d41411f060fb8c8463260db Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 23 Jul 2026 09:54:08 +0200 Subject: [PATCH 4/5] global-functions: $ScriptInstallUpdate: match in one regular expression --- global-functions.rsc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/global-functions.rsc b/global-functions.rsc index f77b96ce..94dc4f70 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -1449,9 +1449,7 @@ /system/script/set owner=($ScriptVal->"name") policy=($ScriptVal->"policy") \ dont-require-permissions=($ScriptVal->"dont-require-permissions") \ source=[ $IfThenElse ($ScriptUpdatesCRLF = true) $SourceCRLF $SourceNew ] $Script; - :if ($ScriptVal->"name" = "global-config" || \ - $ScriptVal->"name" = "global-functions" || \ - $ScriptVal->"name" ~ ("^(global-functions\\.d|mod)/.")) do={ + :if ($ScriptVal->"name" ~ ("^(global-config|global-functions(\\.d/.+)?|mod/.+)\$")) do={ :set ReloadGlobal true; } } on-error={ } From 03eef94c060fce3c5f647c1a6419e329fdd89f4e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 22 Jul 2026 22:12:11 +0200 Subject: [PATCH 5/5] mode-button: set dont-require-permissions --- mode-button.rsc | 1 + 1 file changed, 1 insertion(+) diff --git a/mode-button.rsc b/mode-button.rsc index 364fa33f..ee183b4d 100644 --- a/mode-button.rsc +++ b/mode-button.rsc @@ -5,6 +5,7 @@ # # requires RouterOS, version=7.21 # requires device-mode, scheduler +# requires policy, dont-require-permissions # # act on multiple mode and reset button presses # https://rsc.eworm.de/doc/mode-button.md