#!/bin/bash

IP_ADDRESS=$1
WIFI_CHANNEL=$2
WIFI_RADIO=$3

REPORT_FILE="/tmp/ap_model_id.$1"

echo "<pre>Nessun access point gestito su questo indirizzo<pre>" > /tmp/survey.txt

if [ -z $IP_ADDRESS ]
then
  echo Use $0 IP_ADDRESS [ new_channel ] [ radio_id ]
  exit 0
fi 

#################################################################### OpenWRT with daemon

if [ -z "$WIFI_CHANNEL" ]
then
  RESULT=`echo "quit" | socat STDIO TCP:$IP_ADDRESS:6700,connect-timeout=5,crlf`
  if [ "$RESULT" ]
  then
    echo "$RESULT" > $REPORT_FILE
    exit 1
  fi
fi

UBUNTU_VER=`lsb_release -a 2>/dev/null | grep "Description" | awk '/Ubuntu/ { print $3; }' | cut -f1 -d'.'`
if [ $UBUNTU_VER -eq 14 ]
then
  SSH_PARMS="-o ConnectTimeout=5 -o BatchMode=yes -o StrictHostKeyChecking=no"
else
  SSH_PARMS="-o ConnectTimeout=5 -o BatchMode=yes -o StrictHostKeyChecking=no -oHostKeyAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1 -oPubkeyAcceptedKeyTypes=+ssh-rsa -i /opt/euro-beta/systools/id_e3g_rsa "
fi

ssh-keygen -f "/root/.ssh/known_hosts" -R $IP_ADDRESS

#################################################################### Naawigo

if curl -s -m 5 http://$IP_ADDRESS/cgi-bin/simple/login.lua | grep -q NAAW ;
then
  NAAW_AUTH=`curl -s -m 5 -c /tmp/winext.cookie --data-binary 'user=root&password=spintec' http://$IP_ADDRESS/cgi-bin/simple/login.lua |  tr ';' '\n' | grep document.cookie | tr '"' '\n' | grep naaw_auth`";naaw_user=root;"

  echo Cookie [ $NAAW_AUTH ]

  rm -f /tmp/simple_lua.html
  VERIFY_URL="http://"$IP_ADDRESS"/cgi-bin/simple/simple.lua"
  echo Verify URL [ $VERIFY_URL ]
  curl -s -m 5 -b $NAAW_AUTH $VERIFY_URL > /tmp/simple_lua.html
  NAAW_FIRMWARE=`cat /tmp/simple_lua.html | sed 's/tr/\n/g' | grep "Fw Version:" | sed 's/th//g; s/td//g;' | tr -d '<>/' | cut -d : -f2`
  NAAW_IF_NAME="wifi0"

  if [ -z "$NAAW_FIRMWARE" ] # Maybe NaawigoN with provisioning system
  then
    NAAW_IF_NAME="radio0"
    HEDERA_FNAME=/tmp/hedera_info.txt.$IP_ADDRESS
    rm -f $HEDERA_FNAME
    scp $SSH_PARMS provision@$IP_ADDRESS:/var/hedera/$IP_ADDRESS $HEDERA_FNAME > /dev/null 2>&1    
    NAAW_FIRMWARE=`cat $HEDERA_FNAME | grep host | head -1 | cut -d'=' -f2`
    echo "HederaInfo : $NAAW_FIRMWARE  WiFi Device: $NAAW_IF_NAME"
    if [ "A$WIFI_CHANNEL" = "AS" ]
    then
      rm -f /tmp/ssurvey.log
      rm -f /tmp/survey.txt      
      ssh $SSH_PARMS provision@$IP_ADDRESS /lib/provisioning-system/site_survey > /tmp/ssurvey.log

cat << EOF > /tmp/survey.html 
<table>
<tr>
<th>Address</th>
<th>Channel</th>
<th>Quality</th>
<th>Encryption</th>
<th>SSID</th>
<th>Mode</th>
</tr>
EOF
       
      echo "<pre>" > /tmp/survey.txt
