[PATCH v2 3/3] fff-web: Add 5 GHz to wifiscan plus some tidying up

Adrian Schmutzler freifunk at adrianschmutzler.de
Fr Okt 20 00:25:07 CEST 2017


This patch ...
 - provides a 5 GHz wifi scan
 - changes to w2ap iface since w2mesh might be w2ibss
 - puts a lot of stuff into functions for easy reuse

Introduced in v2.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

Tested-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../fff-web/files/www/ssl/cgi-bin/wifiscan.html    | 112 +++++++++++++--------
 1 file changed, 70 insertions(+), 42 deletions(-)

diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/wifiscan.html b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/wifiscan.html
index 29f99e5..4fc01dd 100755
--- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/wifiscan.html
+++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/wifiscan.html
@@ -37,46 +37,23 @@ if [ -s /tmp/wifinodelist ] ; then
 else
 	havelist='<span style="color:red">Nein</span>'
 fi
-%>
-<table style="width: 100%">
-<tr><td>
-<form method="post" enctype="multipart/form-data">
-<fieldset>
-	<legend>Wifi Node File</legend>
-	<table>
-		<tr><th style="width: 20em;text-align:left;padding-bottom:10px">Alias Liste vorhanden:</th><td style="padding-bottom:10px"><%= "$havelist" %></td></tr>
-		<tr><th style="width: 20em;text-align:left">Upload Node-Liste:</th><td><input type="file" name="nodelist" /></td></tr>
-		<tr><td colspan="2" style="padding:10px 0">Hier kann eine Node-Liste (WiFiAnalyzer-Stil) hochgeladen werden.</td></tr>
-		<tr><td colspan="2"><input type="submit" name="wifiupload" value="Datei-Upload auf Router" /></td></tr>
-		<tr><td colspan="2" style="padding:10px 0">Wenn der Router mit dem Internet verbunden ist, kann die Node-Liste vom Monitoring bezogen werden:</td></tr>
-		<tr><th style="width: 20em;text-align:left">Name der Hood:</th><td><input type="text" name="hood" value="" /></td></tr>
-		<tr><td colspan="2" style="padding:10px 0"><input type="submit" name="wifidownload" value="Datei-Download von Monitoring" /></td></tr>
-	</table>
-</fieldset>
-</form>
-</td></tr>
-<tr><td>
-<fieldset>
-	<legend>Wifi Scan</legend>
-	<table class="wifitable">
-		<tr>
-			<th>Name</th>
-			<th>Kanal</th>
-			<th>Signal</th>
-			<th>Typ</th>
-			<th>MAC</th>
-			<th>Encryption</th>
-		</tr>
 
-<%
-if [ -s /tmp/wifinodelist ] ; then
-	firststep=$(iwinfo w2mesh scan |\
+readIWinfo() {
+	local iface=$1
+	local ssid=$2
+	local mac=$3
+
+	iwinfo "$iface" scan |\
 		awk -v RS='' \
 		'{r = gensub(/.*Address: ([0-9A-F:]*)?.*ESSID: "?(unknown|[^"]*)"?[ ]*\n.*Mode: ([^ ]*).*Channel: ([0-9]*).*Signal: (-[0-9]*) dBm.*Encryption: ([^"]*).*/, \
-		"<!-- \\5 --><tr><ssid>\\2</ssid><td>\\4</td><td>\\5 dBm</td><td>\\3</td><mac>\\1</mac><td>\\6</td></tr>", "g"); print r;}' | sort -n | sed 's#&#\&#')
+		"<!-- \\5 --><tr><'${ssid}'>\\2</'${ssid}'><td>\\4</td><td>\\5 dBm</td><td>\\3</td><'${mac}'>\\1</'${mac}'><td>\\6</td></tr>", "g"); print r;}' | sort -n | sed 's#&#\&#'
 		# The HTML comment contains the signal quality to allow sorting
+}
 
