modules/admin-full: unify style of headings accross system menus, remove orphaned...
[project/luci.git] / modules / admin-full / luasrc / model / cbi / admin_system / system.lua
index a0b8844..1f488da 100644 (file)
@@ -19,16 +19,12 @@ require("luci.tools.webadmin")
 require("luci.fs")
 require("luci.config")
 
-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")
+local m, s, o
+local has_ntpd = luci.fs.access("/usr/sbin/ntpd")
 
-local has_rdate = false
 
-m.uci:foreach("system", "rdate",
-       function()
-               has_rdate = true
-               return false
-       end)
+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"))
@@ -44,52 +40,27 @@ s:tab("language", translate("Language and Style"))
 -- System Properties
 --
 
-local system, model, memtotal, memcached, membuffers, memfree = luci.sys.sysinfo()
-local uptime = luci.sys.uptime()
-
-s:taboption("general", DummyValue, "_system", translate("System")).value = system
-s:taboption("general", DummyValue, "_cpu", translate("Processor")).value = model
-
-s:taboption("general", DummyValue, "_kernel", translate("Kernel")).value =
- luci.util.exec("uname -r") or "?"
+o = s:taboption("general", DummyValue, "_systime", translate("Local Time"))
+o.template = "admin_system/clock_status"
 
-local load1, load5, load15 = luci.sys.loadavg()
-s:taboption("general", DummyValue, "_la", translate("Load")).value =
- string.format("%.2f, %.2f, %.2f", load1, load5, load15)
 
-s:taboption("general", DummyValue, "_memtotal", translate("Memory")).value =
- string.format("%.2f MB (%.0f%% %s, %.0f%% %s, %.0f%% %s)",
-  tonumber(memtotal) / 1024,
-  100 * memcached / memtotal,
-  tostring(translate("cached")),
-  100 * membuffers / memtotal,
-  tostring(translate("buffered")),
-  100 * memfree / memtotal,
-  tostring(translate("free"))
-)
+o = s:taboption("general", Value, "hostname", translate("Hostname"))
+o.datatype = "hostname"
 
-s:taboption("general", DummyValue, "_systime", translate("Local Time")).value =
- os.date("%c")
-
-s:taboption("general", DummyValue, "_uptime", translate("Uptime")).value =
- luci.tools.webadmin.date_format(tonumber(uptime))
-
-hn = s:taboption("general", Value, "hostname", translate("Hostname"))
-hn.datatype = "hostname"
-function hn.write(self, section, value)
+function o.write(self, section, value)
        Value.write(self, section, value)
        luci.sys.hostname(value)
 end
 
 
-tz = s:taboption("general", ListValue, "zonename", translate("Timezone"))
-tz:value("UTC")
+o = s:taboption("general", ListValue, "zonename", translate("Timezone"))
+o:value("UTC")
 
 for i, zone in ipairs(luci.sys.zoneinfo.TZ) do
-       tz:value(zone[1])
+       o:value(zone[1])
 end
 
-function tz.write(self, section, value)
+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
@@ -123,14 +94,14 @@ o.placeholder = 514
 o.datatype    = "port"
 
 o = s:taboption("logging", ListValue, "conloglevel", translate("Log output level"))
-o:value(7, translate("Debug"))
-o:value(6, translate("Info"))
-o:value(5, translate("Notice"))
-o:value(4, translate("Warning"))
-o:value(3, translate("Error"))
-o:value(2, translate("Critical"))
-o:value(1, translate("Alert"))
-o:value(0, translate("Emergency"))
+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
@@ -180,73 +151,40 @@ end
 
 
 --
--- Rdate
+-- NTP
 --
 
-if has_rdate then
-       s2 = m:section(TypedSection, "rdate", translate("Time Server (rdate)"))
-       s2.anonymous = true
-       s2.addremove = false
-
-       s2:option(DynamicList, "server", translate("Server"))
-end
+if has_ntpd then
+       s = m:section(TypedSection, "timeserver", translate("Time Synchronization"))
+       s.anonymous = true
+       s.addremove = false
 
+       o = s:option(Flag, "enable", translate("Enable builtin NTP server"))
+       o.rmempty = false
 
-m2 = Map("luci")
-
-f = m2:section(NamedSection, "main", "core", translate("Files to be kept when flashing a new firmware"))
-
-f:tab("detected", translate("Detected Files"),
-       translate("The following files are detected by the system and will be kept automatically during sysupgrade"))
-
-f:tab("custom", translate("Custom Files"),
-       translate("This is a list of shell glob patterns for matching files and directories to include during sysupgrade"))
-
-d = f:taboption("detected", DummyValue, "_detected", translate("Detected files"))
-d.rawhtml = true
-d.cfgvalue = function(s)
-       local list = io.popen(
-               "( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf " ..
-               "/lib/upgrade/keep.d/* 2>/dev/null) -type f 2>/dev/null; " ..
-               "opkg list-changed-conffiles ) | sort -u"
-       )
-
-       if list then
-               local files = { "<ul>" }
+       function o.cfgvalue(self)
+               return luci.sys.init.enabled("sysntpd")
+                       and self.enabled or self.disabled
+       end
 
-               while true do
-                       local ln = list:read("*l")
-                       if not ln then
-                               break
-                       else
-                               files[#files+1] = "<li>"
-                               files[#files+1] = luci.util.pcdata(ln)
-                               files[#files+1] = "</li>"
-                       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
-
-               list:close()
-               files[#files+1] = "</ul>"
-
-               return table.concat(files, "")
        end
 
-       return "<em>" .. translate("No files found") .. "</em>"
-end
 
-c = f:taboption("custom", TextValue, "_custom", translate("Custom files"))
-c.rmempty = false
-c.cols = 70
-c.rows = 30
-
-c.cfgvalue = function(self, section)
-       return nixio.fs.readfile("/etc/sysupgrade.conf")
-end
+       o = s:option(DynamicList, "server", translate("NTP server candidates"))
+       o.datatype = "host"
+       o:depends("enable", "1")
 
-c.write = function(self, section, value)
-       value = value:gsub("\r\n?", "\n")
-       return nixio.fs.writefile("/etc/sysupgrade.conf", value)
+       -- retain server list even if disabled
+       function o.remove() end
 end
 
 
-return m, m2
+return m