luci-mod-system: prevent clearing rc.local on unrelated submit actions
authorJo-Philipp Wich <jo@mein.io>
Wed, 12 Jun 2019 15:47:30 +0000 (17:47 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 21 Aug 2019 15:50:08 +0000 (17:50 +0200)
Fixes: #2760
Fixes: 1c09ee5e4 ("luci-mod-system: fix SimpleForm usage on file editing pages")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 1aa13ed51ed1c1b62b1ed296383907d953a62698)

modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua

index c3f14540e3589eac9c9578644f334df2c4763677..99ddb0970128cbcc63646c76819619d710fc4cec 100644 (file)
@@ -7,6 +7,7 @@ local fs  = require "nixio.fs"
 local sys = require "luci.sys"
 
 local inits = { }
+local handled = false
 
 for _, name in ipairs(sys.init.names()) do
        local index   = sys.init.index(name)
@@ -49,9 +50,11 @@ end
 
 e.write = function(self, section)
        if inits[section].enabled then
+               handled = true
                inits[section].enabled = false
                return sys.init.disable(inits[section].name)
        else
+               handled = true
                inits[section].enabled = true
                return sys.init.enable(inits[section].name)
        end
@@ -61,6 +64,7 @@ end
 start = s:option(Button, "start", translate("Start"))
 start.inputstyle = "apply"
 start.write = function(self, section)
+       handled = true
        sys.call("/etc/init.d/%s %s >/dev/null" %{ inits[section].name, self.option })
 end
 
@@ -87,7 +91,7 @@ function t.cfgvalue()
 end
 
 function f.handle(self, state, data)
-       if state == FORM_VALID then
+       if not handled and state == FORM_VALID then
                if data.rcs then
                        fs.writefile("/etc/rc.local", data.rcs:gsub("\r\n", "\n"))
                else