#      cat /tmp/ssurvey.log | tr '\n' '|' | sed -r 's/Cell [0-9]+ - /\n/g; s/Channel:/#Honzicek#Channel:/g; s/Quality=/#Honzicek#Quality=/g; s/Mode:/#Honzicek#Mode:/g; s/Encryption key:/#Honzicek#Encryption key:/g; s/ESSID:/#Honzicek#ESSID:/g; s/Extra:/#Honzicek#Extra:/g;' | tr '|' '\n' | grep "#Honzicek#" | sed -r 's/^ *#Honzicek#/<\/td><td>/g; s/^| *$//g ' | tr -d '\n' | sed -r 's/Address:/\n<tr><td>/g; s/Channel://g; s/  Signal level=-*[0-9]+ *dBm//g; s/Encryption key://g; s/ESSID://g; s/Mode:([a-z,A-Z,-]+)<\/td><td>/\1<\/td><\/tr>/g; s/^<\/td><td>//g; s/Extra:/\nDELETE_LINE/g  ' | grep -v 'DELETE_LINE' >> /tmp/survey.html
      cat /tmp/ssurvey.log | tr '\n' '|' | sed -r 's/Cell [0-9]+ - /\n/g; s/Address:/#Honzicek#Address:/g;  s/Channel:/#Honzicek#Channel:/g; s/Quality=/#Honzicek#Quality=/g; s/Mode:/#Honzicek#Mode:/g; s/Encryption key:/#Honzicek#Encryption key:/g; s/ESSID:/#Honzicek#ESSID:/g; s/Extra:/#Honzicek#Extra:/g;' | tr '|' '\n' | grep "#Honzicek#" | sed -r 's/^ *#Honzicek#/<\/td><td>/g; s/^| *$//g ' | tr -d '\n' | sed -r 's/Address:/\n<tr><td>/g; s/Channel://g; s/  Signal level=-*[0-9]+ *dBm//g; s/Encryption key://g; s/ESSID://g; s/Mode:([a-z,A-Z,-]+)<\/td><td>/\1<\/td><\/tr>/g; s/^<\/td><td>//g; s/Extra:/\nDELETE_LINE/g  ' | grep -v 'DELETE_LINE' >> /tmp/survey.html
      OP_MODE=`cat /tmp/hedera_info.txt | grep host | head -1 | cut -d'=' -f2 | cut -d',' -f3`
      echo -n "<br>Modalita' operativa : "$OP_MODE >> /tmp/survey.txt 
      MAC_ADDR=`cat /tmp/hedera_info.txt | grep 'wlan0=' | cut -d'=' -f2 | cut -d',' -f1`
      echo " Indirizzo MAC: " $MAC_ADDR "<br><br>" >> /tmp/survey.txt
      if [ -s /tmp/lespipe_test ]
      then
        lesspipe /tmp/survey.html 
        lesspipe /tmp/survey.html >> /tmp/survey.txt
      else
        cat /tmp/survey.html
        cat /tmp/survey.html >> /tmp/survey.txt
      fi
      echo "</pre>" >> /tmp/survey.txt
    
      exit 0
    fi
    if [ ! "A$WIFI_CHANNEL" = "A" ]
    then

      echo Setting Channel $WIFI_CHANNEL 

      if [ $WIFI_CHANNEL -gt 14 ]
      then
        WIFI_MODE="11na"
      else
        WIFI_MODE="11ng"
      fi
      ssh $SSH_PARMS provision@$IP_ADDRESS /lib/provisioning-system/change_hwmode $NAAW_IF_NAME $WIFI_MODE
      sleep 2
      ssh $SSH_PARMS provision@$IP_ADDRESS /lib/provisioning-system/change_channel $NAAW_IF_NAME $WIFI_CHANNEL
      sleep 2
