Merge pull request #1787 from TDT-AG/pr/20180509-net-mwan3-fixes

luci-app-mwan3: fixes
This commit is contained in:
Dirk Brenken 2018-05-11 20:26:11 +02:00 committed by GitHub
commit 1e39fef147
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -97,9 +97,9 @@ function diagnosticsData(interface, task)
return interfaceNumber return interfaceNumber
end end
function diag_command(cmd, addr) function diag_command(cmd, device, addr)
if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then
local util = io.popen(cmd % ut.shellquote(addr)) local util = io.popen(cmd %{ut.shellquote(device), ut.shellquote(addr)})
if util then if util then
while true do while true do
local ln = util:read("*l") local ln = util:read("*l")
@ -114,8 +114,14 @@ function diagnosticsData(interface, task)
end end
function get_gateway(inteface) function get_gateway(inteface)
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) local gateway = nil
local gateway local dump = nil
dump = require("luci.util").ubus("network.interface.%s_4" % interface, "status", {})
if not dump then
dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
end
if dump and dump.route then if dump and dump.route then
local _, route local _, route
for _, route in ipairs(dump.route) do for _, route in ipairs(dump.route) do
@ -139,7 +145,7 @@ function diagnosticsData(interface, task)
if task == "ping_gateway" then if task == "ping_gateway" then
local gateway = get_gateway(interface) local gateway = get_gateway(interface)
if gateway ~= nil then if gateway ~= nil then
diag_command("ping -c 5 -W 1 %s 2>&1", gateway) diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, gateway)
else else
luci.http.prepare_content("text/plain") luci.http.prepare_content("text/plain")
luci.http.write(string.format("No gateway for interface %s found.", interface)) luci.http.write(string.format("No gateway for interface %s found.", interface))
@ -148,7 +154,7 @@ function diagnosticsData(interface, task)
local trackips = uci:get("mwan3", interface, "track_ip") local trackips = uci:get("mwan3", interface, "track_ip")
if #trackips > 0 then if #trackips > 0 then
for i in pairs(trackips) do for i in pairs(trackips) do
diag_command("ping -c 5 -W 1 %s 2>&1", trackips[i]) diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, trackips[i])
end end
else else
luci.http.write(string.format("No tracking Hosts for interface %s defined.", interface)) luci.http.write(string.format("No tracking Hosts for interface %s defined.", interface))