-	echo "$firststep" | while read line ; do
+rewriteIWinfo() {
+	local data="$1"
+
+	echo "$data" | while read line ; do
 		mac="$(echo "$line" | sed -e 's#.*<mac>\(.*\)</mac>.*#\1#')"
 		routerid="$(grep -i -e "$mac" /tmp/wifinodelist | awk -F"|" '{print $2}')"
 		if [ -n "$routerid" ] ; then
@@ -93,17 +70,68 @@ if [ -s /tmp/wifinodelist ] ; then
 		endpart=$(echo "$line" | sed -e 's#.*</mac>\(.*\)</tr>.*#\1#')
 		echo "<tr><td>${ssid}</td>${midpart}<td>${mac}</td>${endpart}</tr>"
 	done
-else
-	iwinfo w2mesh scan |\
-		awk -v RS='' \
-		'{r = gensub(/.*Address: ([0-9A-F:]*)?.*ESSID: "?(unknown|[^"]*)"?[ ]*\n.*Mode: ([^ ]*).*Channel: ([0-9]*).*Signal: (-[0-9]*) dBm.*Encryption: ([^"]*).*/, \
-		"<!-- \\5 --><tr><td>\\2</td><td>\\4</td><td>\\5 dBm</td><td>\\3</td><td>\\1</td><td>\\6</td></tr>", "g"); print r;}' | sort -n | sed 's#&#\&#'
-		# The HTML comment contains the signal quality to allow sorting
-fi
+}
+
+printWifiScan() {
+	local iface=$1
+	local freq="2.4 GHz"
+	if [ "$iface" = "w5ap" ] ; then
+		freq="5 GHz"
+	fi
+%>
+	<tr><td>
+	<fieldset>
+		<legend>Wifi Scan: <%= "$freq" %></legend>
+		<table class="wifitable">
+			<tr>
+				<th>Name</th>
+				<th>Kanal</th>
+				<th>Signal</th>
+				<th>Typ</th>
+				<th>MAC</th>
+				<th>Encryption</th>
+			</tr>
+
+<%
+	if [ -s /tmp/wifinodelist ] ; then
+		firststep="$(readIWinfo "$iface" "ssid" "mac")"
+		rewriteIWinfo "$firststep"
+	else
+		readIWinfo "$iface" "td" "td"
+	fi
 %>
+		</table>
+	</fieldset>
+	</td></tr>
+<%
+}
+
+%>
+<table style="width: 100%">
+<tr><td>
+<form method="post" enctype="multipart/form-data">
+<fieldset>
+	<legend>Wifi Node File</legend>
+	<table>
+		<tr><th style="width: 20em;text-align:left;padding-bottom:10px">Alias Liste vorhanden:</th><td style="padding-bottom:10px"><%= "$havelist" %></td></tr>
+		<tr><th style="width: 20em;text-align:left">Upload Node-Liste:</th><td><input type="file" name="nodelist" /></td></tr>
+		<tr><td colspan="2" style="padding:10px 0">Hier kann eine Node-Liste (WiFiAnalyzer-Stil) hochgeladen werden.</td></tr>
+		<tr><td colspan="2"><input type="submit" name="wifiupload" value="Datei-Upload auf Router" /></td></tr>
+		<tr><td colspan="2" style="padding:10px 0">Wenn der Router mit dem Internet verbunden ist, kann die Node-Liste vom Monitoring bezogen werden:</td></tr>
+		<tr><th style="width: 20em;text-align:left">Name der Hood:</th><td><input type="text" name="hood" value="" /></td></tr>
+		<tr><td colspan="2" style="padding:10px 0"><input type="submit" name="wifidownload" value="Datei-Download von Monitoring" /></td></tr>
 	</table>
 </fieldset>
+</form>
 </td></tr>
+<%
+if uci -q get wireless.w2ap > /dev/null ; then
+	printWifiScan "w2ap"
+fi
+if uci -q get wireless.w5ap > /dev/null ; then
+	printWifiScan "w5ap"
+fi
+%>
 </table>
 
 <%in /www/ssl/cgi-bin/footer %>
-- 
2.7.4



Mehr Informationen über die Mailingliste franken-dev