flm01/mote/v1/openwrt/package/luci/modules/admin-mini/luasrc/model/cbi/mini/system.lua

224 lines
6.4 KiB
Lua

--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.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: system.lua 5314 2009-08-27 17:54:51Z jow $
]]--
require("luci.sys")
require("luci.sys.zoneinfo")
require("luci.tools.webadmin")
m = Map("system", translate("system"), "")
m.pageaction = false
s = m:section(TypedSection, "system", translate("general"))
s.anonymous = true
s.addremove = false
local system, model, memtotal, memcached, membuffers, memfree = luci.sys.sysinfo()
local uptime = luci.sys.uptime()
s:option(DummyValue, "_chipset", translate("m_i_chipset")).value = system
s:option(DummyValue, "_cpu", translate("m_i_processor")).value = model
local load1, load5, load15 = luci.sys.loadavg()
s:option(DummyValue, "_la", translate("load")).value =
string.format("%.2f, %.2f, %.2f", load1, load5, load15)
s:option(DummyValue, "_memtotal", translate("m_i_memory")).value =
string.format("%.2f MB (%.0f%% %s, %.0f%% %s, %.0f%% %s)",
tonumber(memtotal) / 1024,
100 * memcached / memtotal,
tostring(translate("mem_cached", "")),
100 * membuffers / memtotal,
tostring(translate("mem_buffered", "")),
100 * memfree / memtotal,
tostring(translate("mem_free", ""))
)
s:option(DummyValue, "_systime", translate("m_i_systemtime")).value =
os.date("%c")
s:option(DummyValue, "_uptime", translate("m_i_uptime")).value =
luci.tools.webadmin.date_format(tonumber(uptime))
s:option(DummyValue, "_hostname", translate("hostname")).value =
luci.sys.hostname(value)
-- Wifi Data init --
local uci = luci.model.uci.cursor()
if not uci:get("network", "wan") then
uci:section("network", "interface", "wan", {proto="none", ifname=" "})
uci:save("network")
uci:commit("network")
end
local wlcursor = luci.model.uci.cursor_state()
local wireless = wlcursor:get_all("wireless")
local wifidata = luci.sys.wifi.getiwconfig()
local wifidevs = {}
local ifaces = {}
for k, v in pairs(wireless) do
if v[".type"] == "wifi-iface" then
table.insert(ifaces, v)
end
end
wlcursor:foreach("wireless", "wifi-device",
function(section)
table.insert(wifidevs, section[".name"])
end)
-- Wifi Status Table --
s = m:section(Table, ifaces, translate("wifi"))
link = s:option(DummyValue, "_link", translate("link"))
function link.cfgvalue(self, section)
local ifname = self.map:get(section, "ifname")
return wifidata[ifname] and wifidata[ifname]["Link Quality"] or "-"
end
essid = s:option(DummyValue, "ssid", "ESSID")
bssid = s:option(DummyValue, "_bsiid", "BSSID")
function bssid.cfgvalue(self, section)
local ifname = self.map:get(section, "ifname")
return (wifidata[ifname] and (wifidata[ifname].Cell
or wifidata[ifname]["Access Point"])) or "-"
end
protocol = s:option(DummyValue, "_mode", translate("protocol"))
function protocol.cfgvalue(self, section)
local mode = wireless[self.map:get(section, "device")].mode
return mode and "802." .. mode
end
mode = s:option(DummyValue, "mode", translate("mode"))
encryption = s:option(DummyValue, "encryption", translate("iwscan_encr"))
power = s:option(DummyValue, "_power", translate("power"))
function power.cfgvalue(self, section)
local ifname = self.map:get(section, "ifname")
return wifidata[ifname] and wifidata[ifname]["Tx-Power"] or "-"
end
scan = s:option(Button, "_scan", translate("scan"))
scan.inputstyle = "find"
function scan.cfgvalue(self, section)
return self.map:get(section, "ifname") or false
end
-- Wifi-Scan-Table --
t2 = m:section(Table, {}, translate("iwscan"), translate("iwscan1"))
function scan.write(self, section)
m.autoapply = false
t2.render = t2._render
local ifname = self.map:get(section, "ifname")
luci.util.update(t2.data, luci.sys.wifi.iwscan(ifname))
end
t2._render = t2.render
t2.render = function() end
t2:option(DummyValue, "Quality", translate("iwscan_link"))
essid = t2:option(DummyValue, "ESSID", "ESSID")
function essid.cfgvalue(self, section)
return self.map:get(section, "ESSID")
end
t2:option(DummyValue, "Address", "BSSID")
t2:option(DummyValue, "Mode", translate("mode"))
chan = t2:option(DummyValue, "channel", translate("channel"))
function chan.cfgvalue(self, section)
return self.map:get(section, "Channel")
or self.map:get(section, "Frequency")
or "-"
end
t2:option(DummyValue, "Encryption key", translate("iwscan_encr"))
t2:option(DummyValue, "Signal level", translate("iwscan_signal"))
t2:option(DummyValue, "Noise level", translate("iwscan_noise"))
-- Interface Data Init--
local network = luci.model.uci.cursor_state():get_all("network")
local netstat = luci.sys.net.deviceinfo()
local ifaces = {}
for k, v in pairs(network) do
if v[".type"] == "interface" and k ~= "loopback" then
table.insert(ifaces, v)
end
end
-- Interfaces Status Table--
s = m:section(Table, ifaces, translate("interfaces"))
s.parse = function() end
s:option(DummyValue, ".name", translate("interface"))
hwaddr = s:option(DummyValue, "_hwaddr",
translate("network_interface_hwaddr"), translate("network_interface_hwaddr_desc"))
function hwaddr.cfgvalue(self, section)
local ix = self.map:get(section, "ifname") or ""
return luci.fs.readfile("/sys/class/net/" .. ix .. "/address")
or luci.util.exec("ifconfig " .. ix):match(" ([A-F0-9:]+)%s*\n")
or "n/a"
end
s:option(DummyValue, "ipaddr", translate("ipaddress"))
s:option(DummyValue, "netmask", translate("netmask"))
txrx = s:option(DummyValue, "_txrx",
translate("network_interface_txrx"), translate("network_interface_txrx_desc"))
function txrx.cfgvalue(self, section)
local ix = self.map:get(section, "ifname")
local rx = netstat and netstat[ix] and netstat[ix][1]
rx = rx and luci.tools.webadmin.byte_format(tonumber(rx)) or "-"
local tx = netstat and netstat[ix] and netstat[ix][9]
tx = tx and luci.tools.webadmin.byte_format(tonumber(tx)) or "-"
return string.format("%s / %s", tx, rx)
end
errors = s:option(DummyValue, "_err",
translate("network_interface_err"), translate("network_interface_err_desc"))
function errors.cfgvalue(self, section)
local ix = self.map:get(section, "ifname")
local rx = netstat and netstat[ix] and netstat[ix][3]
local tx = netstat and netstat[ix] and netstat[ix][11]
rx = rx and tostring(rx) or "-"
tx = tx and tostring(tx) or "-"
return string.format("%s / %s", tx, rx)
end
return m