summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--modules/admin-full/luasrc/controller/admin/status.lua4
-rw-r--r--modules/admin-full/luasrc/view/admin_status/interfaces.htm312
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 %>
- &nbsp; &#x2514; <strong><%:Mode%>:</strong> <%=get_iwmode(iw)%><br />
- &nbsp; &#x2514; <strong><%:SSID%>:</strong> <%=iw.ssid%><br />
- &nbsp; &#x2514; <strong><%:Channel%>:</strong> <%=iw.channel%>
- <% end %>
- <% else -%>
- <% if vlan then %>
- <%:Ethernet Switch%> (<%=get_switch_driver(dev)%>)<br />
- &nbsp; &#x2514; <strong><%:VLAN%>:</strong> <%=get_vlan(dev)%> (<%:Ports%> <%=table.concat(get_vlan_ports(dev), ", ")%>)
- <% else %>
- <%:Ethernet Adapter%>
- <% end %>
- <% end -%><br />
-
- <strong><%:Transfer%></strong><br />
- &nbsp; &#x2514; <strong><%:RX%>:</strong> <%=devinfo[dev][2]%> <%:Pkts.%> (<%=wba.byte_format(tonumber(devinfo[dev][1]))%>)<br />
- &nbsp; &#x2514; <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 />
- &nbsp; &#x2514; <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 %>
- &nbsp; &#x2514; <strong><%:Alias%> #<%=i%>:</strong>
- <%=a.ipaddr%>/<%=a.netmask%> (<%:Device%> <%=dev%>:<%=i%>) <br />
- <% end %>
-
- <% if i.ip6addr and #i.ip6addr > 0 then %>
- &nbsp; &#x2514; <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 />
-
- &nbsp; &#x2514; <strong><%:ID%>:</strong> <%=br.id%><br />
- &nbsp; &#x2514; <strong><%:STP%>:</strong> <%=br.stp and "enabled" or "disabled"%><br />
-
- <strong><%:Transfer%></strong><br />
- &nbsp; &#x2514; <strong><%:RX%>:</strong> <%=devinfo[dev][2]%> Pkts. (<%=wba.byte_format(tonumber(devinfo[dev][1]))%>)<br />
- &nbsp; &#x2514; <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 />
- &nbsp; &#x2514; <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 %>
- &nbsp; &#x2514; <strong><%:Alias%> #<%=i%>:</strong>
- <%=a.ipaddr%>/<%=a.netmask%> (<%:Device%> <%=dev%>:<%=i%>) <br />
- <% end %>
-
- <% if b.ip6addr and #b.ip6addr > 0 then %>
- &nbsp; &#x2514; <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 />
-
- &nbsp; &#x2514; <strong><%:Device%>:</strong>
- <%=dev%> (<%:MAC%> <%=get_mac(dev)%>)<br />
-
- &nbsp; &#x2514; <strong><%:Type%>:</strong>
- <% if is_wifi(dev) then iw = get_iwinfo(dev) -%>
- <%:Wireless Adapter%> (<%=iw.type%>)<br />
- <% if iw then %>
- &nbsp; &nbsp; &nbsp; &#x2514; <strong><%:Mode%>:</strong> <%=get_iwmode(iw)%><br />
- &nbsp; &nbsp; &nbsp; &#x2514; <strong><%:SSID%>:</strong> <%=iw.ssid%><br />
- &nbsp; &nbsp; &nbsp; &#x2514; <strong><%:Channel%>:</strong> <%=iw.channel%>
- <% end %>
- <% else -%>
- <% if vlan then %>
- <%:Ethernet Switch%> (<%=get_switch_driver(dev)%>)<br />
- &nbsp; &nbsp; &nbsp; &#x2514; <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%>