From 73112f9c44b0dc333b6ec1878009e0e69c8db500 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 4 May 2011 21:37:41 +0000 Subject: [PATCH] modules/admin-full: fix system/admin from form() to cbi() type to add missing apply button (#234), integrate services/initscripts as system/startup --- .../luasrc/controller/admin/system.lua | 3 +- .../luasrc/model/cbi/admin_system/startup.lua | 107 ++++++++++++++++++ 2 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 modules/admin-full/luasrc/model/cbi/admin_system/startup.lua diff --git a/modules/admin-full/luasrc/controller/admin/system.lua b/modules/admin-full/luasrc/controller/admin/system.lua index c79397b5e..69ef6b7aa 100644 --- a/modules/admin-full/luasrc/controller/admin/system.lua +++ b/modules/admin-full/luasrc/controller/admin/system.lua @@ -21,9 +21,10 @@ function index() entry({"admin", "system"}, alias("admin", "system", "system"), i18n("System"), 30).index = true entry({"admin", "system", "system"}, cbi("admin_system/system"), i18n("System"), 1) - entry({"admin", "system", "admin"}, form("admin_system/admin"), i18n("Administration"), 2) + entry({"admin", "system", "admin"}, cbi("admin_system/admin"), i18n("Administration"), 2) entry({"admin", "system", "packages"}, call("action_packages"), i18n("Software"), 10) entry({"admin", "system", "packages", "ipkg"}, form("admin_system/ipkg")) + entry({"admin", "system", "startup"}, form("admin_system/startup"), i18n("Startup"), 45) if nixio.fs.access("/etc/config/fstab") then entry({"admin", "system", "fstab"}, cbi("admin_system/fstab"), i18n("Mount Points"), 50) diff --git a/modules/admin-full/luasrc/model/cbi/admin_system/startup.lua b/modules/admin-full/luasrc/model/cbi/admin_system/startup.lua new file mode 100644 index 000000000..a0c72caa2 --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_system/startup.lua @@ -0,0 +1,107 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth +Copyright 2010-2011 Jo-Philipp Wich +Copyright 2010 Manuel Munz + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ +]]-- + +require "luci.fs" +require "luci.sys" +require "luci.util" + +local inits = { } + +for _, name in ipairs(luci.sys.init.names()) do + local index = luci.sys.init.index(name) + local enabled = luci.sys.init.enabled(name) + + inits["%02i.%s" % { index, name }] = { + name = name, + index = tostring(index), + enabled = enabled + } +end + + +m = SimpleForm("initmgr", translate("Initscripts"), translate("You can enable or disable installed init scripts here. Changes will applied after a device reboot.
Warning: If you disable essential init scripts like \"network\", your device might become inaccesable!")) +m.reset = false +m.submit = false + + +s = m:section(Table, inits) + +i = s:option(DummyValue, "index", translate("Start priority")) +n = s:option(DummyValue, "name", translate("Initscript")) + + +e = s:option(Button, "endisable", translate("Enable/Disable")) + +e.render = function(self, section, scope) + if inits[section].enabled then + self.title = translate("Enabled") + self.inputstyle = "save" + else + self.title = translate("Disabled") + self.inputstyle = "reset" + end + + Button.render(self, section, scope) +end + +e.write = function(self, section) + if inits[section].enabled then + inits[section].enabled = false + return luci.sys.init.disable(inits[section].name) + else + inits[section].enabled = true + return luci.sys.init.enable(inits[section].name) + end +end + + +start = s:option(Button, "start", translate("Start")) +start.inputstyle = "apply" +start.write = function(self, section) + luci.sys.call("/etc/init.d/%s %s" %{ inits[section].name, self.option }) +end + +restart = s:option(Button, "restart", translate("Restart")) +restart.inputstyle = "reload" +restart.write = start.write + +stop = s:option(Button, "stop", translate("Stop")) +stop.inputstyle = "remove" +stop.write = start.write + + + +f = SimpleForm("rc", translate("Local Startup"), + translate("This is the content of /etc/rc.local. Insert your own commands here (in front of 'exit 0') to execute them at the end of the boot process.")) + +t = f:field(TextValue, "rcs") +t.rmempty = true +t.rows = 20 + +function t.cfgvalue() + return luci.fs.readfile("/etc/rc.local") or "" +end + +function f.handle(self, state, data) + if state == FORM_VALID then + if data.rcs then + luci.fs.writefile("/etc/rc.local", data.rcs:gsub("\r\n", "\n")) + end + end + return true +end + +return m, f -- 2.25.1