X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fcontroller%2Fadmin%2Fnetwork.lua;h=f401ecd185151560a2585c77c3353b570b9e9cfc;hp=00e1fe2ff1fb9f676a7cc924633bd1ae2ebdfb36;hb=69ac1031b7e83fb68ee1f6f952890fc0654f54f8;hpb=dce04bbcb2b2b41898281ed5de0622705bf17b1e diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 00e1fe2ff..f401ecd18 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 @@ -66,7 +68,7 @@ function index() page = entry({"admin", "network", "wireless_reconnect"}, call("wifi_reconnect"), nil) page.leaf = true - page = entry({"admin", "network", "wireless_shutdown"}, call("wifi_reconnect"), nil) + page = entry({"admin", "network", "wireless_shutdown"}, call("wifi_shutdown"), nil) page.leaf = true page = entry({"admin", "network", "wireless"}, arcombine(template("admin_network/wifi_overview"), cbi("admin_network/wifi")), _("Wifi"), 15) @@ -154,6 +156,12 @@ function index() page = entry({"admin", "network", "diag_traceroute"}, call("diag_traceroute"), nil) page.leaf = true + + page = entry({"admin", "network", "diag_ping6"}, call("diag_ping6"), nil) + page.leaf = true + + page = entry({"admin", "network", "diag_traceroute6"}, call("diag_traceroute6"), nil) + page.leaf = true -- end end @@ -233,13 +241,12 @@ function wifi_delete(network) luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) end -function iface_status() - local path = luci.dispatcher.context.requestpath +function iface_status(ifaces) local netm = require "luci.model.network".init() local rv = { } local iface - for iface in path[#path]:gmatch("[%w%.%-_]+") do + for iface in ifaces:gmatch("[%w%.%-_]+") do local net = netm:get_network(iface) local device = net and net:get_interface() if device then @@ -316,11 +323,8 @@ function iface_status() luci.http.status(404, "No such device") end -function iface_reconnect() - local path = luci.dispatcher.context.requestpath - local iface = path[#path] +function iface_reconnect(iface) local netmd = require "luci.model.network".init() - local net = netmd:get_network(iface) if net then luci.sys.call("env -i /sbin/ifup %q >/dev/null 2>/dev/null" % iface) @@ -331,11 +335,8 @@ function iface_reconnect() luci.http.status(404, "No such interface") end -function iface_shutdown() - local path = luci.dispatcher.context.requestpath - local iface = path[#path] +function iface_shutdown(iface) local netmd = require "luci.model.network".init() - local net = netmd:get_network(iface) if net then luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface) @@ -346,11 +347,8 @@ function iface_shutdown() luci.http.status(404, "No such interface") end -function iface_delete() - local path = luci.dispatcher.context.requestpath - local iface = path[#path] +function iface_delete(iface) local netmd = require "luci.model.network".init() - local net = netmd:del_network(iface) if net then luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface) @@ -363,13 +361,12 @@ function iface_delete() luci.http.status(404, "No such interface") end -function wifi_status() - local path = luci.dispatcher.context.requestpath +function wifi_status(devs) local s = require "luci.tools.status" local rv = { } local dev - for dev in path[#path]:gmatch("[%w%.%-]+") do + for dev in devs:gmatch("[%w%.%-]+") do rv[#rv+1] = s.wifi_network(dev) end @@ -382,23 +379,19 @@ function wifi_status() luci.http.status(404, "No such device") end -function wifi_reconnect() - local path = luci.dispatcher.context.requestpath - local mode = path[#path-1] - local wnet = path[#path] +local function wifi_reconnect_shutdown(shutdown, wnet) local netmd = require "luci.model.network".init() - local net = netmd:get_wifinet(wnet) local dev = net:get_device() if dev and net then luci.sys.call("env -i /sbin/wifi down >/dev/null 2>/dev/null") dev:set("disabled", nil) - net:set("disabled", (mode == "wireless_shutdown") and 1 or nil) + net:set("disabled", shutdown and 1 or nil) netmd:commit("wireless") luci.sys.call("env -i /sbin/wifi up >/dev/null 2>/dev/null") - luci.http.status(200, (mode == "wireless_shutdown") and "Shutdown" or "Reconnected") + luci.http.status(200, shutdown and "Shutdown" or "Reconnected") return end @@ -406,6 +399,14 @@ function wifi_reconnect() luci.http.status(404, "No such radio") end +function wifi_reconnect(wnet) + wifi_reconnect_shutdown(false, wnet) +end + +function wifi_shutdown(wnet) + wifi_reconnect_shutdown(true, wnet) +end + function lease_status() local s = require "luci.tools.status" @@ -417,10 +418,14 @@ function lease_status() luci.http.write(']') end -function diag_command(cmd) - local path = luci.dispatcher.context.requestpath - local addr = path[#path] +function switch_status(switches) + local s = require "luci.tools.status" + luci.http.prepare_content("application/json") + luci.http.write_json(s.switch_status(switches)) +end + +function diag_command(cmd, addr) if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then luci.http.prepare_content("text/plain") @@ -442,14 +447,22 @@ function diag_command(cmd) luci.http.status(500, "Bad address") end -function diag_ping() - diag_command("ping -c 5 -W 1 %q 2>&1") +function diag_ping(addr) + diag_command("ping -c 5 -W 1 %q 2>&1", addr) +end + +function diag_traceroute(addr) + diag_command("traceroute -q 1 -w 1 -n %q 2>&1", addr) +end + +function diag_nslookup(addr) + diag_command("nslookup %q 2>&1", addr) end -function diag_traceroute() - diag_command("traceroute -q 1 -w 1 -n %q 2>&1") +function diag_ping6(addr) + diag_command("ping6 -c 5 %q 2>&1", addr) end -function diag_nslookup() - diag_command("nslookup %q 2>&1") +function diag_traceroute6(addr) + diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr) end