home *** CD-ROM | disk | FTP | other *** search
/ PCNET 2006 September - Disc 1 / PCNET_CD_2006_09.iso / linux / puppy-barebones-2.01r2.iso / pup_201.sfs / usr / local / WAG / AppRun < prev    next >
Encoding:
Text File  |  2005-10-31  |  18.7 KB  |  704 lines

  1. #!/bin/sh
  2.  
  3. # Wifi Access Gadget
  4. # ver 0.0.0
  5. #    basic diagnostic listing
  6. # ver 0.1.0
  7. #    interactive command buttons
  8. # ver 0.2.0
  9. #    interactive scanning
  10. #    public release
  11. # ver 0.2.1
  12. #    scan bug fixed
  13. #    partial support of Wifi-Beta
  14. #    intelligent buttons
  15. # ver 0.2.2
  16. #    reports open networks
  17. #    refresh in Scan dialog
  18. #    dotpupped
  19. # ver 0.2.3
  20. #    usability improvements in documentation and installer
  21. # ver 0.2.4
  22. #    autodetect adapter from /proc/net/wireless
  23. #    ping moved to seperate button
  24. #    got rid of silly disk writes
  25. #    added socket testing
  26. # ver 0.2.5
  27. #    essid with spaces
  28. #    external wag-conf
  29. #    no overwrite of user files on reinstall
  30. #    better socket testing
  31. # ver 0.2.6
  32. #    additional scan error handling
  33. #    additional dhcpcd error handling
  34. #    smarter buttons
  35. #    PCMCIA optional
  36. #    rewrote everything (bug hunt/verbose code)
  37. #    new debug script
  38. # ver 0.3.0
  39. #    profiles
  40. #    help interface
  41. #    install to /usr
  42. # ver 0.3.1
  43. #    improved 1.0.5 compatability
  44. #    bug fixes
  45. # ver 0.3.2
  46. #    10+ cells
  47. #    socket-test in main program
  48. #    improved pupget registration
  49. #    improved ifconfig use
  50. #    improved ad-hoc support
  51. #    waiting dialog
  52. #    slightly prettier xmessage
  53. # ver 0.4.0
  54. #     under development
  55. #     new ping dialog
  56. #     profile generator
  57. #     new interface
  58. #     replace xmessage dialogs
  59. #     automatic dhcpcd handling
  60. # Keenerd
  61.  
  62.  
  63. XM_BCOLOR="#dddddd"
  64. XM_TITLE="W.A.G. 0.3.2"
  65. NL="
  66. "
  67.  
  68. #checks wag-conf
  69. SOCTEST=`grep 'CARDSOC=' /etc/WAG/wag-conf`
  70. if [ "$SOCTEST" = "" ]; then
  71.   xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -center "It seems WAG is not configured.  Launching socket-test...."
  72.   sh /usr/local/WAG/socket-test
  73. fi
  74.  
  75. # main loop
  76. while [ 0 ]
  77. do
  78.  
  79. # borrowed waiting dialog from Rarsa
  80. xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Collecting wifi information " & 
  81. MSG_PID=$! 
  82.  
  83. # borrowed this code from GuestToo
  84. # BUG: STILL USING RELATIVE OR NO PATHS
  85.     APPDIR=`dirname "$0"`
  86.     cd "$APPDIR"
  87.     APPDIR="`pwd`"
  88.  
  89.  
  90. # USER CONFIGURED DATA
  91. # now moved to wag-conf
  92. # so no touching this
  93.     echo "loading user data"
  94.     CARDSOC=`grep 'CARDSOC=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
  95.     WLAN=`grep 'WLAN=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
  96.     MODDATA=`grep 'MODDATA=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
  97.     WIFIIP=`grep 'WIFIIP=' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
  98.     CUSTOMSCRIPT=`grep 'CUSTOMSCRIPT' /etc/WAG/wag-conf | grep -E -o '".+"' | grep -E -o '[^"]+'`
  99. # autodetect WLAN
  100.     if [ "$WLAN" = "" ]; then
  101.         WLAN=`cat /proc/net/wireless | grep -E -o '.+:' | grep -E -o '[^: ][[:alnum:]]+'`
  102.     fi
  103.  
  104.  
  105. # DIAGNOSTICS
  106.  
  107.     echo "starting diagnostics"
  108.     if [ "$CARDSOC" != "" ]; then
  109.         echo "    cardctl test"
  110.         # card powered
  111.         CARDTEST1=`cardctl status $CARDSOC | grep 'no card'`
  112.         if [ "$CARDTEST1" = "" ]; then
  113.             CARDTEST1="pass"
  114.         else
  115.             CARDTEST1="fail"
  116.         fi
  117.     
  118.         # card communicating
  119.         CARDTEST2=`cardctl ident $CARDSOC | grep 'no product'`
  120.         if [ "$CARDTEST2" = "" ]; then
  121.             CARDTEST2="pass"
  122.         else
  123.             CARDTEST2="fail"
  124.         fi
  125.     fi
  126.  
  127.     # check network status
  128.     echo "    wide angle iwconfig"
  129.     WLANTEST=`iwconfig | grep "$WLAN"`
  130.     if [ "$WLANTEST" = "" ]; then
  131.         WLANTEST="fail"
  132.     else
  133.         WLANTEST="pass"
  134.     fi
  135.  
  136.     # ping
  137.     # PINGTEST="brkn"
  138.     # if [ "$PINGOPTION" = "yes" ]; then
  139.     #     echo "    ping test"
  140.     #     PINGTEST=`ping -q -c 1 google.com 2>&1 | grep 'failure\|transmitted`
  141.     # fi
  142.     # if [ `echo "$PINGTEST" | grep 'failure'` ]; then
  143.     #     PINGTEST="fail"
  144.     # elif [ `echo "$PINGTEST" | grep 'transmitted'` ]; then
  145.     #     PINGTEST="pass"
  146.     # fi
  147.  
  148.     # modprobe
  149.     if [ "$MODDATA" = "" ]; then
  150.         MODPTEST="brkn"
  151.     else
  152.         echo "    modprobe test"
  153.         MODPTEST=`lsmod | grep "$MODDATA"`
  154.         if [ "$MODPTEST" = "" ]; then
  155.             MODPTEST="fail"
  156.         else
  157.             MODPTEST="pass"
  158.         fi
  159.     fi
  160.  
  161.     # dhcpcd
  162.     echo "    dhcpcd test"
  163.     DHCPTEST1=`ps | grep ' dhcpcd ' | grep -v 'grep'`
  164.     if [ "$DHCPTEST1" = "" ]; then
  165.         DHCPTEST1="fail"
  166.     else
  167.         DHCPTEST1="pass"
  168.     fi
  169.     DHCPTEST2=`grep 'GATEWAY' /root/.etc/dhcpc/dhcpcd-${WLAN}.info | grep -o -E '[0-9]+.[0-9]+.[0-9]+.[0-9]+`
  170.     if [ "$DHCPTEST2" = "" ]; then
  171.         DHCPTEST2="brkn"
  172.     else
  173.         DHCPTEST2=`ping -c 1 $DHCPTEST2 2>&1 | grep -o 'unreachable\|0 packets received\|1 packets received'`
  174.         case $DHCPTEST2 in
  175.             "unreachable")    
  176.                 DHCPTEST2="brkn";;
  177.             "0 packets received")
  178.                 DHCPTEST2="fail";;
  179.             "1 packets received")
  180.                 DHCPTEST2="pass";;
  181.         esac
  182.     fi
  183.  
  184.     # wifibeta - count
  185.     echo "    wifi beta test"
  186.     WIFIBETA=`ls /root/.etc/rc.d/*wireless* | grep -c "wireless"`
  187.  
  188.     # check if root
  189.     echo "    root user test"
  190.     ROOTTEST=`ps | grep '/WAG/AppRun' | grep 'sh ' | grep 'root'`
  191.     if [ "$ROOTTEST" = "" ]; then
  192.         ROOTTEST="fail"
  193.     else
  194.         ROOTTEST="pass"
  195.     fi
  196.  
  197.     # availible networks - two tests for better support
  198.     echo "    scan test"
  199.     SCANTESTA=`iwlist $WLAN scan 2>&1 | grep ''`
  200.     SCANTESTB=`iwlist $WLAN ap 2>&1 | grep ''`
  201.     SCANTEST1=`echo "$SCANTESTA" | grep '00:00:00:00:00:00\|doesn\|unavailable\|No Peers'`
  202.     if [ "$SCANTEST1" = "" ]; then
  203.         SCANTEST1="pass"
  204.     else
  205.         SCANTEST1=`echo "$SCANTESTA" | grep 'doesn\|unavailable'`
  206.         if [ "$SCANTEST1" = "" ]; then
  207.             SCANTEST1="fail"
  208.         else
  209.             SCANTEST1="brkn"
  210.         fi
  211.     fi
  212.     SCANTEST2=`echo "$SCANTESTB" | grep '00:00:00:00:00:00\|doesn\|unavailable\|No Peers'`
  213.     if [ "$SCANTEST2" = "" ]; then
  214.         SCANTEST2="pass"
  215.     else
  216.         SCANTEST2="fail"
  217.     fi
  218.     SCANTEST1C=`echo "$SCANTESTA" | grep -c 'Cell'`
  219.     SCANTEST2C=`echo "$SCANTESTB" | grep -c 'Quality'`
  220.     SCANTEST1E=`echo "$SCANTESTA" | grep -c 'Encryption key:off'`
  221.  
  222.     # check for ap
  223.     # BUG: THINKS IT IS STILL CONNECTED WHEN SIGNAL DROPS
  224.     # PARTIALY COMPENSATED BY EXTRA TESTS
  225.     echo "    ap test"
  226.     APTEST=`iwconfig $WLAN`
  227.     # connection
  228.     APTEST1=`echo "$APTEST" | grep 'Access Point:\|Cell:'`
  229.     if [ "$APTEST1" = "" ]; then
  230.         APTEST1="fail"
  231.     else
  232.         APTEST1="pass"
  233.     fi
  234.     # imaginary ap
  235.     APTEST2=`echo "$APTEST" | grep '00:00:00:00:00:00'`
  236.     if [ "$APTEST2" = "" ]; then
  237.         APTEST2="pass"
  238.     else
  239.         APTEST2="fail"
  240.     fi
  241.     # no signal
  242.     APTEST3=`echo "$APTEST" | grep -E -o 'Link Quality:[1-9]'`
  243.     if [ "$APTEST3" = "" ]; then
  244.         APTEST3="fail"
  245.     else
  246.         APTEST3="pass"
  247.     fi
  248.  
  249.     # ip
  250.     echo "    ip test"
  251.     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]+'`
  252.  
  253.  
  254. # FORM OUTPUT
  255. echo "forming output"
  256.     OUTPUT=""
  257.     if [ "$CARDSOC" != "" ]; then
  258.         if [ "$CARDTEST1" = "pass" ]; then
  259.             OUTPUT="${OUTPUT}wireless card active"
  260.         else
  261.             OUTPUT="${OUTPUT}wireless card not active"
  262.         fi
  263.         if [ "$CARDTEST2" = "pass" ]; then
  264.             OUTPUT="${OUTPUT}${NL}wireless card responding"
  265.         else
  266.             OUTPUT="${OUTPUT}${NL}wireless card not responding"
  267.         fi
  268.     else
  269.         OUTPUT="${OUTPUT}not using PCMCIA"
  270.     fi
  271.  
  272.     # BUG: NEED BETTER WAY TO FORCE WIDE TEXT BOX
  273.     # OUTPUT="${OUTPUT}${NL}                                                           "
  274.     OUTPUT="${OUTPUT}${NL}"
  275.     
  276.     if [ "$MODPTEST" = "brkn" ]; then
  277.         OUTPUT="${OUTPUT}${NL}no module loaded"
  278.     elif [ "$MODPTEST" = "fail" ]; then
  279.         OUTPUT="${OUTPUT}${NL}module $MODDATA not running"
  280.     else
  281.         OUTPUT="${OUTPUT}${NL}module $MODDATA running"
  282.     fi
  283.  
  284.     if [ "$DHCPTEST1" = "fail" ]; then
  285.         OUTPUT="${OUTPUT}${NL}dhcpcd not running"
  286.     else
  287.         OUTPUT="${OUTPUT}${NL}dhcpcd running"
  288.     fi
  289.  
  290.     if [ "$WIFIBETA" = "0" ]; then
  291.         OUTPUT="${OUTPUT}${NL}wifi-beta not installed"
  292.     elif [ "$WIFIBETA" = "2" ]; then
  293.         OUTPUT="${OUTPUT}${NL}wifi-beta installed"
  294.     else
  295.         OUTPUT="${OUTPUT}${NL}wifi-beta corrupted"
  296.     fi
  297.  
  298.     OUTPUT="${OUTPUT}${NL}"
  299.  
  300.     if [ "$WLAN" = "" ]; then
  301.         OUTPUT="${OUTPUT}${NL}could not find interface in /proc/net/wireless"
  302.     else
  303.  
  304.         if [ "$WLANTEST" = "fail" ]; then
  305.             OUTPUT="${OUTPUT}${NL}$WLAN disabled"
  306.         else
  307.             OUTPUT="${OUTPUT}${NL}$WLAN enabled"
  308.         fi
  309.         
  310.         if [ "$IPTEST" = "" ]; then
  311.             OUTPUT="${OUTPUT}${NL}no IP assigned to $WLAN"
  312.         else
  313.             OUTPUT="${OUTPUT}${NL}wireless ip: $IPTEST"
  314.         fi
  315.     fi
  316.  
  317.     if [ "$APTEST1" = "fail" ]; then
  318.         OUTPUT="${OUTPUT}${NL}ap test failure"
  319.     elif [ "$APTEST2" = "pass" ]; then
  320.         OUTPUT="${OUTPUT}${NL}access point acquired"
  321.         if [ "$APTEST3" = "fail" ]; then
  322.             OUTPUT="${OUTPUT}${NL}no signal from access point"
  323.         fi
  324.         if [ "$DHCPTEST2" = "fail" ]; then
  325.             OUTPUT="${OUTPUT}${NL}can not find wireless gateway"
  326.         fi
  327.         if [ "$DHCPTEST2" = "pass" ]; then
  328.             OUTPUT="${OUTPUT}${NL}wireless gateway found"
  329.         fi
  330.     else
  331.         OUTPUT="${OUTPUT}${NL}not connected to access point"
  332.     fi
  333.  
  334.     # if [ "$PINGOPTION" = "yes" ]; then
  335.     #     if [ "$PINGTEST" = "pass" ]; then
  336.     #         OUTPUT="${OUTPUT}${NL}internet ping sucessful"
  337.     #     else
  338.     #         OUTPUT="${OUTPUT}${NL}internet ping failed"
  339.     #     fi
  340.     #     PINGOPTION=""
  341.     # else
  342.     #     OUTPUT="${OUTPUT}${NL}no internet ping test"
  343.     # fi
  344.  
  345.     OUTPUT="${OUTPUT}${NL}"
  346.  
  347.     if [ "$ROOTTEST" = "fail" ]; then
  348.         OUTPUT="${OUTPUT}${NL}scan failure: must run as root"
  349.     fi
  350.  
  351.     if [ "$SCANTEST1" = "pass" ]; then
  352.         OUTPUT="${OUTPUT}${NL}$SCANTEST1C wireless network(s) detected"
  353.         OUTPUT="${OUTPUT}${NL}$SCANTEST1E open network(s) detected"
  354.     elif [ "$SCANTEST2" = "pass" ]; then
  355.         OUTPUT="${OUTPUT}${NL}$SCANTEST2C wireless network(s) detected"
  356.     else
  357.         OUTPUT="${OUTPUT}${NL}no wireless networks detected"
  358.     fi
  359.     if [ "$SCANTEST1" = "brkn" ]; then
  360.         OUTPUT="${OUTPUT}${NL}error when scanning"
  361.     fi
  362.  
  363.     if [ "$APTEST1" = "pass" ] && [ "$APTEST2" = "pass" ]; then
  364.         OUTPUT="${OUTPUT}${NL}"
  365.         OUTPUT="${OUTPUT}${NL}Connected to:"
  366.         OUTPUT="${OUTPUT}${NL}`iwconfig $WLAN | grep 'ESSID\|Mode\|Encryption\|Quality'`"
  367.     fi
  368.  
  369.  
  370. # GENERATE BUTTONS
  371. # caps for recommended action
  372. echo "generating buttons"    
  373.  
  374.     MAINBUTTONS="Refresh,"
  375.  
  376.     if [ "$CARDSOC" != "" ]; then
  377.         if [ "$CARDTEST1" = "pass" ] && [ "$CARDTEST2" = "pass" ]; then
  378.             MAINBUTTONS="${MAINBUTTONS}Reseat,"
  379.         else
  380.             MAINBUTTONS="${MAINBUTTONS}RESEAT,"
  381.         fi
  382.  
  383.         MAINBUTTONS="${MAINBUTTONS}Eject,"
  384.     fi
  385.  
  386.     # if brkn then no button
  387.     if [ "$MODPTEST" != "brkn" ]; then
  388.         if [ "$MODPTEST" = "fail" ]; then
  389.             MAINBUTTONS="${MAINBUTTONS}MODPROBE TOGGLE,"
  390.         else
  391.             MAINBUTTONS="${MAINBUTTONS}Modprobe Toggle,"
  392.         fi
  393.     fi
  394.  
  395.     if [ "$DHCPTEST1" = "fail" ] && [ "$DHCPTEST2" != "pass" ] && [ "$APTEST1" = "pass" ] && [ "$APTEST2" = "pass" ]; then
  396.         MAINBUTTONS="${MAINBUTTONS}DHCP TOGGLE,"
  397.     else
  398.         MAINBUTTONS="${MAINBUTTONS}Dhcp Toggle,"
  399.     fi
  400.  
  401.     # MAINBUTTONS="${MAINBUTTONS}Internet Ping,"
  402.  
  403.     if [ "$WIFIBETA" != "0" ]; then
  404.         MAINBUTTONS="${MAINBUTTONS}Run Wifi Beta,"
  405.     fi
  406.  
  407.     if [ "$CUSTOMSCRIPT" != "" ]; then
  408.         MAINBUTTONS="${MAINBUTTONS}$CUSTOMSCRIPT,"
  409.     fi
  410.     MAINBUTTONS="${MAINBUTTONS}Profiles,Scan,Help"
  411.  
  412. # PROCESS INPUT
  413.     # kill wait dialog 
  414.     kill $MSG_PID
  415.     # BUG: DEFAULT SWITCH DOES NOT WORK
  416.     echo "xmessage main dialog"
  417.     FEEDBACK=`xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -buttons "$MAINBUTTONS" -print -center -default Refresh "$OUTPUT"`
  418.  
  419.     # wait dialog
  420.     xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Performing action $FEEDBACK " & 
  421.     MSG_PID=$!
  422.  
  423.     # run user action
  424.     echo "running user action"
  425.     case $FEEDBACK in
  426.         "")
  427.             echo "    action: null"
  428.             # kill wait dialog 
  429.             kill $MSG_PID
  430.             break 1;;
  431.     
  432.         "Refresh"|"REFRESH")
  433.             echo "    action: refresh"
  434.             ;;
  435.  
  436.         "Reseat"|"RESEAT")
  437.             echo "    action: reseat"
  438.             cardctl eject $CARDSOC
  439.             sleep 1
  440.             cardctl insert $CARDSOC
  441.             sleep 1
  442.             # ifconfig $WLAN $WIFIIP
  443.             ifconfig $WLAN up
  444.             sh autowifi;;
  445.     
  446.         "Eject"|"EJECT")
  447.             echo "    action: eject"
  448.             ifconfig $WLAN down
  449.             cardctl eject $CARDSOC;;
  450.  
  451.         "Modprobe Toggle"|"MODPROBE TOGGLE")
  452.             echo "    action: modprobe"
  453.             if [ "$MODPTEST" = "fail" ]; then
  454.                 modprobe $MODDATA
  455.                 sleep 2
  456.             fi
  457.             if [ "$MODPTEST" = "pass" ]; then
  458.                 rmmod $MODDATA
  459.             fi;;
  460.     
  461.         "Run Wifi Beta"|"RUN WIFI BETA")
  462.             echo "    action: wifi beta"
  463.             sh /root/.etc/rc.d/rc.wireless;;    
  464.     
  465.         "Dhcp Toggle"|"DHCP TOGGLE")
  466.             echo "    action: dhcd"
  467.             if [ "$DHCPTEST1" = "fail" ]; then
  468.                 # dhcpcd -k
  469.                 # rm /etc/dhcpc/dhcpcd-${WLAN}.pid
  470.                 rm /etc/dhcpc/dhcpcd-${WLAN}.*
  471.                 dhcpcd -d $WLAN
  472.             fi
  473.             if [ "$DHCPTEST1" = "pass" ]; then
  474.                 dhcpcd -k $WLAN
  475.                 killall dhcpcd
  476.             fi
  477.             ;;
  478.  
  479.         "Internet Ping"|"INTERNET PING")
  480.             echo "    action: ping"
  481.             rxvt -font 7x14 -bg "$XM_BCOLOR" -fg black -T "$XM_TITLE ping test" -n Ping -e ping -c 10 google.com
  482.             PINGOPTION="yes";;
  483.     
  484.         "$CUSTOMSCRIPT")
  485.             echo "    action: manuwifi"
  486.             sh manuwifi;;
  487.     
  488.         "Profiles"|"PROFILES")
  489.             echo "    action: profile"
  490.             # profile loop
  491.             while [ 0 ]
  492.             do
  493.             SCANALL=`iwlist $WLAN scan`
  494.             TITLE_NUM=0
  495.             PROFILE_BUTTONS="Refresh"
  496.             PROFILE_OUTPUT=""
  497.             if [ "$DHCPTEST1" = "pass" ]; then
  498.                 PROFILE_OUTPUT="${PROFILE_OUTPUT}DHCPCD is running and may cause failure.${NL}"
  499.             fi
  500.             # profile read loop
  501.             echo "        buttons and detection"
  502.             while [ 0 ]
  503.             do
  504.                 # prep buttons & detect networks
  505.                 TITLE_NUM=$(($TITLE_NUM+1))
  506.                 PROFILE_DATA=`grep -A 9 "TITLE${TITLE_NUM}" /etc/WAG/profile-conf`
  507.                 if [ "$PROFILE_DATA" = "" ]; then
  508.                     break 1
  509.                 fi
  510.                 PROFILE_TITLE=`echo "$PROFILE_DATA" | grep 'TITLE' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  511.                 PROFILE_ESSID=`echo "$PROFILE_DATA" | grep 'ESSID' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  512.                 PROFILE_BUTTONS="${PROFILE_BUTTONS},$PROFILE_TITLE"
  513.                 PROFILE_DETECTED= `echo "$SCANALL" | grep "ESSID:\"${PROFILE_ESSID}\""`
  514.                 if [ "$PROFILE_DETECTED" = "" ]; then
  515.                     PROFILE_DETECTED="no"
  516.                 else
  517.                     PROFILE_DETECTED="yes"
  518.                 fi
  519.                 PROFILE_OUTPUT="${PROFILE_OUTPUT}${PROFILE_TITLE} --- ${PROFILE_DETECTED}${NL}"
  520.             done
  521.             PROFILE_BUTTONS="${PROFILE_BUTTONS},Edit Profiles"
  522.             PROFILE_OUTPUT="${PROFILE_OUTPUT}${NL}Connected to:"
  523.             PROFILE_OUTPUT="${PROFILE_OUTPUT}${NL}`iwconfig $WLAN | grep 'ESSID\|Mode\|Encryption\|Quality'`"
  524.  
  525.             # kill wait dialog 
  526.             kill $MSG_PID
  527.  
  528.             # display profile dialog
  529.             FEEDBACK2=`xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -buttons "$PROFILE_BUTTONS" -print -center "$PROFILE_OUTPUT"`
  530.  
  531.             # wait dialog
  532.             xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Loading profile $FEEDBACK2 " & 
  533.             MSG_PID=$!
  534.  
  535.             # process input
  536.             echo "        processing input"
  537.             if [ "$FEEDBACK2" = "" ]; then
  538.                 break 1
  539.             fi
  540.             
  541.             if [ "$FEEDBACK2" = "Edit Profiles" ]; then
  542.                 # kill wait dialog 
  543.                 kill $MSG_PID
  544.                 leafpad /etc/WAG/profile-conf
  545.             fi
  546.             
  547.             if [ "$FEEDBACK2" != "Refresh" ] && [ "$FEEDBACK2" != "Edit Profiles" ]; then
  548.                 # load data
  549.                 PROFILE_DATA=`grep -A 9 -E "TITLE[0-9]+=\"${FEEDBACK2}\"" /etc/WAG/profile-conf`
  550.                 PROFILE_TITLE=`echo "$PROFILE_DATA" | grep 'TITLE' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  551.                 PROFILE_IP=`echo "$PROFILE_DATA" | grep 'IP=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  552.                 PROFILE_GATEWAY=`echo "$PROFILE_DATA" | grep 'GATEWAY=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  553.                 PROFILE_ESSID=`echo "$PROFILE_DATA" | grep 'ESSID=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  554.                 PROFILE_NWID=`echo "$PROFILE_DATA" | grep 'NWID=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  555.                 PROFILE_KEY=`echo "$PROFILE_DATA" | grep 'KEY=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  556.                 PROFILE_MODE=`echo "$PROFILE_DATA" | grep 'MODE=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  557.                 PROFILE_FREQ=`echo "$PROFILE_DATA" | grep 'FREQ=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  558.                 PROFILE_CHANNEL=`echo "$PROFILE_DATA" | grep 'CHANNEL=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  559.                 PROFILE_AP_MAC=`echo "$PROFILE_DATA" | grep 'AP_MAC=' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  560.                 
  561.  
  562.                 ifconfig $WLAN up
  563.                 if [ "$PROFILE_IP" != "" ]; then
  564.                     ifconfig $WLAN $PROFILE_IP
  565.                 fi
  566.                 if [ "$PROFILE_ESSID" != "" ]; then
  567.                     iwconfig $WLAN essid "$PROFILE_ESSID"
  568.                 fi
  569.                 if [ "$PROFILE_NWID" != "" ]; then
  570.                     iwconfig $WLAN nwid $PROFILE_NWID
  571.                 fi
  572.                 if [ "$PROFILE_FREQ" != "" ]; then
  573.                     iwconfig $WLAN freq $PROFILE_FREQ
  574.                 fi
  575.                 if [ "$PROFILE_CHANNEL" != "" ]; then
  576.                     iwconfig $WLAN channel $PROFILE_CHANNEL
  577.                 fi
  578.                 if [ "$PROFILE_MODE" != "" ]; then
  579.                     iwconfig $WLAN mode $PROFILE_MODE
  580.                 fi
  581.                 if [ "$PROFILE_AP_MAC" != "" ]; then
  582.                     iwconfig $WLAN ap $PROFILE_AP_MAC
  583.                 fi
  584.                 if [ "$PROFILE_KEY" != "" ]; then
  585.                     iwconfig $WLAN key $PROFILE_KEY
  586.                 fi
  587.                 iwconfig $WLAN commit
  588.             
  589.                 sleep 5
  590.                 
  591.                 if [ "$PROFILE_IP" != "" ] && [ "$PROFILE_GATEWAY" != "" ]; then
  592.                     dhcpcd -d -s $PROFILE_IP -G $PROFILE_GATEWAY $WLAN
  593.                 fi
  594.                 if [ "$PROFILE_IP" != "" ] && [ "$PROFILE_GATEWAY" = "" ]; then
  595.                     dhcpcd -d -s $PROFILE_IP $WLAN
  596.                 fi
  597.                 if [ "$PROFILE_IP" = "" ] && [ "$PROFILE_GATEWAY" != "" ]; then
  598.                     dhcpcd -d -G $PROFILE_GATEWAY $WLAN
  599.                 fi
  600.                 if [ "$PROFILE_IP" = "" ] && [ "$PROFILE_GATEWAY" = "" ]; then
  601.                     dhcpcd -d $WLAN
  602.                 fi
  603.             fi
  604.             done;;
  605.     
  606.         "Scan"|"SCAN")
  607.             echo "    action: scan"
  608.             # scan loop
  609.             while [ 0 ]
  610.             do
  611.                 SCANALL=`iwlist $WLAN scan`
  612.                 SCANLIST=`echo "$SCANALL" | grep 'Cell\|ESSID\|Mode\|Frequency\|Quality\|Encryption'`
  613.                 if [ "$SCANLIST" = "" ]; then
  614.                     SCANLIST="No networks detected"
  615.                 fi
  616.                 
  617.                 # give each Cell its own button
  618.                 CELLNUM="0"
  619.                 CELLBUTTONS="Refresh"
  620.                 # cell loop
  621.                 while [ 0 ]
  622.                 do
  623.                     CELLNUM=$(($CELLNUM+1))
  624.                     CELLTEST=`echo "$SCANLIST" | grep -o "Cell 0$CELLNUM "`
  625.                     if [ "$CELLTEST" != "" ]; then
  626.                         CELLBUTTONS="$CELLBUTTONS,Cell 0$CELLNUM"
  627.                     fi
  628.                     if [ "$CELLTEST" = "" ]; then
  629.                         # double digit support
  630.                         CELLTEST=`echo "$SCANLIST" | grep -o "Cell $CELLNUM "`
  631.                         if [ "$CELLTEST" != "" ]; then
  632.                             CELLBUTTONS="$CELLBUTTONS,Cell $CELLNUM"
  633.                         fi
  634.                     fi
  635.                     if [ "$CELLTEST" = "" ]; then
  636.                         break 1
  637.                     fi
  638.                 done
  639.                 
  640.                 # kill wait dialog 
  641.                 kill $MSG_PID
  642.  
  643.                 # display scan dialog
  644.                 FEEDBACK2=`xmessage -bg "$XM_BCOLOR" -title "$XM_TITLE" -buttons "$CELLBUTTONS" -print -center "$SCANLIST"`
  645.                 if [ "$FEEDBACK2" = "" ]; then
  646.                     break 1
  647.                 fi
  648.  
  649.                 if [ "$FEEDBACK2" = "Refresh" ]; then
  650.                     # wait dialog
  651.                     xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Performing action Scan " & 
  652.                     MSG_PID=$!
  653.                 fi
  654.  
  655.                 if [ "$FEEDBACK2" != "Refresh" ]; then
  656.                     # wait dialog
  657.                     xmessage -bg "$XM_BCOLOR" -center -name "wait" -title "$XM_TITLE" -buttons "" "Please wait... ${NL}Applying scan settings " & 
  658.                     MSG_PID=$!
  659.                     # dig out required info
  660.                     # FEEDBACK3=`echo "$FEEDBACK2" | grep -E 'Cell [0-9][0-9]'`
  661.                     SCANCELL=`echo "$SCANLIST" | grep -A 5 "$FEEDBACK2"`
  662.                     SCANESSID=`echo "$SCANCELL" | grep -E -o 'ESSID:".+"' | grep -E -o '".+"' | grep -E -o '[^"]+'`
  663.                     SCANFREQ=`echo "$SCANCELL" | grep -E -o '[0-9]\.[0-9]+G'`
  664.                     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}'`
  665.                     SCANMODE=`echo "$SCANCELL" | grep -o 'Mode:Master\|Mode:Ad-Hoc'`
  666.                     if [ "$SCANMODE" = "Mode:Ad-Hoc" ]; then
  667.                         SCANMODE="Ad-Hoc"
  668.                     else
  669.                         SCANMODE="Managed"
  670.                     fi
  671.  
  672.                     # apply the scan
  673.                     echo "    action: affect scan"
  674.                     if [ "$SCANESSID" != "" ]; then
  675.                         iwconfig $WLAN essid "$SCANESSID"
  676.                     fi
  677.                     if [ "$SCANFREQ" != "" ]; then
  678.                         iwconfig $WLAN freq $SCANFREQ
  679.                     fi
  680.                     if [ "$SCANMODE" != "" ]; then
  681.                         iwconfig $WLAN mode $SCANMODE
  682.                     fi 
  683.                     if [ "$SCANMAC" != "" ]; then
  684.                         iwconfig $WLAN ap $SCANMAC
  685.                     fi 
  686.                     iwconfig $WLAN commit
  687.                     # ifconfig $WLAN $WIFIIP
  688.                     sleep 5
  689.                     dhcpcd -d $WLAN
  690.                     sh autowifi
  691.                     break 1
  692.                 fi
  693.             done;;
  694.         
  695.         "Help"|"HELP")
  696.             echo "    action: help"
  697.             sh $APPDIR/Help/HelpApp;;    
  698.     esac
  699.  
  700. # kill wait dialog 
  701. kill $MSG_PID
  702.  
  703. done
  704.