#     ssh $SSH_PARMS provision@$IP_ADDRESS /lib/provisioning-system/reload_services wifi
      ssh $SSH_PARMS provision@$IP_ADDRESS nohup /lib/provisioning-system/reboot 3
      sleep 2
    fi
    
    
    NEW_CHANNEL=`ssh $SSH_PARMS provision@$IP_ADDRESS /lib/provisioning-system/get_channel $NAAW_IF_NAME`
    CLIENT_LIST=`ssh $SSH_PARMS provision@$IP_ADDRESS /usr/sbin/iw dev wlan0 station dump | grep Station | cut -d' ' -f2 | tr '\n' ' '`
    echo Actual Channel: $NEW_CHANNEL

    if [ -z $NEW_CHANNEL ]
    then
      NEW_CHANNEL=15
    fi

    echo "VENDOR=SpinTec" > $REPORT_FILE
    echo "MODEL=MiniNX" >> $REPORT_FILE
    echo "CHANNEL=$NEW_CHANNEL" >> $REPORT_FILE
    echo "CLIENTS=$CLIENT_LIST" >> $REPORT_FILE
    echo "NEW_CHANNEL=$NEW_CHANNEL" >> $REPORT_FILE
    exit $NEW_CHANNEL
    
  else
    if [ "A${NAAW_FIRMWARE:0:3}" = "A4.2" ]
    then
      NAAW_IF_NAME="radio0"
    fi
    echo "Firmware : $NAAW_FIRMWARE  WiFi Device: $NAAW_IF_NAME"
 

    if [ "A$WIFI_CHANNEL" = "AS" ]
    then
      rm -f /tmp/survey.txt
      rm -f /tmp/survey.html
      curl -s -m 15 http://$IP_ADDRESS/cgi-bin/simple/ssurvey.lua"?if=" > /tmp/survey.html
      echo "<pre>" > /tmp/survey.txt
#      VERIFY_URL="http://"$IP_ADDRESS"/cgi-bin/simple/simple.lua"
#      echo Verify URL [ $VERIFY_URL ]
#      OP_MODE=`curl -s -m 5 -b $NAAW_AUTH $VERIFY_URL | sed 's/tr/\n/g' | grep Profile: | sed 's/th//g; s/td//g;' | tr -d "<>/" | cut -d ":" -f2`
      OP_MODE=`cat /tmp/simple_lua.html | sed 's/tr/\n/g' | grep Profile: | sed 's/th//g; s/td//g;' | tr -d "<>/" | cut -d ":" -f2`

      echo -n "<br>Modalita' operativa : "$OP_MODE >> /tmp/survey.txt 
      ping -c2 $IP_ADDRESS
      MAC_ADDR=`arp -n | grep $IP_ADDRESS | awk '{ print $3; }'`
      LAST_MAC_LETTER=${MAC_ADDR:16:1}
      echo " Indirizzo MAC: " ${MAC_ADDR:0:16}`echo $LAST_MAC_LETTER | tr "02468ACE" "13579BDF"` "<br><br>" >> /tmp/survey.txt
      lesspipe /tmp/survey.html > /tmp/lespipe_test
      if [ -s /tmp/lespipe_test ]
      then
        lesspipe /tmp/survey.html 
        lesspipe /tmp/survey.html >> /tmp/survey.txt
      else
        cat /tmp/survey.html
        cat /tmp/survey.html >> /tmp/survey.txt
      fi
      echo "</pre>" >> /tmp/survey.txt
    
      exit 0
    fi
  
    if [ ! "A$WIFI_CHANNEL" = "A" ]
    then

      echo Setting Channel $WIFI_CHANNEL 

      CHANNEL_URL="http://"$IP_ADDRESS"/cgi-bin/simple/douci.lua?c=wireless%2C$NAAW_IF_NAME%2Cchannel%2C"$WIFI_CHANNEL"%3B&a=commit"
      echo Update URL [ $CHANNEL_URL ]

      curl -s -m 5 -b $NAAW_AUTH $CHANNEL_URL > /dev/null 2>&1
      sleep 3
    fi
    VERIFY_URL="http://"$IP_ADDRESS"/cgi-bin/simple/ap.lua"
    echo Verify URL [ $VERIFY_URL ]
    NEW_CNANNEL=""
    for (( i=0; $i<5; i++ ))
    do
      NEW_CHANNEL=`curl -s -m 5 -b $NAAW_AUTH $VERIFY_URL | grep Radio | sed 's/class="uci"/\n/g' | grep "wireless,.*,channel" | sed 's/option/\n/g' | grep selected | cut -d '"' -f2 `
      echo "$i: Checking Actual Channel [$NEW_CHANNEL]"
    
      if [ "A$NEW_CHANNEL" != "A" ]
      then
        break
      fi  
      sleep 3
    done
  
    echo Actual Channel: $NEW_CHANNEL

