From: Jo-Philipp Wich Date: Tue, 11 Sep 2012 14:18:28 +0000 (+0000) Subject: modules/admin-full, modules/admin-core, themes/base: add port status indicators to... X-Git-Tag: 0.11.0~127 X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=57e51eba60cd95b82b11c5857651861decf8dcbe modules/admin-full, modules/admin-core, themes/base: add port status indicators to switch config page --- diff --git a/modules/admin-core/luasrc/tools/status.lua b/modules/admin-core/luasrc/tools/status.lua index cd543f71e..e5c517f23 100644 --- a/modules/admin-core/luasrc/tools/status.lua +++ b/modules/admin-core/luasrc/tools/status.lua @@ -9,7 +9,6 @@ You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -$Id$ ]]-- module("luci.tools.status", package.seeall) @@ -153,3 +152,36 @@ function wifi_network(id) end return { } end + +function switch_status(dev) + local ports = { } + local swc = io.popen("swconfig dev %q show" % dev, "r") + if swc then + local l + repeat + l = swc:read("*l") + if l then + local port, up = l:match("port:(%d+) link:(%w+)") + if port then + local speed = l:match(" speed:(%d+)") + local duplex = l:match(" (%w+)-duplex") + local txflow = l:match(" (txflow)") + local rxflow = l:match(" (rxflow)") + local auto = l:match(" (auto)") + + ports[#ports+1] = { + port = tonumber(port) or 0, + speed = tonumber(speed) or 0, + link = (up == "up"), + duplex = (duplex == "full"), + rxflow = (not not rxflow), + txflow = (not not txflow), + auto = (not not auto) + } + end + end + until not l + swc:close() + end + return ports +end diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 00e1fe2ff..85dc68fff 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -10,7 +10,6 @@ You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -$Id$ ]]-- module("luci.controller.admin.network", package.seeall) @@ -39,6 +38,9 @@ function index() page.target = cbi("admin_network/vlan") page.title = _("Switch") page.order = 20 + + page = entry({"admin", "network", "switch_status"}, call("switch_status"), nil) + page.leaf = true end @@ -417,6 +419,14 @@ function lease_status() luci.http.write(']') end +function switch_status() + local path = luci.dispatcher.context.requestpath + local s = require "luci.tools.status" + + luci.http.prepare_content("application/json") + luci.http.write_json(s.switch_status(path[#path])) +end + function diag_command(cmd) local path = luci.dispatcher.context.requestpath local addr = path[#path] diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/vlan.lua b/modules/admin-full/luasrc/model/cbi/admin_network/vlan.lua index 25fd0a899..9dc3f2f63 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/vlan.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/vlan.lua @@ -10,7 +10,6 @@ You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -$Id$ ]]-- m = Map("network", translate("Switch"), translate("The network ports on this device can be combined to several VLANs in which computers can communicate directly with each other. VLANs are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network.")) @@ -276,6 +275,12 @@ m.uci:foreach("network", "switch", port_opts[#port_opts+1] = po end + + + -- Switch status template + s = m:section(SimpleSection) + s.template = "admin_network/switch_status" + s.switch = switch_name end ) diff --git a/modules/admin-full/luasrc/view/admin_network/switch_status.htm b/modules/admin-full/luasrc/view/admin_network/switch_status.htm new file mode 100644 index 000000000..31da264dc --- /dev/null +++ b/modules/admin-full/luasrc/view/admin_network/switch_status.htm @@ -0,0 +1,44 @@ + diff --git a/themes/base/htdocs/luci-static/resources/icons/port_down.png b/themes/base/htdocs/luci-static/resources/icons/port_down.png new file mode 100644 index 000000000..25ea17232 Binary files /dev/null and b/themes/base/htdocs/luci-static/resources/icons/port_down.png differ diff --git a/themes/base/htdocs/luci-static/resources/icons/port_up.png b/themes/base/htdocs/luci-static/resources/icons/port_up.png new file mode 100644 index 000000000..918247887 Binary files /dev/null and b/themes/base/htdocs/luci-static/resources/icons/port_up.png differ