Fixed a design flaw in luci.model.uci
[project/luci.git] / modules / admin-mini / luasrc / model / cbi / mini / index.lua
1 --[[
2 LuCI - Lua Configuration Interface
3
4 Copyright 2008 Steven Barth <steven@midlink.org>
5
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
9
10         http://www.apache.org/licenses/LICENSE-2.0
11
12 $Id$
13 ]]--
14 require("luci.sys")
15 require("luci.tools.webadmin")
16
17 w = Template("mini/index")
18
19 f = SimpleForm("main", translate("system"))
20 f.reset = false
21 f.submit = false
22
23 local system, model, memtotal, memcached, membuffers, memfree = luci.sys.sysinfo()
24 local uptime = luci.sys.uptime()
25 f:field(DummyValue, "_system", translate("system")).value = system
26 f:field(DummyValue, "_cpu", translate("m_i_processor")).value = model
27
28 local load1, load5, load15 = luci.sys.loadavg()
29 f:field(DummyValue, "_la", translate("load")).value = 
30  string.format("%.2f, %.2f, %.2f", load1, load5, load15)
31  
32 f:field(DummyValue, "_memtotal", translate("m_i_memory")).value = 
33  string.format("%.2f MB (%.0f%% %s, %.0f%% %s, %.0f%% %s)",
34   tonumber(memtotal) / 1024,
35   100 * memcached / memtotal,
36   translate("mem_cached") or "",
37   100 * membuffers / memtotal,
38   translate("mem_buffered") or "",
39   100 * memfree / memtotal,
40   translate("mem_free") or "")
41
42 f:field(DummyValue, "_systime", translate("m_i_systemtime")).value =
43  os.date("%c")
44  
45 f:field(DummyValue, "_uptime", translate("m_i_uptime")).value = 
46  luci.tools.webadmin.date_format(tonumber(uptime))
47  
48  
49 m = Map("network", translate("interfaces"))
50 m.stateful = true
51 local netstat = luci.sys.net.deviceinfo()
52
53 m.parse = function() end
54
55 s = m:section(TypedSection, "interface", "")
56 s.template  = "cbi/tblsection"
57
58 function s.filter(self, section)
59         return section ~= "loopback" and section
60 end
61
62 hwaddr = s:option(DummyValue, "_hwaddr")
63 function hwaddr.cfgvalue(self, section)
64         local ix = self.map:get(section, "ifname") or ""
65         return luci.fs.readfile("/sys/class/net/" .. ix .. "/address") or "n/a"
66 end
67
68
69 s:option(DummyValue, "ipaddr", translate("ipaddress"))
70
71 s:option(DummyValue, "netmask", translate("netmask"))
72
73
74 txrx = s:option(DummyValue, "_txrx")
75
76 function txrx.cfgvalue(self, section)
77         local ix = self.map:get(section, "ifname")
78         
79         local rx = netstat and netstat[ix] and netstat[ix][1]
80         rx = rx and luci.tools.webadmin.byte_format(tonumber(rx)) or "-"
81         
82         local tx = netstat and netstat[ix] and netstat[ix][9]
83         tx = tx and luci.tools.webadmin.byte_format(tonumber(tx)) or "-"
84         
85         return string.format("%s / %s", tx, rx)
86 end
87
88 errors = s:option(DummyValue, "_err")
89
90 function errors.cfgvalue(self, section)
91         local ix = self.map:get(section, "ifname")
92         
93         local rx = netstat and netstat[ix] and netstat[ix][3]
94         local tx = netstat and netstat[ix] and netstat[ix][11]
95         
96         rx = rx and tostring(rx) or "-"
97         tx = tx and tostring(tx) or "-"
98         
99         return string.format("%s / %s", tx, rx)
100 end
101
102
103  
104 w2 = Template("mini/index2")
105 return w, f, m, w2