From f9e5e3325f0f9a85a956f88f8227d25a3d078141 Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sat, 16 Aug 2014 15:15:24 +0200
Subject: [PATCH] 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.
---
 .../gluon/setup-mode/rc.d/S15gluon-setup-mode | 12 +++++++++++-
 .../files/lib/preinit/90_setup_mode           | 19 +++++--------------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/package/gluon-setup-mode/files/lib/gluon/setup-mode/rc.d/S15gluon-setup-mode b/package/gluon-setup-mode/files/lib/gluon/setup-mode/rc.d/S15gluon-setup-mode
index b6c1136ef..f62edc30e 100755
--- a/package/gluon-setup-mode/files/lib/gluon/setup-mode/rc.d/S15gluon-setup-mode
+++ b/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
 }
diff --git a/package/gluon-setup-mode/files/lib/preinit/90_setup_mode b/package/gluon-setup-mode/files/lib/preinit/90_setup_mode
index 31f64f643..396b4f767 100644
--- a/package/gluon-setup-mode/files/lib/preinit/90_setup_mode
+++ b/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
-- 
GitLab