mwan3-luci: update to 1.3-2

added support for new last_resort option for policy configuration
added dependencies for luci-mod-admin-full and luci-lib-nixio
shortened length of menuconfig description lines
reworded things on various pages
changed date formatting in custom hotplug script
default route checks now verify both destination/netmask are 0.0.0.0
condensed messy javascript lines and removed -F' ' from awk commands

Signed-off-by: Aedan Renner <chipdankly@gmail.com>
This commit is contained in:
Aedan ARFETT Renner
2014-09-29 19:32:02 -07:00
committed by Etienne CHAMPETIER
parent 4e70aa58e8
commit 6c1e1705b1
15 changed files with 69 additions and 73 deletions
@@ -168,7 +168,7 @@ function mwan3_diag_data(iface, tool, alt)
local ifdev = ut.trim(sys.exec("uci get -p /var/state network." .. iface .. ".ifname"))
if ifdev ~= "" then
if tool == "ping" then
local gateway = ut.trim(sys.exec("route -n | awk -F' ' '{ if ($8 == \"" .. ifdev .. "\" && $1 == \"0.0.0.0\") print $2 }'"))
local gateway = ut.trim(sys.exec("route -n | awk '{ if ($8 == \"" .. ifdev .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2 }'"))
if gateway ~= "" then
if alt == "gateway" then
local cmd = "ping -c 3 -W 2 -I " .. ifdev .. " " .. gateway
@@ -247,17 +247,17 @@ function mwan3_tshoot_data()
else
lucirelease = "\nLuCI - unknown"
end
local mwan3version = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk -F' ' '{ print $2 }'"))
local mwan3version = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk '{ print $2 }'"))
if mwan3version ~= "" then
mwan3version = "\n\nmwan3 - " .. mwan3version
else
mwan3version = "\nmwan3 - unknown"
end
local mwan3lversion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk -F' ' '{ print $2 }'"))
local mwan3lversion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk '{ print $2 }'"))
if mwan3lversion ~= "" then
mwan3lversion = "\nluci-app-mwan3 - " .. mwan3lversion
mwan3lversion = "\nmwan3-luci - " .. mwan3lversion
else
mwan3lversion = "\nluci-app-mwan3 - unknown"
mwan3lversion = "\nmwan3-luci - unknown"
end
local softrev = wrtrelease .. lucirelease .. mwan3version .. mwan3lversion
rv.mw3ver = { }
@@ -316,7 +316,7 @@ function mwan3_tshoot_data()
rv.iprule[ipruleid[ipr]] = { rule = ipr }
-- ip route list table 1-250
local routelisting, rlstr = ut.trim(sys.exec("ip rule | sed 's/://g' | awk -F' ' '$1>=2001 && $1<=2250' | awk -F' ' '{ print $NF }'")), ""
local routelisting, rlstr = ut.trim(sys.exec("ip rule | sed 's/://g' | awk '$1>=2001 && $1<=2250' | awk '{ print $NF }'")), ""
if routelisting ~= "" then
for line in routelisting:gmatch("[^\r\n]+") do
rlstr = rlstr .. line .. "\n" .. sys.exec("ip route list table " .. line)
@@ -30,7 +30,7 @@ function iface_check() -- find issues with too many interfaces, reliability and
err_netcfg_list = err_netcfg_list .. ifname .. " "
err_route_list = err_route_list .. ifname .. " "
else
local rtcheck = ut.trim(sys.exec("route -n | awk -F' ' '{ if ($8 == \"" .. ifdev .. "\" && $1 == \"0.0.0.0\") print $1 }'"))
local rtcheck = ut.trim(sys.exec("route -n | awk '{ if ($8 == \"" .. ifdev .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1 }'"))
if rtcheck == "" then
err_found = 1
err_route_list = err_route_list .. ifname .. " "
@@ -44,12 +44,12 @@ function iface_check() -- find issues with too many interfaces, reliability and
end
)
-- check if any interfaces have duplicate metrics
local metric_dupnums = sys.exec("echo '" .. metric_list .. "' | awk -F' ' '{ print $2 }' | uniq -d")
local metric_dupnums = sys.exec("echo '" .. metric_list .. "' | awk '{ print $2 }' | uniq -d")
if metric_dupnums ~= "" then
err_found = 1
local metric_dupes = ""
for line in metric_dupnums:gmatch("[^\r\n]+") do
metric_dupes = sys.exec("echo '" .. metric_list .. "' | grep '" .. line .. "' | awk -F' ' '{ print $1 }'")
metric_dupes = sys.exec("echo '" .. metric_list .. "' | grep '" .. line .. "' | awk '{ print $1 }'")
err_dupmet_list = err_dupmet_list .. metric_dupes
end
err_dupmet_list = sys.exec("echo '" .. err_dupmet_list .. "' | tr '\n' ' '")
@@ -12,9 +12,9 @@ function iface_check()
end
)
-- compare metric against list
local metric_dupnums, metric_dupes = sys.exec("echo '" .. metric_list .. "' | awk -F' ' '{ print $2 }' | uniq -d"), ""
local metric_dupnums, metric_dupes = sys.exec("echo '" .. metric_list .. "' | awk '{ print $2 }' | uniq -d"), ""
for line in metric_dupnums:gmatch("[^\r\n]+") do
metric_dupes = sys.exec("echo '" .. metric_list .. "' | grep '" .. line .. "' | awk -F' ' '{ print $1 }'")
metric_dupes = sys.exec("echo '" .. metric_list .. "' | grep '" .. line .. "' | awk '{ print $1 }'")
err_dupmet_list = err_dupmet_list .. metric_dupes
end
if sys.exec("echo '" .. err_dupmet_list .. "' | grep -w " .. arg[1]) ~= "" then
@@ -36,7 +36,7 @@ function iface_check()
err_netcfg = 1
err_route = 1
else
local rtcheck = ut.trim(sys.exec("route -n | awk -F' ' '{ if ($8 == \"" .. ifdev .. "\" && $1 == \"0.0.0.0\") print $1 }'"))
local rtcheck = ut.trim(sys.exec("route -n | awk '{ if ($8 == \"" .. ifdev .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1 }'"))
if rtcheck == "" then
err_route = 1
end
@@ -68,6 +68,19 @@ use_member = mwan_policy:option(DummyValue, "use_member", translate("Members ass
end
last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort"))
last_resort.rawhtml = true
function last_resort.cfgvalue(self, s)
local str = self.map:get(s, "last_resort")
if str == "unreachable" or str == "" or str == null then
return "unreachable (reject)"
elseif str == "blackhole" then
return "blackhole (drop)"
elseif str == "main" then
return "main (use main routing table)"
end
end
errors = mwan_policy:option(DummyValue, "errors", translate("Errors"))
errors.rawhtml = true
function errors.cfgvalue(self, s)
@@ -45,6 +45,13 @@ mwan_policy = m5:section(NamedSection, arg[1], "policy", "")
use_member = mwan_policy:option(DynamicList, "use_member", translate("Member used"))
cbi_add_member(use_member)
last_resort = mwan_policy:option(ListValue, "last_resort", translate("Last resort"),
translate("When all policy members are offline use this behavior for matched traffic"))
last_resort.default = "unreachable"
last_resort:value("unreachable", translate("unreachable (reject)"))
last_resort:value("blackhole", translate("blackhole (drop)"))
last_resort:value("main", translate("main (use main routing table)"))
-- ------ currently configured members ------ --
@@ -28,7 +28,7 @@ function cbi_add_policy(field)
end
function cbi_add_protocol(field)
local protos = ut.trim(sys.exec("cat /etc/protocols | grep ' # ' | awk -F' ' '{print $1}' | grep -vw -e 'ip' -e 'tcp' -e 'udp' -e 'icmp' -e 'esp' | grep -v 'ipv6' | sort | tr '\n' ' '"))
local protos = ut.trim(sys.exec("cat /etc/protocols | grep ' # ' | awk '{print $1}' | grep -vw -e 'ip' -e 'tcp' -e 'udp' -e 'icmp' -e 'esp' | grep -v 'ipv6' | sort | tr '\n' ' '"))
for p in string.gmatch(protos, "%S+") do
field:value(p)
end
@@ -57,10 +57,7 @@
{
var temp = '';
var ncint = 'No diagnostic results returned';
temp = String.format(
'<pre id="diag_output_css"><strong>%s</strong></pre>',
ncint
);
temp = String.format('<pre id="diag_output_css"><strong>%s</strong></pre>', ncint);
output.innerHTML = temp;
}
}
@@ -29,7 +29,7 @@
temp = String.format(
'<pre><span class="tsht">%s</span>%s<span class="tsht">%s</span>%s<span class="tsht">%s</span>%s<span class="tsht">%s</span>%s<span class="tsht">%s</span>%s<span class="tsht">%s</span>%s<span class="tsht">%s</span>%s<span class="tsht">%s</span>%s<span class="tsht">%s</span>%s</pre>',
mwanvers, st.mw3ver[0].mwan3v, mwan3cnfg, st.mwan3config[0].mwn3cfg, netcnfg, st.netconfig[0].netcfg, ifcnfg, st.ifconfig[0].ifcfg, iproute, st.rtshow[0].iprtshow, iprulesh, st.iprule[0].rule, routelisttbl, st.routelist[0].iprtlist, firewalldef, st.fidef[0].firedef, iptable, st.iptables[0].iptbls
mwanvers, st.mw3ver[0].mwan3v, mwan3cnfg, st.mwan3config[0].mwn3cfg, netcnfg, st.netconfig[0].netcfg, ifcnfg, st.ifconfig[0].ifcfg, iproute, st.rtshow[0].iprtshow, iprulesh, st.iprule[0].rule, routelisttbl, st.routelist[0].iprtlist, firewalldef, st.fidef[0].firedef, iptable, st.iptables[0].iptbls
);
tx.innerHTML = temp;
}
@@ -37,10 +37,7 @@
{
var temp = '';
var terror = 'Error collecting troubleshooting information';
temp = String.format(
'<strong>%s</strong>',
terror
);
temp = String.format('<strong>%s</strong>', terror);
tx.innerHTML = temp;
}
}
@@ -53,6 +50,7 @@
<div id="mwan3_tshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div>
</fieldset>
</div>
<style type="text/css">
.container { /*container for entire page. fixes bootstrap theme's ridiculously small page width*/
max-width: none;
@@ -14,20 +14,14 @@
if (st.mwan3dst)
{
var temp = '';
temp = String.format(
'<pre>%s</pre>',
st.mwan3dst[0].detailstat
);
temp = String.format('<pre>%s</pre>', st.mwan3dst[0].detailstat);
tx.innerHTML = temp;
}
else
{
var temp = '';
var nslg = 'No detailed status information available';
temp = String.format(
'<strong>%s</strong>',
nslg
);
temp = String.format('<strong>%s</strong>', nslg);
tx.innerHTML = temp;
}
}
@@ -45,7 +45,7 @@
temp += String.format(
'<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
cssc, st.wans[i].name, st.wans[i].link, st.wans[i].ifname, stat
cssc, st.wans[i].name, st.wans[i].link, st.wans[i].ifname, stat
);
}
tx.innerHTML = temp;
@@ -54,10 +54,7 @@
{
var temp = '';
var ncint = 'No MWAN3 interfaces found';
temp = String.format(
'<strong>%s</strong>',
ncint
);
temp = String.format('<strong>%s</strong>', ncint);
tx.innerHTML = temp;
}
@@ -66,21 +63,14 @@
{
var temp = '';
var mwan3lg = 'Last 50 MWAN3 systemlog entries. Newest entries sorted at the top :';
temp = String.format(
'<pre>%s<br /><br />%s</pre>',
mwan3lg, st.mwan3log[0].mwanlog
);
temp = String.format('<pre>%s<br /><br />%s</pre>', mwan3lg, st.mwan3log[0].mwanlog);
tx.innerHTML = temp;
}
else
{
var temp = '';
var nslg = 'No MWAN3 systemlog history found';
temp = String.format(
'<strong>%s</strong>',
nslg
);
temp = String.format('<strong>%s</strong>', nslg);
tx.innerHTML = temp;
}
}
@@ -37,7 +37,7 @@
temp += String.format(
'<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
cssc, st.wans[i].name, st.wans[i].link, st.wans[i].ifname, stat
cssc, st.wans[i].name, st.wans[i].link, st.wans[i].ifname, stat
);
}
tx.innerHTML = temp;
@@ -46,10 +46,7 @@
{
var temp = '';
var ncint = 'No MWAN3 interfaces found';
temp += String.format(
'<strong>%s</strong>',
ncint
);
temp += String.format('<strong>%s</strong>', ncint );
tx.innerHTML = temp;
}
}