From 69ac1031b7e83fb68ee1f6f952890fc0654f54f8 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 21 Nov 2012 19:29:47 +0000 Subject: [PATCH] applications/luci-commands, applications/luci-upnp, modules/admin-core, modules/admin-full, modules/freifunk: clean up argument handling of leaf nodes --- .../luasrc/controller/commands.lua | 7 +- .../luci-upnp/luasrc/controller/upnp.lua | 6 +- .../luasrc/controller/admin/servicectl.lua | 8 +- .../luasrc/controller/admin/network.lua | 75 ++++++++----------- .../luasrc/controller/admin/status.lua | 10 +-- .../luasrc/controller/freifunk/freifunk.lua | 5 +- 6 files changed, 44 insertions(+), 67 deletions(-) diff --git a/applications/luci-commands/luasrc/controller/commands.lua b/applications/luci-commands/luasrc/controller/commands.lua index 9fbde94c6a..c04d186bb4 100644 --- a/applications/luci-commands/luasrc/controller/commands.lua +++ b/applications/luci-commands/luasrc/controller/commands.lua @@ -141,9 +141,7 @@ local function parse_args(str) end local function parse_cmdline(cmdid, args) - local uci = require "luci.model.uci".cursor() - local path = luci.dispatcher.context.requestpath - + local uci = require "luci.model.uci".cursor() if uci:get("luci", cmdid) == "command" then local cmd = uci:get_all("luci", cmdid) local argv = parse_args(cmd.command) @@ -228,7 +226,8 @@ end function action_public(cmdid, args) local uci = require "luci.model.uci".cursor() - if uci:get("luci", cmdid) == "command" and + if cmdid and + uci:get("luci", cmdid) == "command" and uci:get("luci", cmdid, "public") == "1" then action_download(cmdid, args) diff --git a/applications/luci-upnp/luasrc/controller/upnp.lua b/applications/luci-upnp/luasrc/controller/upnp.lua index c40493dab6..b5eaad5c90 100644 --- a/applications/luci-upnp/luasrc/controller/upnp.lua +++ b/applications/luci-upnp/luasrc/controller/upnp.lua @@ -69,10 +69,8 @@ function act_status() end end -function act_delete() - local path = luci.dispatcher.context.requestpath - local idx = tonumber(path[#path]) - +function act_delete(idx) + idx = tonumber(idx) if idx and idx > 0 then luci.sys.call("iptables -t filter -D MINIUPNPD %d 2>/dev/null" % idx) luci.sys.call("iptables -t nat -D MINIUPNPD %d 2>/dev/null" % idx) diff --git a/modules/admin-core/luasrc/controller/admin/servicectl.lua b/modules/admin-core/luasrc/controller/admin/servicectl.lua index 68a59364c2..753d2c77f1 100644 --- a/modules/admin-core/luasrc/controller/admin/servicectl.lua +++ b/modules/admin-core/luasrc/controller/admin/servicectl.lua @@ -30,15 +30,13 @@ function action_status() end end -function action_restart() +function action_restart(args) local uci = require "luci.model.uci".cursor() - local rqp = luci.dispatcher.context.requestpath - - if rqp[3] then + if args then local service local services = { } - for service in rqp[3]:gmatch("[%w_-]+") do + for service in args:gmatch("[%w_-]+") do services[#services+1] = service end diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 6f55ff7779..f401ecd185 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 diff --git a/modules/admin-full/luasrc/controller/admin/status.lua b/modules/admin-full/luasrc/controller/admin/status.lua index d7d301c542..a9e37c7995 100644 --- a/modules/admin-full/luasrc/controller/admin/status.lua +++ b/modules/admin-full/luasrc/controller/admin/status.lua @@ -71,10 +71,7 @@ function action_iptables() end end -function action_bandwidth() - local path = luci.dispatcher.context.requestpath - local iface = path[#path] - +function action_bandwidth(iface) luci.http.prepare_content("application/json") local bwc = io.popen("luci-bwc -i %q 2>/dev/null" % iface) @@ -92,10 +89,7 @@ function action_bandwidth() end end -function action_wireless() - local path = luci.dispatcher.context.requestpath - local iface = path[#path] - +function action_wireless(iface) luci.http.prepare_content("application/json") local bwc = io.popen("luci-bwc -r %q 2>/dev/null" % iface) diff --git a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua index 666f0864b3..e81e07c94e 100644 --- a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua +++ b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua @@ -251,15 +251,14 @@ function jsonstatus() ltn12.pump.all(json.Encoder(root):source(), http.write) end -function public_status_json() +function public_status_json(devs) local twa = require "luci.tools.webadmin" local sys = require "luci.sys" local i18n = require "luci.i18n" - local path = luci.dispatcher.context.requestpath local rv = { } local dev - for dev in path[#path]:gmatch("[%w%.%-]+") do + for dev in devs:gmatch("[%w%.%-]+") do local j = { id = dev } local iw = luci.sys.wifi.getiwinfo(dev) if iw then -- 2.30.2