Message ID | 1503573543-1858-2-git-send-email-freifunk@adrianschmutzler.de |
---|---|
State | Superseded |
Delegated to: | Adrian Schmutzler |
Headers | show |
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 254c24b..29f99e5 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 @@ -1,8 +1,61 @@ -#!/usr/bin/haserl +#!/usr/bin/haserl --upload-dir=/tmp --upload-limit=12000 +<% +# treat post +if [ "$REQUEST_METHOD" == "POST" ] ; then + if [ "$POST_wifiupload" != "" ] ; then + if [ ! -f "$HASERL_nodelist_path" ] ; then + MSG='<span class="red">Node-Datei nicht gefunden!</span>' + elif [ "$(du -k "$HASERL_nodelist_path" | cut -f1)" == "0" ] ; then + MSG='<span class="red">Node-Datei ist leer!</span>' + else + mv "$HASERL_nodelist_path" /tmp/wifinodelist + MSG='<span class="green">Upload erfolgreich!</span>' + fi + fi + if [ "$POST_wifidownload" != "" ] ; then + if [ ! -n "$POST_hood" ] ; then + MSG='<span class="red">Hood nicht angegeben!</span>' + else + if /bin/wget -T 10 -O /tmp/wifinodelist "https://monitoring.freifunk-franken.de/api/wifianal/$POST_hood" 2> /dev/null ; then + MSG='<span class="green">Download erfolgreich!</span>' + else + MSG='<span class="red">Download fehlgeschlagen!</span>' + fi + fi + fi +fi +%> <%in /www/ssl/cgi-bin/header %> +<%in /www/ssl/cgi-bin/helpers %> +<% show_msg %> +<% +if [ -s /tmp/wifinodelist ] ; then + numentries="$(grep -c '^[^#]' /tmp/wifinodelist)" + filehood="$(grep -e "#Hood:" /tmp/wifinodelist | awk -F" " '{print $2}')" + havelist="<span style='color:green'>Ja (Hood: ${filehood}, ${numentries} Einträge)</span>" +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"> @@ -16,11 +69,37 @@ </tr> <% -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 +if [ -s /tmp/wifinodelist ] ; then + firststep=$(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><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 + mac="$(echo "$line" | sed -e 's#.*<mac>\(.*\)</mac>.*#\1#')" + routerid="$(grep -i -e "$mac" /tmp/wifinodelist | awk -F"|" '{print $2}')" + if [ -n "$routerid" ] ; then + ssid="<span style='color:green'>${routerid}</span>" + else + ssidtmp="$(echo "$line" | sed -e 's#.*<ssid>\(.*\)</ssid>.*#\1#')" + if [ "$ssidtmp" = "unknown" ] ; then + ssid="<span style='color:blue'>${ssidtmp}</span>" + else + ssid="$ssidtmp" + fi + fi + midpart=$(echo "$line" | sed -e 's#.*</ssid>\(.*\)<mac>.*#\1#') + 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 %> </table> </fieldset>
Hallo zusammen, im Anhang ein Screenshot der neuen wifiscan.html Seite. Grüße Adrian > -----Original Message----- > From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf > Of Adrian Schmutzler > Sent: Donnerstag, 24. August 2017 13:19 > To: franken-dev@freifunk.net > Subject: [PATCH 2/2] fff-web: Label Freifunk routers individually in > wifiscan.html > > This patch enables labelling of routers in the WebUI's WiFi scan page, so their > hostname is displayed instead of freifunk.franken.net. The evaluation is > performed based on a WifiAnalyzer style node file /tmp/wifinodelist. > > In the WebUI, this file may be provided by file upload or by downloading > from the Monitoring API (if the router has internet access). > > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> > > Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> > --- > .../fff-web/files/www/ssl/cgi-bin/wifiscan.html | 91 > ++++++++++++++++++++-- > 1 file changed, 85 insertions(+), 6 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 254c24b..29f99e5 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 > @@ -1,8 +1,61 @@ > -#!/usr/bin/haserl > +#!/usr/bin/haserl --upload-dir=/tmp --upload-limit=12000 > > +<% > +# treat post > +if [ "$REQUEST_METHOD" == "POST" ] ; then > + if [ "$POST_wifiupload" != "" ] ; then > + if [ ! -f "$HASERL_nodelist_path" ] ; then > + MSG='<span class="red">Node-Datei nicht > gefunden!</span>' > + elif [ "$(du -k "$HASERL_nodelist_path" | cut -f1)" == "0" ] ; > then > + MSG='<span class="red">Node-Datei ist > leer!</span>' > + else > + mv "$HASERL_nodelist_path" /tmp/wifinodelist > + MSG='<span class="green">Upload > erfolgreich!</span>' > + fi > + fi > + if [ "$POST_wifidownload" != "" ] ; then > + if [ ! -n "$POST_hood" ] ; then > + MSG='<span class="red">Hood nicht > angegeben!</span>' > + else > + if /bin/wget -T 10 -O /tmp/wifinodelist > "https://monitoring.freifunk-franken.de/api/wifianal/$POST_hood" 2> > /dev/null ; then > + MSG='<span class="green">Download > erfolgreich!</span>' > + else > + MSG='<span class="red">Download > fehlgeschlagen!</span>' > + fi > + fi > + fi > +fi > +%> > <%in /www/ssl/cgi-bin/header %> > +<%in /www/ssl/cgi-bin/helpers %> > +<% show_msg %> > +<% > +if [ -s /tmp/wifinodelist ] ; then > + numentries="$(grep -c '^[^#]' /tmp/wifinodelist)" > + filehood="$(grep -e "#Hood:" /tmp/wifinodelist | awk -F" " '{print > $2}')" > + havelist="<span style='color:green'>Ja (Hood: ${filehood}, > ${numentries} Einträge)</span>" > +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"> > @@ -16,11 +69,37 @@ > </tr> > > <% > -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 > +if [ -s /tmp/wifinodelist ] ; then > + firststep=$(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><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 > + mac="$(echo "$line" | sed -e > 's#.*<mac>\(.*\)</mac>.*#\1#')" > + routerid="$(grep -i -e "$mac" /tmp/wifinodelist | awk -F"|" > '{print $2}')" > + if [ -n "$routerid" ] ; then > + ssid="<span style='color:green'>${routerid}</span>" > + else > + ssidtmp="$(echo "$line" | sed -e > 's#.*<ssid>\(.*\)</ssid>.*#\1#')" > + if [ "$ssidtmp" = "unknown" ] ; then > + ssid="<span > style='color:blue'>${ssidtmp}</span>" > + else > + ssid="$ssidtmp" > + fi > + fi > + midpart=$(echo "$line" | sed -e > 's#.*</ssid>\(.*\)<mac>.*#\1#') > + 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 > %> > </table> > </fieldset> > -- > 2.7.4 > > -- > franken-dev mailing list > franken-dev@freifunk.net > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net