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

Tim Niemeyer tim at tn-x.org
Sa Nov 4 15:43:11 CET 2017


Hi

Ah.. Aufräumarbeiten.. Sehr gut.. Wäre es viel Arbeit diesen Patch als erstes von den drein drauf zu haben? Ich denke, danach sind ein paar der Anmerkungen von eben obsolete.

Weiteres unten..

Am Freitag, den 20.10.2017, 00:25 +0200 schrieb Adrian Schmutzler:
> 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"
Besser phy0/1 dafür nehmen:

Wenn der Eintrag da ist, dann gleich den Wert als Device zum Scannen
nehmen: uci get wireless.radio0.phy

Die Phy's haben den Vorteil, dass die auch gehen sollten, wenn wir grad
noch im  Station-Mode sind.


> +fi
> +if uci -q get wireless.w5ap > /dev/null ; then
> > +	printWifiScan "w5ap"
> +fi
> +%>
>  </table>
>  
>  <%in /www/ssl/cgi-bin/footer %>
> -- 
> 2.7.4
> 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 488 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20171104/ddd5ebad/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev