diff options
Diffstat (limited to 'modules/admin-full/luasrc/controller/admin/network.lua')
-rw-r--r-- | modules/admin-full/luasrc/controller/admin/network.lua | 75 |
1 files changed, 32 insertions, 43 deletions
diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 6f55ff777..f401ecd18 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -68,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) @@ -241,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 @@ -324,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) @@ -339,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) @@ -354,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) @@ -371,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 @@ -390,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 @@ -414,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" @@ -425,18 +418,14 @@ function lease_status() luci.http.write(']') end -function switch_status() - local path = luci.dispatcher.context.requestpath +function switch_status(switches) local s = require "luci.tools.status" luci.http.prepare_content("application/json") - luci.http.write_json(s.switch_status(path[#path])) + luci.http.write_json(s.switch_status(switches)) end -function diag_command(cmd) - local path = luci.dispatcher.context.requestpath - local addr = path[#path] - +function diag_command(cmd, addr) if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then luci.http.prepare_content("text/plain") @@ -458,22 +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() - diag_command("traceroute -q 1 -w 1 -n %q 2>&1") +function diag_traceroute(addr) + diag_command("traceroute -q 1 -w 1 -n %q 2>&1", addr) end -function diag_nslookup() - diag_command("nslookup %q 2>&1") +function diag_nslookup(addr) + diag_command("nslookup %q 2>&1", addr) end -function diag_ping6() - diag_command("ping6 -c 5 %q 2>&1") +function diag_ping6(addr) + diag_command("ping6 -c 5 %q 2>&1", addr) end -function diag_traceroute6() - diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1") +function diag_traceroute6(addr) + diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr) end |