#!/usr/bin/awk -f BEGIN { chan=0; essid=""; encr=0; psk2=0; psk=0; i=0; # find interface - start by finding if in sta mode while( "uci show wireless" | getline) { if(/mode=sta/) { split($0,wl,"."); iface=wl[2]; } } close("uci show wireless") "uci get wireless." iface ".device" | getline radio close("uci get wireless." iface ".device") system("ifconfig wlan0 up") for(;;){ while( "iwlist wlan0 scan" | getline ) { scan[i++]=$0; } close("iwlist wlan0 scan") for (j=0;j 0) { "easybox_keygen " mac | getline rkey close("easybox_keygen " mac) } else { print essid " is encrypted and key not in whitelist"; continue; } } } system("uci set wireless." radio ".channel=" channel); system("uci set wireless." iface ".ssid=" essid); if (crypt == "none") { system("uci set wireless." iface ".encryption=none"); system("uci -q delete wireless." iface ".key"); } else { system("uci set wireless." iface ".key=" rkey); system("uci set wireless." iface ".encryption=" crypt); } system("uci show wireless > /tmp/keepalive"); system("wifi up"); while(system("sleep 60; wget -q -T 30 -O /dev/null http://google.com/index.html") == 0) { system("ledoff") } } else { # now test for the things we want # channel if (/Channel:[0-9]/) { m=match($0,"Channel"); if (RSTART > 0) { s=substr($0,m); n=match(s,/[0-9]+/); chan=substr(s,n,RLENGTH) } continue; } # we don't need else as we break on successful find if (/^ *ESSID/) { m=match($0,"\".*\""); if (RSTART > 0) essid=substr($0,m+1,RLENGTH-2); continue; } if (/^ *Encryption key:on/) { encr = 1; continue; } if (/^ *IE: IEEE 802.11i\/WPA2/) { psk2=1; continue; } if (/^ *IE: WPA /) { psk=1; continue; } } } } }