summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/root
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2018-05-18 16:44:33 +0200
committerGitHub <noreply@github.com>2018-05-18 16:44:33 +0200
commit828202ef5237f48e6f53d15ca198e2c6815b7cd7 (patch)
treea59276e5df1ebe77edca65b06b2a3b72f10ba70c /modules/luci-base/root
parent80cb4fef8c7db0dadc373fef122d7abb092a7191 (diff)
parent9f796fad3a0cc89df57d4e27ef6d7223a093071c (diff)
Merge pull request #1769 from jow-/master
UCI apply/rollback workflow
Diffstat (limited to 'modules/luci-base/root')
-rw-r--r--modules/luci-base/root/etc/config/luci6
-rwxr-xr-xmodules/luci-base/root/etc/init.d/ucitrack57
2 files changed, 63 insertions, 0 deletions
diff --git a/modules/luci-base/root/etc/config/luci b/modules/luci-base/root/etc/config/luci
index baa3ac5d1..82c2230e5 100644
--- a/modules/luci-base/root/etc/config/luci
+++ b/modules/luci-base/root/etc/config/luci
@@ -22,3 +22,9 @@ config internal ccache
option enable 1
config internal themes
+
+config internal apply
+ option rollback 30
+ option holdoff 4
+ option timeout 5
+ option display 1.5
diff --git a/modules/luci-base/root/etc/init.d/ucitrack b/modules/luci-base/root/etc/init.d/ucitrack
new file mode 100755
index 000000000..27d34fa29
--- /dev/null
+++ b/modules/luci-base/root/etc/init.d/ucitrack
@@ -0,0 +1,57 @@
+#!/bin/sh /etc/rc.common
+
+START=80
+USE_PROCD=1
+
+register_init() {
+ local config="$1"
+ local init="$2"
+ shift; shift
+
+ if [ -x "$init" ] && "$init" enabled && ! grep -sqE 'USE_PROCD=.' "$init"; then
+ logger -t "ucitrack" "Setting up /etc/config/$config reload trigger for non-procd $init"
+ procd_add_config_trigger "config.change" "$config" "$init" "$@"
+ fi
+}
+
+register_trigger() {
+ local sid="$1"
+ local config init exec affects affected
+
+ config_get config "$sid" TYPE
+ config_get init "$sid" init
+ config_get exec "$sid" exec
+ config_get affects "$sid" affects
+
+ if [ -n "$init" ]; then
+ register_init "$config" "/etc/init.d/$init" "reload"
+ fi
+
+ if [ -n "$exec" ]; then
+ case "$exec" in
+ /etc/init.d/*)
+ set -- $exec
+ register_init "$config" "$@"
+ ;;
+ *)
+ logger -t "ucitrack" "Setting up non-init /etc/config/$config reload handler: $exec"
+ procd_add_config_trigger "config.change" "$config" "$exec"
+ ;;
+ esac
+ fi
+
+ for affected in $affects; do
+ logger -t "ucitrack" "Setting up /etc/config/$config reload dependency on /etc/config/$affected"
+ procd_add_config_trigger "config.change" "$affected" \
+ ubus call service event \
+ "$(printf '{"type":"config.change","data":{"package":"%s"}}' $config)"
+ done
+}
+
+service_triggers() {
+ config_foreach register_trigger
+}
+
+start_service() {
+ config_load ucitrack
+}