Browse Source

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>
lilik-openwrt-22.03
Aedan ARFETT Renner 10 years ago
parent
commit
b3a1d3e39a
15 changed files with 69 additions and 73 deletions
  1. +5
    -4
      net/mwan3-luci/Makefile
  2. +5
    -6
      net/mwan3-luci/files/etc/hotplug.d/iface/16-mwan3custombak
  3. +0
    -14
      net/mwan3-luci/files/etc/uci-defaults/mwan3
  4. +14
    -0
      net/mwan3-luci/files/etc/uci-defaults/mwan3-luci
  5. +6
    -6
      net/mwan3-luci/files/usr/lib/lua/luci/controller/mwan3.lua
  6. +3
    -3
      net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_interface.lua
  7. +3
    -3
      net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_interfaceconfig.lua
  8. +13
    -0
      net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_policy.lua
  9. +7
    -0
      net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_policyconfig.lua
  10. +1
    -1
      net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_ruleconfig.lua
  11. +1
    -4
      net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_adv_diagnostics.htm
  12. +3
    -5
      net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_adv_troubleshoot.htm
  13. +2
    -8
      net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_over_detail.htm
  14. +4
    -14
      net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_over_interface.htm
  15. +2
    -5
      net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_status.htm

+ 5
- 4
net/mwan3-luci/Makefile View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-mwan3
PKG_VERSION:=1.3
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
PKG_LICENSE:=GPLv2
@ -20,14 +20,15 @@ define Package/luci-app-mwan3
CATEGORY:=LuCI
SUBMENU:=3. Applications
TITLE:=LuCI support for the MWAN3 multiwan hotplug script
DEPENDS:=+mwan3
DEPENDS:=+mwan3 +luci-mod-admin-full +luci-lib-nixio
PKGARCH:=all
MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
endef
define Package/luci-app-mwan3/description
Hotplug script which makes configuration of multiple WAN interfaces simple and manageable
With loadbalancing/failover support for up to 250 WAN interfaces, connection tracking and an easy to manage traffic ruleset
Hotplug script which makes configuration of multiple WAN interfaces simple and
manageable with loadbalancing/failover support for up to 250 physical or logical
WAN interfaces, connection tracking and an easy to manage traffic ruleset
endef
define Build/Compile


+ 5
- 6
net/mwan3-luci/files/etc/hotplug.d/iface/16-mwan3custombak View File

@ -1,22 +1,21 @@
#!/bin/sh
# to enable this script uncomment the case loop at the bottom
# to report MWAN3 status on interface up/down events modify the lines in the send_reportdata function
# to report mwan3 status on interface hotplug ifup/ifdown events modify the lines in the send_alert function
send_alert()
{
# $1 stores the mwan3 status information
# insert your code here to send the contents of $1
echo "$1"
# variable "$1" stores the mwan3 status information
# insert your code here to send the contents of "$1"
}
gather_event_info()
{
# create event information message
local EVENT_INFO="Interface [ "$INTERFACE" ($DEVICE) ] on router [ "$(uci get -p /var/state system.@system[0].hostname)" ] has triggered an [ "$ACTION" ] hotplug event on "$(date)""
local EVENT_INFO="Interface [ "$INTERFACE" ($DEVICE) ] on router [ "$(uci get -p /var/state system.@system[0].hostname)" ] has triggered a hotplug [ "$ACTION" ] event on "$(date +"%a %b %d %Y %T %Z")""
# get current interface, policy and rule status
local CURRENT_STATUS="$(mwan3 status)"
local CURRENT_STATUS="$(/usr/sbin/mwan3 status)"
# get last 50 mwan3 systemlog messages
local MWAN3_LOG="$(echo -e "Last 50 MWAN3 systemlog entries. Newest entries sorted at the top:\n$(logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x')")"


+ 0
- 14
net/mwan3-luci/files/etc/uci-defaults/mwan3 View File

@ -1,14 +0,0 @@
#!/bin/sh
# delete existing mwan3 ucitrack entry and add new entry
uci -q batch <<-EOF >/dev/null
del ucitrack.@mwan3[-1]
add ucitrack mwan3
set ucitrack.@mwan3[-1].exec="/etc/init.d/mwan3 restart"
commit ucitrack
EOF
# make controller file addition take effect without system restart
rm -rf /tmp/luci-indexcache /tmp/luci-modulecache
exit 0

+ 14
- 0
net/mwan3-luci/files/etc/uci-defaults/mwan3-luci View File

@ -0,0 +1,14 @@
#!/bin/sh
# replace existing mwan3-luci ucitrack entry
uci -q batch <<-EOF >/dev/null
del ucitrack.@mwan3[-1]
add ucitrack mwan3
set ucitrack.@mwan3[-1].exec="/usr/sbin/mwan3 restart"
commit ucitrack
EOF
# remove LuCI cache
rm -rf /tmp/luci-indexcache /tmp/luci-modulecache
exit 0

+ 6
- 6
net/mwan3-luci/files/usr/lib/lua/luci/controller/mwan3.lua View File

@ -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)


+ 3
- 3
net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_interface.lua View File

@ -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' ' '")


+ 3
- 3
net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_interfaceconfig.lua View File

@ -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


+ 13
- 0
net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_policy.lua View File

@ -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)


+ 7
- 0
net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_policyconfig.lua View File

@ -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 ------ --


+ 1
- 1
net/mwan3-luci/files/usr/lib/lua/luci/model/cbi/mwan3/mwan3_ruleconfig.lua View File

@ -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


+ 1
- 4
net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_adv_diagnostics.htm View File

@ -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;
}
}


+ 3
- 5
net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_adv_troubleshoot.htm View File

@ -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;


+ 2
- 8
net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_over_detail.htm View File

@ -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;
}
}


+ 4
- 14
net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_over_interface.htm View File

@ -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;
}
}


+ 2
- 5
net/mwan3-luci/files/usr/lib/lua/luci/view/mwan3/mwan3_status.htm View File

@ -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;
}
}


Loading…
Cancel
Save