#    VERIFY_URL="http://"$IP_ADDRESS"/cgi-bin/simple/simple.lua"
#    echo Verify URL [ $VERIFY_URL ]
#    OP_MODE=`curl -s -m 5 -b $NAAW_AUTH $VERIFY_URL | sed 's/tr/\n/g' | grep Profile: | sed 's/th//g; s/td//g;' | tr -d "<>/" | cut -d ":" -f2`
    OP_MODE=`cat /tmp/simple_lua.html | sed 's/tr/\n/g' | grep Profile: | sed 's/th//g; s/td//g;' | tr -d "<>/" | cut -d ":" -f2`

    echo Operating Mode: $OP_MODE

    if [ -z $NEW_CHANNEL ]
    then
      NEW_CHANNEL=15
    fi
    if echo $OP_MODE | grep -iq repeater ;
    then 
      NEW_CHANNEL=$(( $NEW_CHANNEL + 16 ))
    fi

    echo "VENDOR=WiNext" > $REPORT_FILE
    echo "MODEL=NaawiGo" >> $REPORT_FILE
    echo "CHANNEL=$NEW_CHANNEL" >> $REPORT_FILE
    echo "CLIENTS=" >> $REPORT_FILE
    echo "NEW_CHANNEL=$NEW_CHANNEL" >> $REPORT_FILE
    exit $NEW_CHANNEL
  fi
  exit 0
fi

#################################################################### UNIFI

UNIFI_MODEL=`ssh $SSH_PARMS euro3g@$IP_ADDRESS cat /etc/banner | grep UniFi | cut -d'-' -f2-3 | tr -d '!'`
if [ -n "$UNIFI_MODEL" ]
then

  if [ "A$WIFI_CHANNEL" = "AS" ]
  then

      RESULT_FILE="/tmp/survey.txt"
      cat <<EOF > $RESULT_FILE
<html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:sans-serif">
<p align="center"><span style="font-family:helvetica"><br /><hr><br /></span><span style="font-family:helvetica;font-size:16pt;font-weight:600">Risultati della scansione sul $UNIFI_MODEL [$IP_ADDRESS]</span></p>
<p align="center"><hr><br /><span style="font-family:helvetica;font-size:16pt;font-weight:600">802.11bgn ( 2.4 GHz )</span></p><hr><br /></p>
<table>
<tr><td>
EOF
      ssh $SSH_PARMS euro3g@$IP_ADDRESS iwlist ath2 scanning > /tmp/ath2_scan.log
      ssh $SSH_PARMS euro3g@$IP_ADDRESS iwlist ath0 scanning > /tmp/ath0_scan.log
      cat /tmp/ath0_scan.log | grep -A4 Cell | grep -v Cell | sed 's/$/<\/td><td>/g;  s/--<\/td><td>/<\/td><\/tr><tr><td>/g' >> $RESULT_FILE
      cat <<EOF >> $RESULT_FILE 
</td></tr>
</table>
<p align="center"><hr><br /><span style="font-family:helvetica;font-size:16pt;font-weight:600">802.11ac ( 5 GHz )</span></p><hr><br /></p>
<table>
<tr><td>
EOF
  cat /tmp/ath2_scan.log | grep -A4 Cell | grep -v Cell | sed 's/$/<\/td><td>/g;  s/--<\/td><td>/<\/td><\/tr><tr><td>/g' >> $RESULT_FILE
  cat <<EOF >> $RESULT_FILE
