sys = require "luci.sys"
ut = require "luci.util"
-ip = "/usr/bin/ip -4 "
+ip = "ip -4 "
function index()
if not nixio.fs.access("/etc/config/mwan3") then
return
end
- entry({"admin", "network", "mwan"},
- alias("admin", "network", "mwan", "overview"),
+ entry({"admin", "status", "mwan"},
+ alias("admin", "status", "mwan", "overview"),
_("Load Balancing"), 600)
- entry({"admin", "network", "mwan", "overview"},
- alias("admin", "network", "mwan", "overview", "overview_interface"),
- _("Overview"), 10)
- entry({"admin", "network", "mwan", "overview", "overview_interface"},
+ entry({"admin", "status", "mwan", "overview"},
template("mwan/overview_interface"))
- entry({"admin", "network", "mwan", "overview", "interface_status"},
- call("interfaceStatus"))
- entry({"admin", "network", "mwan", "overview", "overview_detailed"},
+ entry({"admin", "status", "mwan", "detail"},
template("mwan/overview_detailed"))
- entry({"admin", "network", "mwan", "overview", "detailed_status"},
+ entry({"admin", "status", "mwan", "diagnostics"},
+ template("mwan/advanced_diagnostics"))
+ entry({"admin", "status", "mwan", "troubleshooting"},
+ template("mwan/advanced_troubleshooting"))
+ entry({"admin", "status", "mwan", "interface_status"},
+ call("interfaceStatus"))
+ entry({"admin", "status", "mwan", "detailed_status"},
call("detailedStatus"))
+ entry({"admin", "status", "mwan", "diagnostics_display"},
+ call("diagnosticsData"), nil).leaf = true
+ entry({"admin", "status", "mwan", "troubleshooting_display"},
+ call("troubleshootingData"))
+
+
+ entry({"admin", "network", "mwan"},
+ alias("admin", "network", "mwan", "configuration"),
+ _("Load Balancing"), 600)
entry({"admin", "network", "mwan", "configuration"},
alias("admin", "network", "mwan", "configuration", "interface"),
_("Configuration"), 20)
+ entry({"admin", "network", "mwan", "configuration", "globals"},
+ cbi("mwan/globalsconfig"),_("Globals"), 5).leaf = true
entry({"admin", "network", "mwan", "configuration", "interface"},
arcombine(cbi("mwan/interface"), cbi("mwan/interfaceconfig")),
_("Interfaces"), 10).leaf = true
entry({"admin", "network", "mwan", "configuration", "rule"},
arcombine(cbi("mwan/rule"), cbi("mwan/ruleconfig")),
_("Rules"), 40).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "notify"},
+ cbi("mwan/notify"),
+ _("Notification"), 50).leaf = true
entry({"admin", "network", "mwan", "advanced"},
- alias("admin", "network", "mwan", "advanced", "hotplugscript"),
+ alias("admin", "network", "mwan", "advanced", "mwanconfig"),
_("Advanced"), 100)
- entry({"admin", "network", "mwan", "advanced", "hotplugscript"},
- form("mwan/advanced_hotplugscript"))
entry({"admin", "network", "mwan", "advanced", "mwanconfig"},
form("mwan/advanced_mwanconfig"))
entry({"admin", "network", "mwan", "advanced", "networkconfig"},
form("mwan/advanced_networkconfig"))
entry({"admin", "network", "mwan", "advanced", "wirelessconfig"},
form("mwan/advanced_wirelessconfig"))
- entry({"admin", "network", "mwan", "advanced", "diagnostics"},
- template("mwan/advanced_diagnostics"))
- entry({"admin", "network", "mwan", "advanced", "diagnostics_display"},
- call("diagnosticsData"), nil).leaf = true
- entry({"admin", "network", "mwan", "advanced", "troubleshooting"},
- template("mwan/advanced_troubleshooting"))
- entry({"admin", "network", "mwan", "advanced", "troubleshooting_display"},
- call("troubleshootingData"))
end
function getInterfaceStatus(ruleNumber, interfaceName)
- if ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
if ut.trim(sys.exec(ip .. "route list table " .. ruleNumber)) ~= "" then
- if ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
return "online"
else
return "notMonitored"
wansid = {}
for wanName, interfaceState in string.gfind(statusString, "([^%[]+)%[([^%]]+)%]") do
- local wanInterfaceName = ut.trim(sys.exec("uci -p /var/state get network." .. wanName .. ".ifname"))
+ local wanInterfaceName = ut.trim(sys.exec("uci -q -p /var/state get network." .. wanName .. ".ifname"))
if wanInterfaceName == "" then
wanInterfaceName = "X"
end
end
-- overview status log
- local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x'"))
+ local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x' 2>/dev/null"))
if mwanLog ~= "" then
mArray.mwanlog = { mwanLog }
end
results = "MWAN3 started"
end
else
- local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. interface .. ".ifname"))
+ local interfaceDevice = ut.trim(sys.exec("uci -q -p /var/state get network." .. interface .. ".ifname"))
if interfaceDevice ~= "" then
if tool == "ping" then
local gateway = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2}'"))
local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. gateway
results = pingCommand .. "\n\n" .. sys.exec(pingCommand)
else
- local tracked = ut.trim(sys.exec("uci -p /var/state get mwan3." .. interface .. ".track_ip"))
+ local tracked = ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interface .. ".track_ip"))
if tracked ~= "" then
for z in tracked:gmatch("[^ ]+") do
local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. z
mArray.iprule = { ipRuleShow }
-- ip route list table 1-250
- local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
+ local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' 2>/dev/null | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
if routeList ~= "" then
for line in routeList:gmatch("[^\r\n]+") do
routeString = routeString .. line .. "\n" .. sys.exec(ip .. "route list table " .. line)
mArray.routelist = { routeString }
-- default firewall output policy
- local firewallOut = ut.trim(sys.exec("uci -p /var/state get firewall.@defaults[0].output"))
+ local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output"))
if firewallOut == "" then
firewallOut = "No data found"
end