diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2014-12-03 15:17:05 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2015-01-08 16:26:20 +0100 |
commit | 1bb4822dca6113f73e3bc89e2acf15935e6f8e92 (patch) | |
tree | 35e16f100466e4e00657199b38bb3d87d52bf73f /modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua | |
parent | 9edd0e46c3f880727738ce8ca6ff1c8b85f99ef4 (diff) |
Rework LuCI build system
* Rename subdirectories to their repective OpenWrt package names
* Make each LuCI module its own standalone package
* Deploy a shared luci.mk which is used by each module Makefile
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Diffstat (limited to 'modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua')
-rw-r--r-- | modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua new file mode 100644 index 0000000000..5e82289bd8 --- /dev/null +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua @@ -0,0 +1,228 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2011 Jo-Philipp Wich <xm@subsignal.org> + +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.sys") +require("luci.sys.zoneinfo") +require("luci.tools.webadmin") +require("luci.fs") +require("luci.config") + +local m, s, o +local has_ntpd = luci.fs.access("/usr/sbin/ntpd") + +m = Map("system", translate("System"), translate("Here you can configure the basic aspects of your device like its hostname or the timezone.")) +m:chain("luci") + + +s = m:section(TypedSection, "system", translate("System Properties")) +s.anonymous = true +s.addremove = false + +s:tab("general", translate("General Settings")) +s:tab("logging", translate("Logging")) +s:tab("language", translate("Language and Style")) + + +-- +-- System Properties +-- + +o = s:taboption("general", DummyValue, "_systime", translate("Local Time")) +o.template = "admin_system/clock_status" + + +o = s:taboption("general", Value, "hostname", translate("Hostname")) +o.datatype = "hostname" + +function o.write(self, section, value) + Value.write(self, section, value) + luci.sys.hostname(value) +end + + +o = s:taboption("general", ListValue, "zonename", translate("Timezone")) +o:value("UTC") + +for i, zone in ipairs(luci.sys.zoneinfo.TZ) do + o:value(zone[1]) +end + +function o.write(self, section, value) + local function lookup_zone(title) + for _, zone in ipairs(luci.sys.zoneinfo.TZ) do + if zone[1] == title then return zone[2] end + end + end + + AbstractValue.write(self, section, value) + local timezone = lookup_zone(value) or "GMT0" + self.map.uci:set("system", section, "timezone", timezone) + luci.fs.writefile("/etc/TZ", timezone .. "\n") +end + + +-- +-- Logging +-- + +o = s:taboption("logging", Value, "log_size", translate("System log buffer size"), "kiB") +o.optional = true +o.placeholder = 16 +o.datatype = "uinteger" + +o = s:taboption("logging", Value, "log_ip", translate("External system log server")) +o.optional = true +o.placeholder = "0.0.0.0" +o.datatype = "ip4addr" + +o = s:taboption("logging", Value, "log_port", translate("External system log server port")) +o.optional = true +o.placeholder = 514 +o.datatype = "port" + +o = s:taboption("logging", ListValue, "conloglevel", translate("Log output level")) +o:value(8, translate("Debug")) +o:value(7, translate("Info")) +o:value(6, translate("Notice")) +o:value(5, translate("Warning")) +o:value(4, translate("Error")) +o:value(3, translate("Critical")) +o:value(2, translate("Alert")) +o:value(1, translate("Emergency")) + +o = s:taboption("logging", ListValue, "cronloglevel", translate("Cron Log Level")) +o.default = 8 +o:value(5, translate("Debug")) +o:value(8, translate("Normal")) +o:value(9, translate("Warning")) + + +-- +-- Langauge & Style +-- + +o = s:taboption("language", ListValue, "_lang", translate("Language")) +o:value("auto") + +local i18ndir = luci.i18n.i18ndir .. "base." +for k, v in luci.util.kspairs(luci.config.languages) do + local file = i18ndir .. k:gsub("_", "-") + if k:sub(1, 1) ~= "." and luci.fs.access(file .. ".lmo") then + o:value(k, v) + end +end + +function o.cfgvalue(...) + return m.uci:get("luci", "main", "lang") +end + +function o.write(self, section, value) + m.uci:set("luci", "main", "lang", value) +end + + +o = s:taboption("language", ListValue, "_mediaurlbase", translate("Design")) +for k, v in pairs(luci.config.themes) do + if k:sub(1, 1) ~= "." then + o:value(v, k) + end +end + +function o.cfgvalue(...) + return m.uci:get("luci", "main", "mediaurlbase") +end + +function o.write(self, section, value) + m.uci:set("luci", "main", "mediaurlbase", value) +end + + +-- +-- NTP +-- + +if has_ntpd then + + -- timeserver setup was requested, create section and reload page + if m:formvalue("cbid.system._timeserver._enable") then + m.uci:section("system", "timeserver", "ntp", + { + server = { "0.openwrt.pool.ntp.org", "1.openwrt.pool.ntp.org", "2.openwrt.pool.ntp.org", "3.openwrt.pool.ntp.org" } + } + ) + + m.uci:save("system") + luci.http.redirect(luci.dispatcher.build_url("admin/system", arg[1])) + return + end + + local has_section = false + m.uci:foreach("system", "timeserver", + function(s) + has_section = true + return false + end) + + if not has_section then + + s = m:section(TypedSection, "timeserver", translate("Time Synchronization")) + s.anonymous = true + s.cfgsections = function() return { "_timeserver" } end + + x = s:option(Button, "_enable") + x.title = translate("Time Synchronization is not configured yet.") + x.inputtitle = translate("Set up Time Synchronization") + x.inputstyle = "apply" + + else + + s = m:section(TypedSection, "timeserver", translate("Time Synchronization")) + s.anonymous = true + s.addremove = false + + o = s:option(Flag, "enable", translate("Enable NTP client")) + o.rmempty = false + + function o.cfgvalue(self) + return luci.sys.init.enabled("sysntpd") + and self.enabled or self.disabled + end + + function o.write(self, section, value) + if value == self.enabled then + luci.sys.init.enable("sysntpd") + luci.sys.call("env -i /etc/init.d/sysntpd start >/dev/null") + else + luci.sys.call("env -i /etc/init.d/sysntpd stop >/dev/null") + luci.sys.init.disable("sysntpd") + end + end + + + o = s:option(Flag, "enable_server", translate("Provide NTP server")) + o:depends("enable", "1") + + + o = s:option(DynamicList, "server", translate("NTP server candidates")) + o.datatype = "host" + o:depends("enable", "1") + + -- retain server list even if disabled + function o.remove() end + + end +end + +return m |