diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-05-04 21:37:41 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-05-04 21:37:41 +0000 |
commit | 73112f9c44b0dc333b6ec1878009e0e69c8db500 (patch) | |
tree | b1df17cb68da80cc5d88abac98800e32082f3f4c /modules/admin-full/luasrc/model/cbi | |
parent | ec0fbaff3e6f475805ab62d4ed27d293dae97965 (diff) |
modules/admin-full: fix system/admin from form() to cbi() type to add missing apply button (#234), integrate services/initscripts as system/startup
Diffstat (limited to 'modules/admin-full/luasrc/model/cbi')
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_system/startup.lua | 107 |
1 files changed, 107 insertions, 0 deletions
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 0000000000..a0c72caa2a --- /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 <steven@midlink.org> +Copyright 2010-2011 Jo-Philipp Wich <xm@subsignal.org> +Copyright 2010 Manuel Munz <freifunk at somakoma dot de> + +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.<br /><strong>Warning: If you disable essential init scripts like \"network\", your device might become inaccesable!</strong>")) +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 |