</tr>
</table>
</body>
</html>
EOF

    exit 0
  fi

  if [ ! "A$WIFI_CHANNEL" = "A" ]
  then

    exit 0
  fi

   IWCONFIG_FILE="/tmp/unifi_iwconfig.log.$IP_ADDRESS"

    chan2freq=( [1]=2412 [2]=2417 [3]=2422 [4]=2427 [5]=2432 [6]=2437 [7]=2442 [8]=2447 [9]=2452 [10]=2457 [11]=2462 [12]=2467 [13]=2472 [14]=2484 [32]=5160 [34]=5170 [36]=5180 [38]=5190 [40]=5200 [42]=5210 [44]=5220 [46]=5230 [48]=5240 [50]=5250 [52]=5260 [54]=5270 [56]=5280 [58]=5290 [60]=5300 [62]=5310 [64]=5320 [68]=5340 [96]=5480 [100]=5500 [102]=5510 [104]=5520 [106]=5530 [108]=5540 [110]=5550 [112]=5560 [114]=5570 [116]=5580 [118]=5590 [120]=5600 [122]=5610 [124]=5620 [126]=5630 [128]=5640 [132]=5660 [134]=5670 [136]=5680 [138]=5690 [140]=5700 [142]=5710 [144]=5720 [149]=5745 [151]=5755 [153]=5765 [155]=5775 [157]=5785 [159]=5795 [161]=5805 [163]=5815 [165]=5825 [167]=5835 [169]=5845 [171]=5855 [173]=5865 )
    freq2chan=( [2412]=1 [2417]=2 [2422]=3 [2427]=4 [2432]=5 [2437]=6 [2442]=7 [2447]=8 [2452]=9 [2457]=10 [2462]=11 [2467]=12 [2472]=13 [2484]=14 [5160]=32 [5170]=34 [5180]=36 [5190]=38 [5200]=40 [5210]=42 [5220]=44 [5230]=46 [5240]=48 [5250]=50 [5260]=52 [5270]=54 [5280]=56 [5290]=58 [5300]=60 [5310]=62 [5320]=64 [5340]=68 [5480]=96 [5500]=100 [5510]=102 [5520]=104 [5530]=106 [5540]=108 [5550]=110 [5560]=112 [5570]=114 [5580]=116 [5590]=118 [5600]=120 [5610]=122 [5620]=124 [5630]=126 [5640]=128 [5660]=132 [5670]=134 [5680]=136 [5690]=138 [5700]=140 [5710]=142 [5720]=144 [5745]=149 [5755]=151 [5765]=153 [5775]=155 [5785]=157 [5795]=159 [5805]=161 [5815]=163 [5825]=165 [5835]=167 [5845]=169 [5855]=171 [5865]=173)
    ssh $SSH_PARMS euro3g@$IP_ADDRESS iwconfig > $IWCONFIG_FILE 2>/dev/null
    CHANLIST=""
    CLIENT_LIST=""
    CLIENT_LIST_SEP=""
    IFLIST=`cat $IWCONFIG_FILE | grep ESSID | grep -v vwire | grep -v wips | cut -d ' ' -f 1`
    for i in $IFLIST
    do
      decfr=`cat $IWCONFIG_FILE | grep -A10 $i | grep Frequency | awk '{print $2}' | cut -d ':' -f 2`
      freq=`echo "1000*$decfr" | bc -l | cut -d '.' -f 1`
      if [ "A$CHANLIST" != "A" ]
      then
        CHANLIST=${CHANLIST}","
      fi
      NEW_CHANNEL=${freq2chan[$freq]}
      CHANLIST=${CHANLIST}$NEW_CHANNEL
      CLIENT_LIST=${CLIENT_LIST}${CLIENT_LIST_SEP}`ssh $SSH_PARMS euro3g@$IP_ADDRESS /usr/sbin/hostapd_cli -i $i list_sta | tr '\n' ' '`
      CLIENT_LIST_SEP=","
    done
    echo "VENDOR=Ubiquity" > $REPORT_FILE
    echo "MODEL=UniFi $UNIFI_MODEL" >> $REPORT_FILE
    echo "CHANNEL=$CHANLIST" >> $REPORT_FILE
    echo "CLIENTS=$CLIENT_LIST" >> $REPORT_FILE
    echo "NEW_CHANNEL=$NEW_CHANNEL" >> $REPORT_FILE
    exit $NEW_CHANNEL
fi  
 
#################################################################### OPENWRT

OPENWRT_SYSTEM_FILE="/tmp/openwrt_system.$IP_ADDRESS"
OPENWRT_IWINFO_FILE="/tmp/openwrt_iwinfo.$IP_ADDRESS"
rm -f $OPENWRT_SYSTEM_FILE
ssh $SSH_PARMS root@$IP_ADDRESS cat /etc/config/system > $OPENWRT_SYSTEM_FILE

if cat $OPENWRT_SYSTEM_FILE | grep -q 'Euro3G meshing AP'
then
  chan2freq=( [1]=2412 [2]=2417 [3]=2422 [4]=2427 [5]=2432 [6]=2437 [7]=2442 [8]=2447 [9]=2452 [10]=2457 [11]=2462 [12]=2467 [13]=2472 [14]=2484 [32]=5160 [34]=5170 [36]=5180 [38]=5190 [40]=5200 [42]=5210 [44]=5220 [46]=5230 [48]=5240 [50]=5250 [52]=5260 [54]=5270 [56]=5280 [58]=5290 [60]=5300 [62]=5310 [64]=5320 [68]=5340 [96]=5480 [100]=5500 [102]=5510 [104]=5520 [106]=5530 [108]=5540 [110]=5550 [112]=5560 [114]=5570 [116]=5580 [118]=5590 [120]=5600 [122]=5610 [124]=5620 [126]=5630 [128]=5640 [132]=5660 [134]=5670 [136]=5680 [138]=5690 [140]=5700 [142]=5710 [144]=5720 [149]=5745 [151]=5755 [153]=5765 [155]=5775 [157]=5785 [159]=5795 [161]=5805 [163]=5815 [165]=5825 [167]=5835 [169]=5845 [171]=5855 [173]=5865 )
  freq2chan=( [2412]=1 [2417]=2 [2422]=3 [2427]=4 [2432]=5 [2437]=6 [2442]=7 [2447]=8 [2452]=9 [2457]=10 [2462]=11 [2467]=12 [2472]=13 [2484]=14 [5160]=32 [5170]=34 [5180]=36 [5190]=38 [5200]=40 [5210]=42 [5220]=44 [5230]=46 [5240]=48 [5250]=50 [5260]=52 [5270]=54 [5280]=56 [5290]=58 [5300]=60 [5310]=62 [5320]=64 [5340]=68 [5480]=96 [5500]=100 [5510]=102 [5520]=104 [5530]=106 [5540]=108 [5550]=110 [5560]=112 [5570]=114 [5580]=116 [5590]=118 [5600]=120 [5610]=122 [5620]=124 [5630]=126 [5640]=128 [5660]=132 [5670]=134 [5680]=136 [5690]=138 [5700]=140 [5710]=142 [5720]=144 [5745]=149 [5755]=151 [5765]=153 [5775]=155 [5785]=157 [5795]=159 [5805]=161 [5815]=163 [5825]=165 [5835]=167 [5845]=169 [5855]=171 [5865]=173)


  if cat $OPENWRT_SYSTEM_FILE | grep hostname | grep -q 'EAP_'
  then
    BLUE_DOME="green\:status"
    WHITE_DOME="amber\:status"
    AP_VENDOR="TP-Link"
    AP_MODEL="EAP225"
  else
    BLUE_DOME="blue\:dome"
    WHITE_DOME="white\:dome"
    if cat $OPENWRT_SYSTEM_FILE | grep sysfs | grep -q "ubnt\:white\:dome"
    then
      BLUE_DOME="ubnt\:blue\:dome"
      WHITE_DOME="ubnt\:white\:dome"
    fi
    AP_VENDOR="Ubiquity"
    AP_MODEL="UniFi UAP-AC-"`cat $OPENWRT_SYSTEM_FILE | grep 'option hostname' | cut -d'_' -f3 |cut -d"'" -f1`
  fi

  LAN_RX1=`ssh $SSH_PARMS root@$IP_ADDRESS -C "ifconfig eth0" 2>/dev/null | grep 'RX bytes' | cut -d':' -f2 | cut -d' ' -f1`
  if [ "A$WIFI_CHANNEL" = "AS" ]
  then

      ssh $SSH_PARMS root@$IP_ADDRESS -C "echo 'timer' >/sys/class/leds/${BLUE_DOME}/trigger"
      ssh $SSH_PARMS root@$IP_ADDRESS -C "echo 200 > /sys/class/leds/${BLUE_DOME}/delay_on"
      ssh $SSH_PARMS root@$IP_ADDRESS -C "echo 200 > /sys/class/leds/${BLUE_DOME}/delay_off"


      RESULT_FILE="/tmp/survey.txt"
      cat <<EOF > $RESULT_FILE
<html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:sans-serif">
<p align="center"><span style="font-family:helvetica"><br /><hr><br /></span><span style="font-family:helvetica;font-size:16pt;font-weight:600">Risultati della scansione sul $UNIFI_MODEL [$IP_ADDRESS]</span></p>
<p align="center"><hr><br /><span style="font-family:helvetica;font-size:16pt;font-weight:600">802.11bgn ( 2.4 GHz )</span></p><hr><br /></p>
<table>
<tr><td>
EOF
      ssh $SSH_PARMS root@$IP_ADDRESS iw dev wlan0 scan > /tmp/wlan0_scan.log
      ssh $SSH_PARMS root@$IP_ADDRESS iw dev wlan1-1 scan > /tmp/wlan1_scan.log
      tac /tmp/wlan1_scan.log | grep -A6 SSID | grep -v Probe | grep -v seen | grep -v capability | grep -v beacon | grep -v 'TSF:.*usec' | sed 's/$/<\/td><td>/g;  s/--<\/td><td>/<\/td><\/tr><tr><td>/g'  >> $RESULT_FILE
      cat <<EOF >> $RESULT_FILE 
</td></tr>
</table>
<p align="center"><hr><br /><span style="font-family:helvetica;font-size:16pt;font-weight:600">802.11ac ( 5 GHz )</span></p><hr><br /></p>
<table>
<tr><td>
EOF
  tac /tmp/wlan0_scan.log | grep -A6 SSID | grep -v Probe | grep -v seen | grep -v capability | grep -v beacon | grep -v 'TSF:.*usec' | sed 's/$/<\/td><td>/g;  s/--<\/td><td>/<\/td><\/tr><tr><td>/g' >> $RESULT_FILE
  cat <<EOF >> $RESULT_FILE
</tr>
</table>
</body>
</html>
EOF
    rm -f ${RESULT_FILE}.tmp
    mv $RESULT_FILE ${RESULT_FILE}.tmp
    cat ${RESULT_FILE}.tmp | while read survey_line
    do
      if echo $survey_line | grep -q 'freq:'
      then
        freq=`echo $survey_line | cut -d ':' -f2 | cut -d '<' -f1 | cut -d ' ' -f2`
        chan=${freq2chan[$freq]}
        echo $survey_line | sed "s/freq/chan/g; s/$freq/$chan/g" >> $RESULT_FILE
      else
        echo $survey_line >> $RESULT_FILE
      fi
    done

    ssh $SSH_PARMS root@$IP_ADDRESS -C "echo 'none' > /sys/class/leds/${BLUE_DOME}/trigger"
    ssh $SSH_PARMS root@$IP_ADDRESS -C "echo 255 > /sys/class/leds/${BLUE_DOME}/brightness"

    exit 0
  fi

  if [ ! "A$WIFI_CHANNEL" = "A" ]
  then
    exit 0
  fi

    ssh $SSH_PARMS root@$IP_ADDRESS /usr/bin/iwinfo > $OPENWRT_IWINFO_FILE 2>/dev/null
    CHANLIST=""
    CLIENT_LIST=""
    CLIENT_LIST_SEP=""
    IFLIST="wlan0 wlan1-1"
  for i in $IFLIST
  do
      if [ "A$CHANLIST" != "A" ]
      then
        CHANLIST=${CHANLIST}","
      fi
      NEW_CHANNEL=`cat $OPENWRT_IWINFO_FILE | grep -A5 $i | grep 'Channel:' |  cut -d':' -f3 | cut -d ' ' -f2`
      CHANLIST=${CHANLIST}$NEW_CHANNEL
      CLIENT_LIST=${CLIENT_LIST}${CLIENT_LIST_SEP}`ssh $SSH_PARMS root@$IP_ADDRESS /usr/bin/iwinfo $i assoclist | grep SNR | wc -l`
      CLIENT_LIST_SEP=","
  done
    LAN_RX2=`ssh $SSH_PARMS root@$IP_ADDRESS -C "ifconfig eth0" 2>/dev/null | grep 'RX bytes' | cut -d':' -f2 | cut -d' ' -f1`
    LAN=DOWN
    if [ $((LAN_RX2 - LAN_RX1)) -gt 0 ]
    then
      LAN=UP
      AP_MODEL=${AP_MODEL}" (LAN)"
    fi
    echo "VENDOR=$AP_VENDOR" > $REPORT_FILE
    echo "MODEL=$AP_MODEL" >> $REPORT_FILE
    echo "CHANNEL=$CHANLIST" >> $REPORT_FILE
    echo "CLIENTS=$CLIENT_LIST" >> $REPORT_FILE
    echo "NEW_CHANNEL=$NEW_CHANNEL" >> $REPORT_FILE
    echo "LAN=$LAN" >> $REPORT_FILE
    exit $NEW_CHANNEL
fi

echo No Known AP on $IP_ADDRESS
exit 0



