Browse Source

gluon-setup-mode: cleanup and upgrade fix

Since switching to Barrier Breaker/procd, we'd not notice if we were
upgrading from a version before renaming the config file to gluon-setup-mode
as the upgrade scripts run after the preinit.

Fix this by checking later during setup mode init again and rebooting into the
regular run mode if we detect this case.
Matthias Schiffer 10 years ago
parent
commit
f9e5e3325f

+ 11 - 1
package/gluon-setup-mode/files/lib/gluon/setup-mode/rc.d/S15gluon-setup-mode

@@ -4,7 +4,17 @@ START=15
 
 
 boot() {
-	lua -luci -e 'require "luci.model.uci"; uci_state=luci.model.uci.cursor_state(); uci_state:section("gluon-setup-mode", "setup_mode", nil, { running = "1" }); uci_state:save("gluon-setup-mode")'
+	local enabled="$(uci -q get 'gluon-setup-mode.@setup_mode[0].enabled')"
+	local configured="$(uci -q get 'gluon-setup-mode.@setup_mode[0].configured')"
+
 	uci set 'gluon-setup-mode.@setup_mode[0].enabled=0'
 	uci commit gluon-setup-mode
+
+	if [ "$enabled" = 1 -o "$configured" != 1 ]; then
+		lua -e 'uci_state=require("luci.model.uci").cursor_state(); uci_state:section("gluon-setup-mode", "setup_mode", nil, { running = "1" }); uci_state:save("gluon-setup-mode")'
+	else
+		# This can happen after an upgrade from a version before the config file was called gluon-setup-mode
+		# We'll just reboot to return to the normal mode...
+		reboot
+	fi
 }

+ 5 - 14
package/gluon-setup-mode/files/lib/preinit/90_setup_mode

@@ -1,22 +1,13 @@
 #!/bin/sh
 
 
-check_enable() {
-	local enabled
-	local configured
-
-        config_get enabled "$1" enabled
-        config_get configured "$1" configured
+setup_mode_enable() {
+	local enabled="$(uci -q get 'gluon-setup-mode.@setup_mode[0].enabled')"
+	local configured="$(uci -q get 'gluon-setup-mode.@setup_mode[0].configured')"
 
-        if [ "$enabled" = 1 -o "$configured" != 1 ]; then
+	if [ "$enabled" = 1 -o "$configured" != 1 ]; then
 		echo '/lib/gluon/setup-mode/rc.d' > /tmp/rc_d_path
-        fi
-}
-
-
-setup_mode_enable() {
-        config_load gluon-setup-mode
-        config_foreach check_enable setup_mode
+	fi
 }
 
 boot_hook_add preinit_main setup_mode_enable