commit
56c5187af1
15 changed files with 69 additions and 73 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-mwan3
|
PKG_NAME:=luci-app-mwan3
|
||||||
PKG_VERSION:=1.3
|
PKG_VERSION:=1.3
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
|
PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
|
||||||
PKG_LICENSE:=GPLv2
|
PKG_LICENSE:=GPLv2
|
||||||
|
|
||||||
|
@ -20,14 +20,15 @@ define Package/luci-app-mwan3
|
||||||
CATEGORY:=LuCI
|
CATEGORY:=LuCI
|
||||||
SUBMENU:=3. Applications
|
SUBMENU:=3. Applications
|
||||||
TITLE:=LuCI support for the MWAN3 multiwan hotplug script
|
TITLE:=LuCI support for the MWAN3 multiwan hotplug script
|
||||||
DEPENDS:=+mwan3
|
DEPENDS:=+mwan3 +luci-mod-admin-full +luci-lib-nixio
|
||||||
PKGARCH:=all
|
PKGARCH:=all
|
||||||
MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
|
MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/luci-app-mwan3/description
|
define Package/luci-app-mwan3/description
|
||||||
Hotplug script which makes configuration of multiple WAN interfaces simple and manageable
|
Hotplug script which makes configuration of multiple WAN interfaces simple and
|
||||||
With loadbalancing/failover support for up to 250 WAN interfaces, connection tracking and an easy to manage traffic ruleset
|
manageable with loadbalancing/failover support for up to 250 physical or logical
|
||||||
|
WAN interfaces, connection tracking and an easy to manage traffic ruleset
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/Compile
|
define Build/Compile
|
||||||
|
|
11
net/mwan3-luci/files/etc/hotplug.d/iface/16-mwan3custombak
Normal file → Executable file
11
net/mwan3-luci/files/etc/hotplug.d/iface/16-mwan3custombak
Normal file → Executable file
|
@ -1,22 +1,21 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# to enable this script uncomment the case loop at the bottom
|
# 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()
|
send_alert()
|
||||||
{
|
{
|
||||||
# $1 stores the mwan3 status information
|
# variable "$1" stores the mwan3 status information
|
||||||
# insert your code here to send the contents of $1
|
# insert your code here to send the contents of "$1"
|
||||||
echo "$1"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gather_event_info()
|
gather_event_info()
|
||||||
{
|
{
|
||||||
# create event information message
|
# 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
|
# 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
|
# 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')")"
|
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')")"
|
||||||
|
|
|
@ -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
net/mwan3-luci/files/etc/uci-defaults/mwan3-luci
Executable file
14
net/mwan3-luci/files/etc/uci-defaults/mwan3-luci
Executable 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
|
|
@ -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"))
|
local ifdev = ut.trim(sys.exec("uci get -p /var/state network." .. iface .. ".ifname"))
|
||||||
if ifdev ~= "" then
|
if ifdev ~= "" then
|
||||||
if tool == "ping" 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 gateway ~= "" then
|
||||||
if alt == "gateway" then
|
if alt == "gateway" then
|
||||||
local cmd = "ping -c 3 -W 2 -I " .. ifdev .. " " .. gateway
|
local cmd = "ping -c 3 -W 2 -I " .. ifdev .. " " .. gateway
|
||||||
|
@ -247,17 +247,17 @@ function mwan3_tshoot_data()
|
||||||
else
|
else
|
||||||
lucirelease = "\nLuCI - unknown"
|
lucirelease = "\nLuCI - unknown"
|
||||||
end
|
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
|
if mwan3version ~= "" then
|
||||||
mwan3version = "\n\nmwan3 - " .. mwan3version
|
mwan3version = "\n\nmwan3 - " .. mwan3version
|
||||||
else
|
else
|
||||||
mwan3version = "\nmwan3 - unknown"
|
mwan3version = "\nmwan3 - unknown"
|
||||||
end
|
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
|
if mwan3lversion ~= "" then
|
||||||
mwan3lversion = "\nluci-app-mwan3 - " .. mwan3lversion
|
mwan3lversion = "\nmwan3-luci - " .. mwan3lversion
|
||||||
else
|
else
|
||||||
mwan3lversion = "\nluci-app-mwan3 - unknown"
|
mwan3lversion = "\nmwan3-luci - unknown"
|
||||||
end
|
end
|
||||||
local softrev = wrtrelease .. lucirelease .. mwan3version .. mwan3lversion
|
local softrev = wrtrelease .. lucirelease .. mwan3version .. mwan3lversion
|
||||||
rv.mw3ver = { }
|
rv.mw3ver = { }
|
||||||
|
@ -316,7 +316,7 @@ function mwan3_tshoot_data()
|
||||||
rv.iprule[ipruleid[ipr]] = { rule = ipr }
|
rv.iprule[ipruleid[ipr]] = { rule = ipr }
|
||||||
|
|
||||||
-- ip route list table 1-250
|
-- 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
|
if routelisting ~= "" then
|
||||||
for line in routelisting:gmatch("[^\r\n]+") do
|
for line in routelisting:gmatch("[^\r\n]+") do
|
||||||
rlstr = rlstr .. line .. "\n" .. sys.exec("ip route list table " .. line)
|
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_netcfg_list = err_netcfg_list .. ifname .. " "
|
||||||
err_route_list = err_route_list .. ifname .. " "
|
err_route_list = err_route_list .. ifname .. " "
|
||||||
else
|
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
|
if rtcheck == "" then
|
||||||
err_found = 1
|
err_found = 1
|
||||||
err_route_list = err_route_list .. ifname .. " "
|
err_route_list = err_route_list .. ifname .. " "
|
||||||
|
@ -44,12 +44,12 @@ function iface_check() -- find issues with too many interfaces, reliability and
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
-- check if any interfaces have duplicate metrics
|
-- 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
|
if metric_dupnums ~= "" then
|
||||||
err_found = 1
|
err_found = 1
|
||||||
local metric_dupes = ""
|
local metric_dupes = ""
|
||||||
for line in metric_dupnums:gmatch("[^\r\n]+") do
|
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
|
err_dupmet_list = err_dupmet_list .. metric_dupes
|
||||||
end
|
end
|
||||||
err_dupmet_list = sys.exec("echo '" .. err_dupmet_list .. "' | tr '\n' ' '")
|
err_dupmet_list = sys.exec("echo '" .. err_dupmet_list .. "' | tr '\n' ' '")
|
||||||
|
|
|
@ -12,9 +12,9 @@ function iface_check()
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
-- compare metric against list
|
-- 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
|
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
|
err_dupmet_list = err_dupmet_list .. metric_dupes
|
||||||
end
|
end
|
||||||
if sys.exec("echo '" .. err_dupmet_list .. "' | grep -w " .. arg[1]) ~= "" then
|
if sys.exec("echo '" .. err_dupmet_list .. "' | grep -w " .. arg[1]) ~= "" then
|
||||||
|
@ -36,7 +36,7 @@ function iface_check()
|
||||||
err_netcfg = 1
|
err_netcfg = 1
|
||||||
err_route = 1
|
err_route = 1
|
||||||
else
|
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
|
if rtcheck == "" then
|
||||||
err_route = 1
|
err_route = 1
|
||||||
end
|
end
|
||||||
|
|
|
@ -68,6 +68,19 @@ use_member = mwan_policy:option(DummyValue, "use_member", translate("Members ass
|
||||||
|
|
||||||
end
|
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 = mwan_policy:option(DummyValue, "errors", translate("Errors"))
|
||||||
errors.rawhtml = true
|
errors.rawhtml = true
|
||||||
function errors.cfgvalue(self, s)
|
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"))
|
use_member = mwan_policy:option(DynamicList, "use_member", translate("Member used"))
|
||||||
cbi_add_member(use_member)
|
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 ------ --
|
-- ------ currently configured members ------ --
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ function cbi_add_policy(field)
|
||||||
end
|
end
|
||||||
|
|
||||||
function cbi_add_protocol(field)
|
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
|
for p in string.gmatch(protos, "%S+") do
|
||||||
field:value(p)
|
field:value(p)
|
||||||
end
|
end
|
||||||
|
|
|
@ -57,10 +57,7 @@
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
var ncint = 'No diagnostic results returned';
|
var ncint = 'No diagnostic results returned';
|
||||||
temp = String.format(
|
temp = String.format('<pre id="diag_output_css"><strong>%s</strong></pre>', ncint);
|
||||||
'<pre id="diag_output_css"><strong>%s</strong></pre>',
|
|
||||||
ncint
|
|
||||||
);
|
|
||||||
output.innerHTML = temp;
|
output.innerHTML = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
temp = String.format(
|
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>',
|
'<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;
|
tx.innerHTML = temp;
|
||||||
}
|
}
|
||||||
|
@ -37,10 +37,7 @@
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
var terror = 'Error collecting troubleshooting information';
|
var terror = 'Error collecting troubleshooting information';
|
||||||
temp = String.format(
|
temp = String.format('<strong>%s</strong>', terror);
|
||||||
'<strong>%s</strong>',
|
|
||||||
terror
|
|
||||||
);
|
|
||||||
tx.innerHTML = temp;
|
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>
|
<div id="mwan3_tshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.container { /*container for entire page. fixes bootstrap theme's ridiculously small page width*/
|
.container { /*container for entire page. fixes bootstrap theme's ridiculously small page width*/
|
||||||
max-width: none;
|
max-width: none;
|
||||||
|
|
|
@ -14,20 +14,14 @@
|
||||||
if (st.mwan3dst)
|
if (st.mwan3dst)
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
temp = String.format(
|
temp = String.format('<pre>%s</pre>', st.mwan3dst[0].detailstat);
|
||||||
'<pre>%s</pre>',
|
|
||||||
st.mwan3dst[0].detailstat
|
|
||||||
);
|
|
||||||
tx.innerHTML = temp;
|
tx.innerHTML = temp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
var nslg = 'No detailed status information available';
|
var nslg = 'No detailed status information available';
|
||||||
temp = String.format(
|
temp = String.format('<strong>%s</strong>', nslg);
|
||||||
'<strong>%s</strong>',
|
|
||||||
nslg
|
|
||||||
);
|
|
||||||
tx.innerHTML = temp;
|
tx.innerHTML = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
|
|
||||||
temp += String.format(
|
temp += String.format(
|
||||||
'<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
|
'<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;
|
tx.innerHTML = temp;
|
||||||
|
@ -54,10 +54,7 @@
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
var ncint = 'No MWAN3 interfaces found';
|
var ncint = 'No MWAN3 interfaces found';
|
||||||
temp = String.format(
|
temp = String.format('<strong>%s</strong>', ncint);
|
||||||
'<strong>%s</strong>',
|
|
||||||
ncint
|
|
||||||
);
|
|
||||||
tx.innerHTML = temp;
|
tx.innerHTML = temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,21 +63,14 @@
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
var mwan3lg = 'Last 50 MWAN3 systemlog entries. Newest entries sorted at the top :';
|
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;
|
tx.innerHTML = temp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
var nslg = 'No MWAN3 systemlog history found';
|
var nslg = 'No MWAN3 systemlog history found';
|
||||||
temp = String.format(
|
temp = String.format('<strong>%s</strong>', nslg);
|
||||||
'<strong>%s</strong>',
|
|
||||||
nslg
|
|
||||||
);
|
|
||||||
tx.innerHTML = temp;
|
tx.innerHTML = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
temp += String.format(
|
temp += String.format(
|
||||||
'<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
|
'<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;
|
tx.innerHTML = temp;
|
||||||
|
@ -46,10 +46,7 @@
|
||||||
{
|
{
|
||||||
var temp = '';
|
var temp = '';
|
||||||
var ncint = 'No MWAN3 interfaces found';
|
var ncint = 'No MWAN3 interfaces found';
|
||||||
temp += String.format(
|
temp += String.format('<strong>%s</strong>', ncint );
|
||||||
'<strong>%s</strong>',
|
|
||||||
ncint
|
|
||||||
);
|
|
||||||
tx.innerHTML = temp;
|
tx.innerHTML = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue