[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