diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-05-18 16:44:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-18 16:44:33 +0200 |
commit | 828202ef5237f48e6f53d15ca198e2c6815b7cd7 (patch) | |
tree | a59276e5df1ebe77edca65b06b2a3b72f10ba70c /modules/luci-base/root | |
parent | 80cb4fef8c7db0dadc373fef122d7abb092a7191 (diff) | |
parent | 9f796fad3a0cc89df57d4e27ef6d7223a093071c (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/luci | 6 | ||||
-rwxr-xr-x | modules/luci-base/root/etc/init.d/ucitrack | 57 |
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 +} |