luci-base: add luci/getRealtimeStats and luci/getConntrackList rpc methods
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
740d07573b
commit
a2f43983b6
1 changed files with 66 additions and 0 deletions
|
@ -516,6 +516,72 @@ local methods = {
|
||||||
return { error = err }
|
return { error = err }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
getRealtimeStats = {
|
||||||
|
args = { mode = "interface", device = "eth0" },
|
||||||
|
call = function(args)
|
||||||
|
local util = require "luci.util"
|
||||||
|
|
||||||
|
local flags
|
||||||
|
if args.mode == "interface" then
|
||||||
|
flags = "-i %s" % util.shellquote(args.device)
|
||||||
|
elseif args.mode == "wireless" then
|
||||||
|
flags = "-r %s" % util.shellquote(args.device)
|
||||||
|
elseif args.mode == "conntrack" then
|
||||||
|
flags = "-c"
|
||||||
|
elseif args.mode == "load" then
|
||||||
|
flags = "-l"
|
||||||
|
else
|
||||||
|
return { error = "Invalid mode" }
|
||||||
|
end
|
||||||
|
|
||||||
|
local fd, err = io.popen("luci-bwc %s" % flags, "r")
|
||||||
|
if fd then
|
||||||
|
local parse = json.new()
|
||||||
|
local done
|
||||||
|
|
||||||
|
parse:parse("[")
|
||||||
|
|
||||||
|
while true do
|
||||||
|
local ln = fd:read("*l")
|
||||||
|
if not ln then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
done, err = parse:parse((ln:gsub("%d+", "%1.0")))
|
||||||
|
|
||||||
|
if done then
|
||||||
|
err = "Unexpected JSON data"
|
||||||
|
end
|
||||||
|
|
||||||
|
if err then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
fd:close()
|
||||||
|
|
||||||
|
done, err = parse:parse("]")
|
||||||
|
|
||||||
|
if err then
|
||||||
|
return { error = err }
|
||||||
|
elseif not done then
|
||||||
|
return { error = "Incomplete JSON data" }
|
||||||
|
else
|
||||||
|
return { result = parse:get() }
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return { error = err }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
getConntrackList = {
|
||||||
|
call = function()
|
||||||
|
local sys = require "luci.sys"
|
||||||
|
return { result = sys.net.conntrack() }
|
||||||
|
end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue