From: Florian Eckert <fe@dev.tdt.de>
Date: Thu, 18 Jan 2018 13:45:18 +0000 (+0100)
Subject: luci-app-mwan3: refactoring troubleshooting page
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=6a700eded1136d79ec8001415a88d324bebcc8f0;p=oweals%2Fluci.git

luci-app-mwan3: refactoring troubleshooting page

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---

diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
index 69e72b7fd..cf5708051 100644
--- a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
+++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
@@ -198,104 +198,104 @@ end
 
 function troubleshootingData()
 	local ver = require "luci.version"
+	local dash = "-------------------------------------------------"
 
-	local mArray = {}
-
-	-- software versions
-	local wrtRelease = ut.trim(ver.distversion)
-		if wrtRelease ~= "" then
-			wrtRelease = "OpenWrt - " .. wrtRelease
-		else
-			wrtRelease = "OpenWrt - unknown"
-		end
-	local luciRelease = ut.trim(ver.luciversion)
-		if luciRelease ~= "" then
-			luciRelease = "\nLuCI - " .. luciRelease
-		else
-			luciRelease = "\nLuCI - unknown"
-		end
-	local mwanVersion = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk '{print $2}'"))
-		if mwanVersion ~= "" then
-			mwanVersion = "\n\nmwan3 - " .. mwanVersion
-		else
-			mwanVersion = "\n\nmwan3 - unknown"
-		end
-	local mwanLuciVersion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk '{print $2}'"))
-		if mwanLuciVersion ~= "" then
-			mwanLuciVersion = "\nmwan3-luci - " .. mwanLuciVersion
-		else
-			mwanLuciVersion = "\nmwan3-luci - unknown"
-		end
-	mArray.versions = { wrtRelease .. luciRelease .. mwanVersion .. mwanLuciVersion }
-
-	-- mwan config
-	local mwanConfig = ut.trim(sys.exec("cat /etc/config/mwan3"))
-		if mwanConfig == "" then
-			mwanConfig = "No data found"
-		end
-	mArray.mwanconfig = { mwanConfig }
-
-	-- network config
-	local networkConfig = ut.trim(sys.exec("cat /etc/config/network | sed -e 's/.*username.*/	USERNAME HIDDEN/' -e 's/.*password.*/	PASSWORD HIDDEN/'"))
-		if networkConfig == "" then
-			networkConfig = "No data found"
-		end
-	mArray.netconfig = { networkConfig }
+	luci.http.prepare_content("text/plain")
 
-	-- wireless config
-	local wirelessConfig = ut.trim(sys.exec("cat /etc/config/wireless | sed -e 's/.*username.*/	USERNAME HIDDEN/' -e 's/.*password.*/	PASSWORD HIDDEN/' -e 's/.*key.*/	KEY HIDDEN/'"))
-		if wirelessConfig == "" then
-			wirelessConfig = "No data found"
-		end
-	mArray.wificonfig = { wirelessConfig }
-	
-	-- ifconfig
-	local ifconfig = ut.trim(sys.exec("ifconfig"))
-		if ifconfig == "" then
-			ifconfig = "No data found"
-		end
-	mArray.ifconfig = { ifconfig }
+	luci.http.write("\n")
+	luci.http.write("\n")
+	luci.http.write("Software-Version")
+	luci.http.write("\n")
+	luci.http.write(dash)
+	luci.http.write("\n")
+	if ver.distversion then
+		luci.http.write(string.format("OpenWrt - %s", ver.distversion))
+		luci.http.write("\n")
+	else
+		luci.http.write("OpenWrt - unknown")
+		luci.http.write("\n")
+	end
 
-	-- route -n
-	local routeShow = ut.trim(sys.exec("route -n"))
-		if routeShow == "" then
-			routeShow = "No data found"
-		end
-	mArray.routeshow = { routeShow }
+	if ver.luciversion then
+		luci.http.write(string.format("LuCI - %s", ver.luciversion))
+		luci.http.write("\n")
+	else
+		luci.http.write("LuCI - unknown")
+		luci.http.write("\n")
+	end
 
-	-- ip rule show
-	local ipRuleShow = ut.trim(sys.exec(ip .. "rule show"))
-		if ipRuleShow == "" then
-			ipRuleShow = "No data found"
-		end
-	mArray.iprule = { ipRuleShow }
+	luci.http.write("\n")
+	luci.http.write("\n")
+	local output = ut.trim(sys.exec("ip a show"))
+	luci.http.write("Output of \"ip a show\"")
+	luci.http.write("\n")
+	luci.http.write(dash)
+	luci.http.write("\n")
+	if output ~= "" then
+		luci.http.write(output)
+		luci.http.write("\n")
+	else
+		luci.http.write("No data found")
+		luci.http.write("\n")
+	end
 
-	-- ip route list table 1-250
-	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)
-			end
-			routeString = ut.trim(routeString)
-		else
-			routeString = "No data found"
-		end
-	mArray.routelist = { routeString }
+	luci.http.write("\n")
+	luci.http.write("\n")
+	local output = ut.trim(sys.exec("ip route show"))
+	luci.http.write("Output of \"ip route show\"")
+	luci.http.write("\n")
+	luci.http.write(dash)
+	luci.http.write("\n")
+	if output ~= "" then
+		luci.http.write(output)
+		luci.http.write("\n")
+	else
+		luci.http.write("No data found")
+		luci.http.write("\n")
+	end
 
-	-- default firewall output policy
-	local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output"))
-		if firewallOut == "" then
-			firewallOut = "No data found"
-		end
-	mArray.firewallout = { firewallOut }
+	luci.http.write("\n")
+	luci.http.write("\n")
+	local output = ut.trim(sys.exec("ip rule show"))
+	luci.http.write("Output of \"ip rule show\"")
+	luci.http.write("\n")
+	luci.http.write(dash)
+	luci.http.write("\n")
+	if output ~= "" then
+		luci.http.write(output)
+		luci.http.write("\n")
+	else
+		luci.http.write("No data found")
+		luci.http.write("\n")
+	end
 
-	-- iptables
-	local iptables = ut.trim(sys.exec("iptables -L -t mangle -v -n"))
-		if iptables == "" then
-			iptables = "No data found"
+	luci.http.write("\n")
+	luci.http.write("\n")
+	luci.http.write("Output of \"ip route list table 1-250\"")
+	luci.http.write("\n")
+	luci.http.write(dash)
+	luci.http.write("\n")
+	for i=1,250 do
+		local output = ut.trim(sys.exec(string.format("ip route list table %d", i)))
+		if output ~= "" then
+			luci.http.write(string.format("Table %s: ", i))
+			luci.http.write(output)
+			luci.http.write("\n")
 		end
-	mArray.iptables = { iptables }
+	end
 
-	luci.http.prepare_content("application/json")
-	luci.http.write_json(mArray)
+	luci.http.write("\n")
+	luci.http.write("\n")
+	local output = ut.trim(sys.exec("iptables -L -t mangle -v -n"))
+	luci.http.write("Output of \"iptables -L -t mangle -v -n\"")
+	luci.http.write("\n")
+	luci.http.write(dash)
+	luci.http.write("\n")
+	if output ~= "" then
+		luci.http.write(output)
+		luci.http.write("\n")
+	else
+		luci.http.write("No data found")
+		luci.http.write("\n")
+	end
 end
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm b/applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm
index 2ede35cef..348bf947f 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm
@@ -10,52 +10,24 @@
 <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
 <script type="text/javascript">//<![CDATA[
 	XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "status", "mwan", "troubleshooting_display")%>', null,
-		function(x, mArray)
+		function(x)
 		{
-			var tshoot = document.getElementById('troubleshoot_text');
-			if (mArray.versions)
-			{
-				var versions = '<span class="description">Software versions : </span><br /><br />';
-				var mwanConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/mwan3&#34; : </span><br /><br />';
-				var netConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/network&#34; : </span><br /><br />';
-				var wifiConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/wireless&#34; : </span><br /><br />';
-				var ifconfig = '<br /><br /><span class="description">Output of &#34;ifconfig&#34; : </span><br /><br />';
-				var ipRoute = '<br /><br /><span class="description">Output of &#34;route -n&#34; : </span><br /><br />';
-				var ipRuleShow = '<br /><br /><span class="description">Output of &#34;ip rule show&#34; : </span><br /><br />';
-				var routeListTable = '<br /><br /><span class="description">Output of &#34;ip route list table 1-250&#34; : </span><br /><br />';
-				var firewallOut = '<br /><br /><span class="description">Firewall default output policy (must be ACCEPT) : </span><br /><br />';
-				var iptables = '<br /><br /><span class="description">Output of &#34;iptables -L -t mangle -v -n&#34; : </span><br /><br />';
-				tshoot.innerHTML = String.format(
-					'<pre>%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s</pre>',
-					versions, mArray.versions[0], mwanConfig, mArray.mwanconfig[0], netConfig, mArray.netconfig[0],
-					wifiConfig, mArray.wificonfig[0], ifconfig, mArray.ifconfig[0], ipRoute, mArray.routeshow[0],
-					ipRuleShow, mArray.iprule[0], routeListTable, mArray.routelist[0], firewallOut, mArray.firewallout[0],
-					iptables, mArray.iptables[0]
-				);
-			}
-			else
-			{
-				tshoot.innerHTML = '<strong><%:Error collecting troubleshooting information%></strong>';
-			}
+			var legend = document.getElementById('diag-rc-legend');
+			var output = document.getElementById('diag-rc-output');
+			legend.style.display = 'none';
+			output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
 		}
 	);
 //]]></script>
 
-<div id="troubleshoot">
+<div class="cbi-map">
+	<h2 name="content"><%:MWAN Status - Troubleshooting%></h2>
 	<fieldset class="cbi-section">
-		<legend><%:Troubleshooting Data%></legend>
-		<div id="troubleshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div>
+		<legend id="diag-rc-legend"><%:Collecting data...%></legend>
+		<span id="diag-rc-output">
+			<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align: middle;" />
+		</span>
 	</fieldset>
 </div>
 
-<style type="text/css">
-  #troubleshoot_text {
-	padding: 20px;
-	text-align: left;
-  }
-  .description {
-	background-color: rgb(78, 186, 241);
-  }
-</style>
-
 <%+footer%>