home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # Wifi Access Gadget
- # ver 0.0.0
- # basic diagnostic listing
- # ver 0.1.0
- # interactive command buttons
- # ver 0.2.0
- # interactive scanning
- # public release
- # ver 0.2.1
- # scan bug fixed
- # partial support of Wifi-Beta
- # intelligent buttons
- # ver 0.2.2
- # reports open networks
- # refresh in Scan dialog
- # dotpupped
- # ver 0.2.3
- # usability improvements in documentation and installer
- # ver 0.2.4
- # autodetect adapter from /proc/net/wireless
- # ping moved to seperate button
- # got rid of silly disk writes
- # added socket testing
- # ver 0.2.5
- # essid with spaces
- # external wag-conf
- # no overwrite of user files on reinstall
- # better socket testing
- # ver 0.2.6
- # additional scan error handling
- # additional dhcpcd error handling
- # smarter buttons
- # PCMCIA optional
- # rewrote everything (bug hunt/verbose code)
- # new debug script
- # ver 0.3.0
- # profiles
- # help interface
- # install to /usr
- # ver 0.3.1
- # improved 1.0.5 compatability
- # bug fixes
- # ver 0.3.2
- # 10+ cells
- # socket-test in main program
- # improved pupget registration
- # improved ifconfig use
- # improved ad-hoc support
- # waiting dialog
- # slightly prettier xmessage
- # ver 0.4.0
- # under development
- # new ping dialog
- # profile generator
- # new interface
- # replace xmessage dialogs
- # automatic dhcpcd handling
- # Keenerd
-
-
- XM_BCOLOR="#dddddd"
- XM_TITLE="W.A.G. 0.3.2"
- NL="
- "
-
- #checks wag-conf
- SOCTEST=`grep 'CARDSOC=' /etc/WAG/wag-conf`
- if [ "$SOCTEST" = "" ]; then
- xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -center "It seems WAG is not configured. Launching socket-test...."
- sh /usr/local/WAG/socket-test
- fi
-
- # main loop
- while [ 0 ]
- do
-
- # borrowed waiting dialog from Rarsa
- xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Collecting wifi information " &
- MSG_PID=$!
-
- # borrowed this code from GuestToo
- # BUG: STILL USING RELATIVE OR NO PATHS
- APPDIR=`dirname "$0"`
- cd "$APPDIR"
- APPDIR="`pwd`"
-
-
- # USER CONFIGURED DATA
- # now moved to wag-conf
- # so no touching this
- echo "loading user data"
- CARDSOC=`grep 'CARDSOC=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
- WLAN=`grep 'WLAN=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
- MODDATA=`grep 'MODDATA=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
- WIFIIP=`grep 'WIFIIP=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
- CUSTOMSCRIPT=`grep 'CUSTOMSCRIPT' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
- # autodetect WLAN
- if [ "$WLAN" = "" ]; then
- WLAN=`cat /proc/net/wireless | grep -E -o '.+:' | grep -E -o '[^: ][[:alnum:]]+'`
- fi
-
-
- # DIAGNOSTICS
-
- echo "starting diagnostics"
- if [ "$CARDSOC" != "" ]; then
- echo " cardctl test"
- # card powered
- CARDTEST1=`cardctl status $CARDSOC | grep 'no card'`
- if [ "$CARDTEST1" = "" ]; then
- CARDTEST1="pass"
- else
- CARDTEST1="fail"
- fi
-
- # card communicating
- CARDTEST2=`cardctl ident $CARDSOC | grep 'no product'`
- if [ "$CARDTEST2" = "" ]; then
- CARDTEST2="pass"
- else
- CARDTEST2="fail"
- fi
- fi
-
- # check network status
- echo " wide angle iwconfig"
- WLANTEST=`iwconfig | grep "$WLAN"`
- if [ "$WLANTEST" = "" ]; then
- WLANTEST="fail"
- else
- WLANTEST="pass"
- fi
-
- # ping
- # PINGTEST="brkn"
- # if [ "$PINGOPTION" = "yes" ]; then
- # echo " ping test"
- # PINGTEST=`ping -q -c 1 google.com 2>&1 | grep 'failure\|transmitted`
- # fi
- # if [ `echo "$PINGTEST" | grep 'failure'` ]; then
- # PINGTEST="fail"
- # elif [ `echo "$PINGTEST" | grep 'transmitted'` ]; then
- # PINGTEST="pass"
- # fi
-
- # modprobe
- if [ "$MODDATA" = "" ]; then
- MODPTEST="brkn"
- else
- echo " modprobe test"
- MODPTEST=`lsmod | grep "$MODDATA"`
- if [ "$MODPTEST" = "" ]; then
- MODPTEST="fail"
- else
- MODPTEST="pass"
- fi
- fi
-
- # dhcpcd
- echo " dhcpcd test"
- DHCPTEST1=`ps | grep ' dhcpcd ' | grep -v 'grep'`
- if [ "$DHCPTEST1" = "" ]; then
- DHCPTEST1="fail"
- else
- DHCPTEST1="pass"
- fi
- DHCPTEST2=`grep 'GATEWAY' /root/.etc/dhcpc/dhcpcd-${WLAN}.info | grep -o -E '[0-9]+.[0-9]+.[0-9]+.[0-9]+`
- if [ "$DHCPTEST2" = "" ]; then
- DHCPTEST2="brkn"
- else
- DHCPTEST2=`ping -c 1 $DHCPTEST2 2>&1 | grep -o 'unreachable\|0 packets received\|1 packets received'`
- case $DHCPTEST2 in
- "unreachable")
- DHCPTEST2="brkn";;
- "0 packets received")
- DHCPTEST2="fail";;
- "1 packets received")
- DHCPTEST2="pass";;
- esac
- fi
-
- # wifibeta - count
- echo " wifi beta test"
- WIFIBETA=`ls /root/.etc/rc.d/*wireless* | grep -c "wireless"`
-
- # check if root
- echo " root user test"
- ROOTTEST=`ps | grep '/WAG/AppRun' | grep 'sh ' | grep 'root'`
- if [ "$ROOTTEST" = "" ]; then
- ROOTTEST="fail"
- else
- ROOTTEST="pass"
- fi
-
- # availible networks - two tests for better support
- echo " scan test"
- SCANTESTA=`iwlist $WLAN scan 2>&1 | grep ''`
- SCANTESTB=`iwlist $WLAN ap 2>&1 | grep ''`
- SCANTEST1=`echo "$SCANTESTA" | grep '00:00:00:00:00:00\|doesn\|unavailable\|No Peers'`
- if [ "$SCANTEST1" = "" ]; then
- SCANTEST1="pass"
- else
- SCANTEST1=`echo "$SCANTESTA" | grep 'doesn\|unavailable'`
- if [ "$SCANTEST1" = "" ]; then
- SCANTEST1="fail"
- else
- SCANTEST1="brkn"
- fi
- fi
- SCANTEST2=`echo "$SCANTESTB" | grep '00:00:00:00:00:00\|doesn\|unavailable\|No Peers'`
- if [ "$SCANTEST2" = "" ]; then
- SCANTEST2="pass"
- else
- SCANTEST2="fail"
- fi
- SCANTEST1C=`echo "$SCANTESTA" | grep -c 'Cell'`
- SCANTEST2C=`echo "$SCANTESTB" | grep -c 'Quality'`
- SCANTEST1E=`echo "$SCANTESTA" | grep -c 'Encryption key:off'`
-
- # check for ap
- # BUG: THINKS IT IS STILL CONNECTED WHEN SIGNAL DROPS
- # PARTIALY COMPENSATED BY EXTRA TESTS
- echo " ap test"
- APTEST=`iwconfig $WLAN`
- # connection
- APTEST1=`echo "$APTEST" | grep 'Access Point:\|Cell:'`
- if [ "$APTEST1" = "" ]; then
- APTEST1="fail"
- else
- APTEST1="pass"
- fi
- # imaginary ap
- APTEST2=`echo "$APTEST" | grep '00:00:00:00:00:00'`
- if [ "$APTEST2" = "" ]; then
- APTEST2="pass"
- else
- APTEST2="fail"
- fi
- # no signal
- APTEST3=`echo "$APTEST" | grep -E -o 'Link Quality:[1-9]'`
- if [ "$APTEST3" = "" ]; then
- APTEST3="fail"
- else
- APTEST3="pass"
- fi
-
- # ip
- echo " ip test"
- IPTEST=`ifconfig $WLAN | grep -o -E 'inet addr:[0-9]+.[0-9]+.[0-9]+.[0-9]+' | grep -o -E '[0-9]+.[0-9]+.[0-9]+.[0-9]+'`
-
-
- # FORM OUTPUT
- echo "forming output"
- OUTPUT=""
- if [ "$CARDSOC" != "" ]; then
- if [ "$CARDTEST1" = "pass" ]; then
- OUTPUT="${OUTPUT}wireless card active"
- else
- OUTPUT="${OUTPUT}wireless card not active"
- fi
- if [ "$CARDTEST2" = "pass" ]; then
- OUTPUT="${OUTPUT}${NL}wireless card responding"
- else
- OUTPUT="${OUTPUT}${NL}wireless card not responding"
- fi
- else
- OUTPUT="${OUTPUT}not using PCMCIA"
- fi
-
- # BUG: NEED BETTER WAY TO FORCE WIDE TEXT BOX
- # OUTPUT="${OUTPUT}${NL} "
- OUTPUT="${OUTPUT}${NL}"
-
- if [ "$MODPTEST" = "brkn" ]; then
- OUTPUT="${OUTPUT}${NL}no module loaded"
- elif [ "$MODPTEST" = "fail" ]; then
- OUTPUT="${OUTPUT}${NL}module $MODDATA not running"
- else
- OUTPUT="${OUTPUT}${NL}module $MODDATA running"
- fi
-
- if [ "$DHCPTEST1" = "fail" ]; then
- OUTPUT="${OUTPUT}${NL}dhcpcd not running"
- else
- OUTPUT="${OUTPUT}${NL}dhcpcd running"
- fi
-
- if [ "$WIFIBETA" = "0" ]; then
- OUTPUT="${OUTPUT}${NL}wifi-beta not installed"
- elif [ "$WIFIBETA" = "2" ]; then
- OUTPUT="${OUTPUT}${NL}wifi-beta installed"
- else
- OUTPUT="${OUTPUT}${NL}wifi-beta corrupted"
- fi
-
- OUTPUT="${OUTPUT}${NL}"
-
- if [ "$WLAN" = "" ]; then
- OUTPUT="${OUTPUT}${NL}could not find interface in /proc/net/wireless"
- else
-
- if [ "$WLANTEST" = "fail" ]; then
- OUTPUT="${OUTPUT}${NL}$WLAN disabled"
- else
- OUTPUT="${OUTPUT}${NL}$WLAN enabled"
- fi
-
- if [ "$IPTEST" = "" ]; then
- OUTPUT="${OUTPUT}${NL}no IP assigned to $WLAN"
- else
- OUTPUT="${OUTPUT}${NL}wireless ip: $IPTEST"
- fi
- fi
-
- if [ "$APTEST1" = "fail" ]; then
- OUTPUT="${OUTPUT}${NL}ap test failure"
- elif [ "$APTEST2" = "pass" ]; then
- OUTPUT="${OUTPUT}${NL}access point acquired"
- if [ "$APTEST3" = "fail" ]; then
- OUTPUT="${OUTPUT}${NL}no signal from access point"
- fi
- if [ "$DHCPTEST2" = "fail" ]; then
- OUTPUT="${OUTPUT}${NL}can not find wireless gateway"
- fi
- if [ "$DHCPTEST2" = "pass" ]; then
- OUTPUT="${OUTPUT}${NL}wireless gateway found"
- fi
- else
- OUTPUT="${OUTPUT}${NL}not connected to access point"
- fi
-
- # if [ "$PINGOPTION" = "yes" ]; then
- # if [ "$PINGTEST" = "pass" ]; then
- # OUTPUT="${OUTPUT}${NL}internet ping sucessful"
- # else
- # OUTPUT="${OUTPUT}${NL}internet ping failed"
- # fi
- # PINGOPTION=""
- # else
- # OUTPUT="${OUTPUT}${NL}no internet ping test"
- # fi
-
- OUTPUT="${OUTPUT}${NL}"
-
- if [ "$ROOTTEST" = "fail" ]; then
- OUTPUT="${OUTPUT}${NL}scan failure: must run as root"
- fi
-
- if [ "$SCANTEST1" = "pass" ]; then
- OUTPUT="${OUTPUT}${NL}$SCANTEST1C wireless network(s) detected"
- OUTPUT="${OUTPUT}${NL}$SCANTEST1E open network(s) detected"
- elif [ "$SCANTEST2" = "pass" ]; then
- OUTPUT="${OUTPUT}${NL}$SCANTEST2C wireless network(s) detected"
- else
- OUTPUT="${OUTPUT}${NL}no wireless networks detected"
- fi
- if [ "$SCANTEST1" = "brkn" ]; then
- OUTPUT="${OUTPUT}${NL}error when scanning"
- fi
-
- if [ "$APTEST1" = "pass" ] && [ "$APTEST2" = "pass" ]; then
- OUTPUT="${OUTPUT}${NL}"
- OUTPUT="${OUTPUT}${NL}Connected to:"
- OUTPUT="${OUTPUT}${NL}`iwconfig $WLAN | grep 'ESSID\|Mode\|Encryption\|Quality'`"
- fi
-
-
- # GENERATE BUTTONS
- # caps for recommended action
- echo "generating buttons"
-
- MAINBUTTONS="Refresh,"
-
- if [ "$CARDSOC" != "" ]; then
- if [ "$CARDTEST1" = "pass" ] && [ "$CARDTEST2" = "pass" ]; then
- MAINBUTTONS="${MAINBUTTONS}Reseat,"
- else
- MAINBUTTONS="${MAINBUTTONS}RESEAT,"
- fi
-
- MAINBUTTONS="${MAINBUTTONS}Eject,"
- fi
-
- # if brkn then no button
- if [ "$MODPTEST" != "brkn" ]; then
- if [ "$MODPTEST" = "fail" ]; then
- MAINBUTTONS="${MAINBUTTONS}MODPROBE TOGGLE,"
- else
- MAINBUTTONS="${MAINBUTTONS}Modprobe Toggle,"
- fi
- fi
-
- if [ "$DHCPTEST1" = "fail" ] && [ "$DHCPTEST2" != "pass" ] && [ "$APTEST1" = "pass" ] && [ "$APTEST2" = "pass" ]; then
- MAINBUTTONS="${MAINBUTTONS}DHCP TOGGLE,"
- else
- MAINBUTTONS="${MAINBUTTONS}Dhcp Toggle,"
- fi
-
- # MAINBUTTONS="${MAINBUTTONS}Internet Ping,"
-
- if [ "$WIFIBETA" != "0" ]; then
- MAINBUTTONS="${MAINBUTTONS}Run Wifi Beta,"
- fi
-
- if [ "$CUSTOMSCRIPT" != "" ]; then
- MAINBUTTONS="${MAINBUTTONS}$CUSTOMSCRIPT,"
- fi
- MAINBUTTONS="${MAINBUTTONS}Profiles,Scan,Help"
-
- # PROCESS INPUT
- # kill wait dialog
- kill $MSG_PID
- # BUG: DEFAULT SWITCH DOES NOT WORK
- echo "xmessage main dialog"
- FEEDBACK=`xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -buttons "$MAINBUTTONS" -print -center -default Refresh "$OUTPUT"`
-
- # wait dialog
- xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Performing action $FEEDBACK " &
- MSG_PID=$!
-
- # run user action
- echo "running user action"
- case $FEEDBACK in
- "")
- echo " action: null"
- # kill wait dialog
- kill $MSG_PID
- break 1;;
-
- "Refresh"|"REFRESH")
- echo " action: refresh"
- ;;
-
- "Reseat"|"RESEAT")
- echo " action: reseat"
- cardctl eject $CARDSOC
- sleep 1
- cardctl insert $CARDSOC
- sleep 1
- # ifconfig $WLAN $WIFIIP
- ifconfig $WLAN up
- sh autowifi;;
-
- "Eject"|"EJECT")
- echo " action: eject"
- ifconfig $WLAN down
- cardctl eject $CARDSOC;;
-
- "Modprobe Toggle"|"MODPROBE TOGGLE")
- echo " action: modprobe"
- if [ "$MODPTEST" = "fail" ]; then
- modprobe $MODDATA
- sleep 2
- fi
- if [ "$MODPTEST" = "pass" ]; then
- rmmod $MODDATA
- fi;;
-
- "Run Wifi Beta"|"RUN WIFI BETA")
- echo " action: wifi beta"
- sh /root/.etc/rc.d/rc.wireless;;
-
- "Dhcp Toggle"|"DHCP TOGGLE")
- echo " action: dhcd"
- if [ "$DHCPTEST1" = "fail" ]; then
- # dhcpcd -k
- # rm /etc/dhcpc/dhcpcd-${WLAN}.pid
- rm /etc/dhcpc/dhcpcd-${WLAN}.*
- dhcpcd -d $WLAN
- fi
- if [ "$DHCPTEST1" = "pass" ]; then
- dhcpcd -k $WLAN
- killall dhcpcd
- fi
- ;;
-
- "Internet Ping"|"INTERNET PING")
- echo " action: ping"
- rxvt -font 7x14 -bg "$XM_BCOLOR" -fg black -T "$XM_TITLE ping test" -n Ping -e ping -c 10 google.com
- PINGOPTION="yes";;
-
- "$CUSTOMSCRIPT")
- echo " action: manuwifi"
- sh manuwifi;;
-
- "Profiles"|"PROFILES")
- echo " action: profile"
- # profile loop
- while [ 0 ]
- do
- SCANALL=`iwlist $WLAN scan`
- TITLE_NUM=0
- PROFILE_BUTTONS="Refresh"
- PROFILE_OUTPUT=""
- if [ "$DHCPTEST1" = "pass" ]; then
- PROFILE_OUTPUT="${PROFILE_OUTPUT}DHCPCD is running and may cause failure.${NL}"
- fi
- # profile read loop
- echo " buttons and detection"
- while [ 0 ]
- do
- # prep buttons & detect networks
- TITLE_NUM=$(($TITLE_NUM+1))
- PROFILE_DATA=`grep -A 9 "TITLE${TITLE_NUM}" /etc/WAG/profile-conf`
- if [ "$PROFILE_DATA" = "" ]; then
- break 1
- fi
- PROFILE_TITLE=`echo "$PROFILE_DATA" | grep 'TITLE' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_ESSID=`echo "$PROFILE_DATA" | grep 'ESSID' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_BUTTONS="${PROFILE_BUTTONS},$PROFILE_TITLE"
- PROFILE_DETECTED= `echo "$SCANALL" | grep "ESSID:\"${PROFILE_ESSID}\""`
- if [ "$PROFILE_DETECTED" = "" ]; then
- PROFILE_DETECTED="no"
- else
- PROFILE_DETECTED="yes"
- fi
- PROFILE_OUTPUT="${PROFILE_OUTPUT}${PROFILE_TITLE} --- ${PROFILE_DETECTED}${NL}"
- done
- PROFILE_BUTTONS="${PROFILE_BUTTONS},Edit Profiles"
- PROFILE_OUTPUT="${PROFILE_OUTPUT}${NL}Connected to:"
- PROFILE_OUTPUT="${PROFILE_OUTPUT}${NL}`iwconfig $WLAN | grep 'ESSID\|Mode\|Encryption\|Quality'`"
-
- # kill wait dialog
- kill $MSG_PID
-
- # display profile dialog
- FEEDBACK2=`xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -buttons "$PROFILE_BUTTONS" -print -center "$PROFILE_OUTPUT"`
-
- # wait dialog
- xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Loading profile $FEEDBACK2 " &
- MSG_PID=$!
-
- # process input
- echo " processing input"
- if [ "$FEEDBACK2" = "" ]; then
- break 1
- fi
-
- if [ "$FEEDBACK2" = "Edit Profiles" ]; then
- # kill wait dialog
- kill $MSG_PID
- leafpad /etc/WAG/profile-conf
- fi
-
- if [ "$FEEDBACK2" != "Refresh" ] && [ "$FEEDBACK2" != "Edit Profiles" ]; then
- # load data
- PROFILE_DATA=`grep -A 9 -E "TITLE[0-9]+=\"${FEEDBACK2}\"" /etc/WAG/profile-conf`
- PROFILE_TITLE=`echo "$PROFILE_DATA" | grep 'TITLE' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_IP=`echo "$PROFILE_DATA" | grep 'IP=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_GATEWAY=`echo "$PROFILE_DATA" | grep 'GATEWAY=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_ESSID=`echo "$PROFILE_DATA" | grep 'ESSID=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_NWID=`echo "$PROFILE_DATA" | grep 'NWID=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_KEY=`echo "$PROFILE_DATA" | grep 'KEY=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_MODE=`echo "$PROFILE_DATA" | grep 'MODE=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_FREQ=`echo "$PROFILE_DATA" | grep 'FREQ=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_CHANNEL=`echo "$PROFILE_DATA" | grep 'CHANNEL=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- PROFILE_AP_MAC=`echo "$PROFILE_DATA" | grep 'AP_MAC=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
-
-
- ifconfig $WLAN up
- if [ "$PROFILE_IP" != "" ]; then
- ifconfig $WLAN $PROFILE_IP
- fi
- if [ "$PROFILE_ESSID" != "" ]; then
- iwconfig $WLAN essid "$PROFILE_ESSID"
- fi
- if [ "$PROFILE_NWID" != "" ]; then
- iwconfig $WLAN nwid $PROFILE_NWID
- fi
- if [ "$PROFILE_FREQ" != "" ]; then
- iwconfig $WLAN freq $PROFILE_FREQ
- fi
- if [ "$PROFILE_CHANNEL" != "" ]; then
- iwconfig $WLAN channel $PROFILE_CHANNEL
- fi
- if [ "$PROFILE_MODE" != "" ]; then
- iwconfig $WLAN mode $PROFILE_MODE
- fi
- if [ "$PROFILE_AP_MAC" != "" ]; then
- iwconfig $WLAN ap $PROFILE_AP_MAC
- fi
- if [ "$PROFILE_KEY" != "" ]; then
- iwconfig $WLAN key $PROFILE_KEY
- fi
- iwconfig $WLAN commit
-
- sleep 5
-
- if [ "$PROFILE_IP" != "" ] && [ "$PROFILE_GATEWAY" != "" ]; then
- dhcpcd -d -s $PROFILE_IP -G $PROFILE_GATEWAY $WLAN
- fi
- if [ "$PROFILE_IP" != "" ] && [ "$PROFILE_GATEWAY" = "" ]; then
- dhcpcd -d -s $PROFILE_IP $WLAN
- fi
- if [ "$PROFILE_IP" = "" ] && [ "$PROFILE_GATEWAY" != "" ]; then
- dhcpcd -d -G $PROFILE_GATEWAY $WLAN
- fi
- if [ "$PROFILE_IP" = "" ] && [ "$PROFILE_GATEWAY" = "" ]; then
- dhcpcd -d $WLAN
- fi
- fi
- done;;
-
- "Scan"|"SCAN")
- echo " action: scan"
- # scan loop
- while [ 0 ]
- do
- SCANALL=`iwlist $WLAN scan`
- SCANLIST=`echo "$SCANALL" | grep 'Cell\|ESSID\|Mode\|Frequency\|Quality\|Encryption'`
- if [ "$SCANLIST" = "" ]; then
- SCANLIST="No networks detected"
- fi
-
- # give each Cell its own button
- CELLNUM="0"
- CELLBUTTONS="Refresh"
- # cell loop
- while [ 0 ]
- do
- CELLNUM=$(($CELLNUM+1))
- CELLTEST=`echo "$SCANLIST" | grep -o "Cell 0$CELLNUM "`
- if [ "$CELLTEST" != "" ]; then
- CELLBUTTONS="$CELLBUTTONS,Cell 0$CELLNUM"
- fi
- if [ "$CELLTEST" = "" ]; then
- # double digit support
- CELLTEST=`echo "$SCANLIST" | grep -o "Cell $CELLNUM "`
- if [ "$CELLTEST" != "" ]; then
- CELLBUTTONS="$CELLBUTTONS,Cell $CELLNUM"
- fi
- fi
- if [ "$CELLTEST" = "" ]; then
- break 1
- fi
- done
-
- # kill wait dialog
- kill $MSG_PID
-
- # display scan dialog
- FEEDBACK2=`xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -buttons "$CELLBUTTONS" -print -center "$SCANLIST"`
- if [ "$FEEDBACK2" = "" ]; then
- break 1
- fi
-
- if [ "$FEEDBACK2" = "Refresh" ]; then
- # wait dialog
- xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Performing action Scan " &
- MSG_PID=$!
- fi
-
- if [ "$FEEDBACK2" != "Refresh" ]; then
- # wait dialog
- xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Applying scan settings " &
- MSG_PID=$!
- # dig out required info
- # FEEDBACK3=`echo "$FEEDBACK2" | grep -E 'Cell [0-9][0-9]'`
- SCANCELL=`echo "$SCANLIST" | grep -A 5 "$FEEDBACK2"`
- SCANESSID=`echo "$SCANCELL" | grep -E -o 'ESSID:".+"' | grep -E -o '".+"' | grep -E -o '[^"]+'`
- SCANFREQ=`echo "$SCANCELL" | grep -E -o '[0-9]\.[0-9]+G'`
- SCANMAC=`echo "$SCANCELL" | grep -E -o '[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}'`
- SCANMODE=`echo "$SCANCELL" | grep -o 'Mode:Master\|Mode:Ad-Hoc'`
- if [ "$SCANMODE" = "Mode:Ad-Hoc" ]; then
- SCANMODE="Ad-Hoc"
- else
- SCANMODE="Managed"
- fi
-
- # apply the scan
- echo " action: affect scan"
- if [ "$SCANESSID" != "" ]; then
- iwconfig $WLAN essid "$SCANESSID"
- fi
- if [ "$SCANFREQ" != "" ]; then
- iwconfig $WLAN freq $SCANFREQ
- fi
- if [ "$SCANMODE" != "" ]; then
- iwconfig $WLAN mode $SCANMODE
- fi
- if [ "$SCANMAC" != "" ]; then
- iwconfig $WLAN ap $SCANMAC
- fi
- iwconfig $WLAN commit
- # ifconfig $WLAN $WIFIIP
- sleep 5
- dhcpcd -d $WLAN
- sh autowifi
- break 1
- fi
- done;;
-
- "Help"|"HELP")
- echo " action: help"
- sh $APPDIR/Help/HelpApp;;
- esac
-
- # kill wait dialog
- kill $MSG_PID
-
- done
-