diff options
-rw-r--r-- | modules/admin-full/luasrc/controller/admin/status.lua | 4 | ||||
-rw-r--r-- | modules/admin-full/luasrc/view/admin_status/interfaces.htm | 312 |
2 files changed, 2 insertions, 314 deletions
diff --git a/modules/admin-full/luasrc/controller/admin/status.lua b/modules/admin-full/luasrc/controller/admin/status.lua index a408bb44f..c816625bf 100644 --- a/modules/admin-full/luasrc/controller/admin/status.lua +++ b/modules/admin-full/luasrc/controller/admin/status.lua @@ -18,8 +18,8 @@ function index() luci.i18n.loadc("base") local i18n = luci.i18n.translate - entry({"admin", "status"}, template("admin_status/index"), i18n("Status"), 20).index = true - entry({"admin", "status", "interfaces"}, template("admin_status/interfaces"), i18n("Interfaces"), 1) + entry({"admin", "status"}, alias("admin", "status", "interfaces"), i18n("Status"), 20).index = true + entry({"admin", "status", "interfaces"}, template("admin_status/index"), i18n("Overview"), 1) entry({"admin", "status", "iptables"}, call("action_iptables"), i18n("Firewall"), 2).leaf = true entry({"admin", "status", "conntrack"}, template("admin_status/conntrack"), i18n("Active Connections"), 3) entry({"admin", "status", "routes"}, template("admin_status/routes"), i18n("Routes"), 4) diff --git a/modules/admin-full/luasrc/view/admin_status/interfaces.htm b/modules/admin-full/luasrc/view/admin_status/interfaces.htm deleted file mode 100644 index 0ee2cf659..000000000 --- a/modules/admin-full/luasrc/view/admin_status/interfaces.htm +++ /dev/null @@ -1,312 +0,0 @@ -<%# -LuCI - Lua Configuration Interface -Copyright 2008-2009 Steven Barth <steven@midlink.org> -Copyright 2008-2009 Jo-Philipp Wich <xm@leipzig.freifunk.net> - -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$ - --%> - -<%- - - local sys = require "luci.sys" - local wba = require "luci.tools.webadmin" - local uci = require "luci.model.uci".cursor_state() - local fs = require "nixio.fs" - - local bridge_ifs = { } - local single_ifs = { } - local wifi_ifs = { } - local devinfo = sys.net.deviceinfo() - - uci:foreach("network", "interface", - function(s) - if s['.name'] ~= "loopback" then - if s.type == "bridge" then - bridge_ifs[#bridge_ifs+1] = s - else - single_ifs[#single_ifs+1] = s - end - end - end) - - uci:foreach("wireless", "wifi-iface", - function(s) - wifi_ifs[s.network or s.device] = true - end) - - function is_wifi(i) - return wifi_ifs[i] - or i:match("^wl%d+") - or i:match("^ath%d+") - or i:match("^wlan%d+") - end - - function get_ifname(s) - return s.ifname and s.ifname:match("%S+") - end - - function get_ifnames(s) - local l = { } - if s.ifname then - for n in s.ifname:gmatch("%S+") do - l[#l+1] = n - end - end - return l - end - - function get_vlan(i) - return i and i:match("^%w+%.(%d+)$") - end - - function get_vlan_ports(i) - local x = get_vlan(i) - local d = i:match("(%d+)%.%d+$") - local p = { } - - uci:foreach("network", "switch", - function(s) - local d2 = s['.name']:match("%d+$") - if d2 == d and s["vlan"..x] then - for pt in s["vlan"..x]:gmatch("%S+") do - p[#p+1] = pt - end - end - end) - - return p - end - - function get_switch_driver(i) - local n, d = i:match("([a-z]+)(%d+)%.%d+$") - local hw = fs.readfile("/proc/switch/%s%s/driver" %{ n, d }) - or fs.readfile("/proc/switch/%s/driver" % d ) - - return hw and hw:match("%S+") - end - - function get_mac(i) - for l in luci.util.execi("ifconfig %q" % i) do - if l:find("HWaddr ") then - return l:match("HWaddr (%S+)") - end - end - return "00:00:00:00:00:00" - end - - function get_aliases(s) - local a = { } - uci:foreach("network", "alias", - function(s2) - if s2.interface == s['.name'] then - a[#a+1] = s2 - end - end) - return a - end - - function get_iwinfo(i) - local w = { } - uci:foreach("wireless", "wifi-iface", - function(s) - if s.ifname == i then - w.type = uci:get("wireless", s.device, "type") - w.channel = uci:get("wireless", s.device, "channel") - w.mode = ( s.wds == "1" ) and s.mode .. "wds" or s.mode - w.ssid = s.ssid - w.type = w.type and w.type:gsub("^([a-z])", string.upper) - end - end) - return w - end - - function get_iwmode(w) - local m = { - ap = translate("Master"), - sta = translate("Client"), - wds = translate("WDS"), - stawds = translate("Client + WDS"), - apwds = translate("Master + WDS"), - adhoc = translate("Ad-Hoc"), - ahdemo = translate("Pseudo Ad-Hoc") - } - - return m[w.mode] or w.mode - end - - function get_brinfo(s) - local b = { } - local m = false - for l in luci.util.execi("brctl show") do - if not l:match("STP") then - if m and l:match("^[a-z]") then - break - elseif m or l:match("^br%%-%s" % s['.name']) then - m = true - local r = luci.util.split(l, "%s+", nil, true) - if #r > 2 then - b.name = r[1] - b.id = r[2] - b.stp = r[3] == "yes" - b.ifnames = { r[4] } - else - b.ifnames[#b.ifnames+1] = r[2] - end - end - end - end - return b - end - --%> - -<%+header%> - -<h2><a id="content" name="content"><%:Interface Status%></a></h2> - -<form method="post" action="<%=REQUEST_URI%>"> - <div class="cbi-map"> - <fieldset class="cbi-section"> - <% for _, i in ipairs(single_ifs) do - dev = get_ifname(i) - vlan = get_vlan(dev) - - if dev and devinfo and devinfo[dev] then - %> - <h3><%:Interface%> <%=i['.name']%></h3> - <p style="font-size:90%;padding-left:1em"> - - <strong><%:Device%>:</strong> - <%=dev%> (<%:MAC%> <%=get_mac(dev)%>)<br /> - - <strong><%:Type%>:</strong> - <% if is_wifi(dev) then iw = get_iwinfo(dev) -%> - <%:Wireless Adapter%> (<%=iw.type%>)<br /> - <% if iw then %> - └ <strong><%:Mode%>:</strong> <%=get_iwmode(iw)%><br /> - └ <strong><%:SSID%>:</strong> <%=iw.ssid%><br /> - └ <strong><%:Channel%>:</strong> <%=iw.channel%> - <% end %> - <% else -%> - <% if vlan then %> - <%:Ethernet Switch%> (<%=get_switch_driver(dev)%>)<br /> - └ <strong><%:VLAN%>:</strong> <%=get_vlan(dev)%> (<%:Ports%> <%=table.concat(get_vlan_ports(dev), ", ")%>) - <% else %> - <%:Ethernet Adapter%> - <% end %> - <% end -%><br /> - - <strong><%:Transfer%></strong><br /> - └ <strong><%:RX%>:</strong> <%=devinfo[dev][2]%> <%:Pkts.%> (<%=wba.byte_format(tonumber(devinfo[dev][1]))%>)<br /> - └ <strong><%:TX%>:</strong> <%=devinfo[dev][10]%> <%:Pkts.%> (<%=wba.byte_format(tonumber(devinfo[dev][9]))%>)<br /> - - <%- if ( i.ipaddr and #i.ipaddr > 0 ) or ( i.ip6addr and #i.ip6addr > 0 ) then -%> - <strong><%:IP Configuration%></strong><br /> - └ <strong><%:Primary%>:</strong> - <% if i.ipaddr and #i.ipaddr > 0 then %> - <%=i.ipaddr%>/<%=i.netmask%> - <% if i.proto == "dhcp" then -%> - (<%:DHCP assigned%>) - <%- end %> - <% else %> - <em><%:Not configured%></em> - <% end %><br /> - - <% for i, a in ipairs(get_aliases(i)) do %> - └ <strong><%:Alias%> #<%=i%>:</strong> - <%=a.ipaddr%>/<%=a.netmask%> (<%:Device%> <%=dev%>:<%=i%>) <br /> - <% end %> - - <% if i.ip6addr and #i.ip6addr > 0 then %> - └ <strong><%:IPv6%>:</strong> <%=i.ip6addr%><br /> - <% end %> - <%- end -%> - <br /></p> - <% end end %> - - - <% for _, b in ipairs(bridge_ifs) do - br = get_brinfo(b) - dev = br and br.name - - if br and devinfo and devinfo[dev] then - %> - <h3><%:Bridge%> <%=br.name%></h3> - <p style="font-size:90%;padding-left:1em"> - - <strong><%:Device%>:</strong> - <%=dev%> (<%:MAC%> <%=get_mac(dev)%>)<br /> - - <strong><%:Type%>:</strong> - <%:Ethernet Bridge%><br /> - - └ <strong><%:ID%>:</strong> <%=br.id%><br /> - └ <strong><%:STP%>:</strong> <%=br.stp and "enabled" or "disabled"%><br /> - - <strong><%:Transfer%></strong><br /> - └ <strong><%:RX%>:</strong> <%=devinfo[dev][2]%> Pkts. (<%=wba.byte_format(tonumber(devinfo[dev][1]))%>)<br /> - └ <strong><%:TX%>:</strong> <%=devinfo[dev][10]%> Pkts. (<%=wba.byte_format(tonumber(devinfo[dev][9]))%>)<br /> - - <%- if ( b.ipaddr and #b.ipaddr > 0 ) or ( b.ip6addr and #b.ip6addr > 0 ) then -%> - <strong><%:IP Configuration%></strong><br /> - └ <strong><%:Primary%>:</strong> - <% if b.ipaddr and #b.ipaddr > 0 then %> - <%=b.ipaddr%>/<%=b.netmask%> - <% if b.proto == "dhcp" then -%> - (<%:DHCP assigned%>) - <%- end %> - <% else %> - <em><%:Not configured%></em> - <% end %><br /> - - <% for i, a in ipairs(get_aliases(b)) do %> - └ <strong><%:Alias%> #<%=i%>:</strong> - <%=a.ipaddr%>/<%=a.netmask%> (<%:Device%> <%=dev%>:<%=i%>) <br /> - <% end %> - - <% if b.ip6addr and #b.ip6addr > 0 then %> - └ <strong><%:IPv6%>:</strong> <%=b.ip6addr%><br /> - <% end %> - <%- end -%> - - <% for n, i in ipairs(br.ifnames) do - dev = i - vlan = get_vlan(dev) - %> - <strong><%:Bridge Port%> <%=n%></strong><br /> - - └ <strong><%:Device%>:</strong> - <%=dev%> (<%:MAC%> <%=get_mac(dev)%>)<br /> - - └ <strong><%:Type%>:</strong> - <% if is_wifi(dev) then iw = get_iwinfo(dev) -%> - <%:Wireless Adapter%> (<%=iw.type%>)<br /> - <% if iw then %> - └ <strong><%:Mode%>:</strong> <%=get_iwmode(iw)%><br /> - └ <strong><%:SSID%>:</strong> <%=iw.ssid%><br /> - └ <strong><%:Channel%>:</strong> <%=iw.channel%> - <% end %> - <% else -%> - <% if vlan then %> - <%:Ethernet Switch%> (<%=get_switch_driver(dev)%>)<br /> - └ <strong><%:VLAN%>:</strong> - <%=get_vlan(dev)%> (<%:Ports%> <%=table.concat(get_vlan_ports(dev), ", ")%>) - <% else %> - <%:Ethernet Adapter%> - <% end %> - <% end -%><br /> - <% end %> - <br /></p> - <% end end %> - </fieldset> - </div> -</form> - -<%+footer%> |