applications/luci-commands, applications/luci-upnp, modules/admin-core, modules/admin...
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 21 Nov 2012 19:29:47 +0000 (19:29 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 21 Nov 2012 19:29:47 +0000 (19:29 +0000)
applications/luci-commands/luasrc/controller/commands.lua
applications/luci-upnp/luasrc/controller/upnp.lua
modules/admin-core/luasrc/controller/admin/servicectl.lua
modules/admin-full/luasrc/controller/admin/network.lua
modules/admin-full/luasrc/controller/admin/status.lua
modules/freifunk/luasrc/controller/freifunk/freifunk.lua

index 9fbde94c6aa7eb74015ae4bf2c2422fbd7336c51..c04d186bb467d80102cd5bfa8bb43e118c448222 100644 (file)
@@ -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)
index c40493dab6c3e06b2b220b1e0e6178040c098b22..b5eaad5c9023c69e8db37b1e70183bf52d32ecf3 100644 (file)
@@ -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)
index 68a59364c2861373a2eb08e907149eae40842366..753d2c77f15a5554f8088da6eb8da552c677860e 100644 (file)
@@ -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
 
index 6f55ff77796162feadb125fc8ccd68a81947d219..f401ecd185151560a2585c77c3353b570b9e9cfc 100644 (file)
@@ -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
index d7d301c542e11722a8108be99d14f4b240fce9f8..a9e37c7995ef4de44fb0ca86c6ec9c5f0db31d36 100644 (file)
@@ -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)
index 666f0864b3f5844062bb418c5eaa0ea91bb03212..e81e07c94e1f9040c507ba10af5b66efb18d3d7b 100644 (file)
@@ -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