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 / sbin / wag-profiles.sh < prev    next >
Encoding:
Text File  |  2006-04-13  |  10.8 KB  |  330 lines

  1. #================================================================================
  2. showProfilesWindow()
  3. {
  4.     INTERFACE=$1
  5.     refreshProfilesWindowInfo
  6.     setupNewProfile
  7.     EXIT=""
  8.     while [ "${EXIT}" != "19" ] && [ "${EXIT}" != "22" ] && [ "${EXIT}" != "abort" ]
  9.     do
  10.  
  11.         buildProfilesWindow
  12.  
  13.         I=$IFS; IFS=""
  14.         for STATEMENTS in  $(gtkdialog --program Puppy_Network_Setup); do
  15.             eval $STATEMENTS
  16.         done
  17.         IFS=$I
  18.  
  19.         case "$EXIT" in
  20.             "abort" | "19" ) # Back or close window
  21.                 ;; # Do Nothing, It will exit the while loop
  22.             "11" ) # Scan
  23.                 ;; # add code later
  24.             "12" ) # New profile
  25.                 setupNewProfile
  26.                 ;;
  27.             "20" ) # Save
  28.                 buildNewProfileData
  29.                 saveProfiles
  30.                 refreshProfilesWindowInfo
  31.                 setupNewProfile
  32.                 ;;
  33.             "21" ) # Delete
  34.                 NEW_PROFILE_DATA=""
  35.                 saveProfiles
  36.                 refreshProfilesWindowInfo
  37.                 setupNewProfile
  38.                 ;;
  39.             "22" ) # Use This Profile
  40.                 useProfile
  41.                 ;;
  42.             * ) # If it wasn't any other button, it must be a profile button
  43.                 PROFILE_TITLES="`echo "${PROFILE_TITLES}" | grep -v \"#NEW#\"`"
  44.                 loadProfileData "${EXIT}"
  45.                 CURRENT_PROFILE="${EXIT}"
  46.                 ;;
  47.         esac
  48.  
  49.     done
  50.  
  51.     if [ "${EXIT}" -eq "22" ] ; then
  52.         return 0
  53.     else
  54.         return 1
  55.     fi
  56.  
  57. } # end showProfilesWindow
  58.  
  59. #================================================================================
  60. refreshProfilesWindowInfo()
  61. {
  62.         SCANALL=`iwlist ${INTERFACE} scan`
  63.  
  64.         PROFILE_CONF=`cat /etc/WAG/profile-conf`
  65.         PROFILE_TITLES=`echo "${PROFILE_CONF}" | grep -E 'TITLE[0-9]+=' | cut -d= -f2 | tr -d '"'`
  66. } # end refreshProfilesWindowInfo
  67.  
  68. #================================================================================
  69. buildProfilesWindow()
  70. {
  71.     DEFAULT_TITLE=""
  72.     DEFAULT_ESSID=""
  73.     DEFAULT_MODE=""
  74.     DEFAULT_KEY=""
  75.     DEFAULT_NWID=""
  76.     DEFAULT_FREQ=""
  77.     DEFAULT_CHANNEL=""
  78.     DEFAULT_AP_MAC=""
  79.  
  80.     echo $PROFILE_TITLE | grep -qE "^$" ;
  81.     [ $? -eq 1 ] && DEFAULT_TITLE="<default>${PROFILE_TITLE}</default>"
  82.     echo $PROFILE_ESSID | grep -qE "^$" ;
  83.     [ $? -eq 1 ] && DEFAULT_ESSID="<default>${PROFILE_ESSID}</default>"
  84.     echo $PROFILE_MODE | grep -qE "^$" ;
  85.     [ $? -eq 1 ] && DEFAULT_MODE="<default>${PROFILE_MODE}</default>"
  86.     echo $PROFILE_KEY | grep -qE "^$" ;
  87.     [ $? -eq 1 ] && DEFAULT_KEY="<default>${PROFILE_KEY}</default>"
  88.     echo $PROFILE_NWID | grep -qE "^$" ;
  89.     [ $? -eq 1 ] && DEFAULT_NWID="<default>${PROFILE_NWID}</default>"
  90.     echo $PROFILE_FREQ | grep -qE "^$" ;
  91.     [ $? -eq 1 ] && DEFAULT_FREQ="<default>${PROFILE_FREQ}</default>"
  92.     echo $PROFILE_CHANNEL | grep -qE "^$" ;
  93.     [ $? -eq 1 ] && DEFAULT_CHANNEL="<default>${PROFILE_CHANNEL}</default>"
  94.     echo $PROFILE_AP_MAC | grep -qE "^$" ;
  95.     [ $? -eq 1 ] && DEFAULT_AP_MAC="<default>${PROFILE_AP_MAC}</default>"
  96.  
  97.     buildProfilesWindowButtons
  98.  
  99.  
  100.         export Puppy_Network_Setup="
  101.             <vbox>
  102.                 <text><label>\"Create a new wireless profile or select an existing one.
  103. if your driver supports scanning you can try scanning for available
  104. networks. The newly created networks will be saved for future use.
  105. \"</label></text>
  106.                 <hbox>
  107.                     <frame Select Profile>
  108.                         ${PROFILE_BUTTONS}
  109.                     </frame>
  110.                     <frame Edit Wireless Profile Parameters>
  111.                         <hbox>
  112.                             <vbox>
  113.                                 <text><label>Name:</label></text>
  114.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  115.                             </vbox>
  116.                             <entry><variable>PROFILE_TITLE</variable>${DEFAULT_TITLE}</entry>
  117.                         </hbox>
  118.                         <hbox>
  119.                             <vbox>
  120.                                 <text><label>ESSID:</label></text>
  121.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  122.                             </vbox>
  123.                             <entry><variable>PROFILE_ESSID</variable>${DEFAULT_ESSID}</entry>
  124.                         </hbox>
  125.                         <hbox>
  126.                             <vbox>
  127.                                 <text><label>Mode:</label></text>
  128.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  129.                             </vbox>
  130.                             <entry><variable>PROFILE_MODE</variable>${DEFAULT_MODE}</entry>
  131.                         </hbox>
  132.                         <hbox>
  133.                             <vbox>
  134.                                 <text><label>Key:</label></text>
  135.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  136.                             </vbox>
  137.                             <entry><variable>PROFILE_KEY</variable>${DEFAULT_KEY}</entry>
  138.                         </hbox>
  139.                         <hbox>
  140.                             <vbox>
  141.                                 <text><label>Network Id:</label></text>
  142.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  143.                             </vbox>
  144.                             <entry><variable>PROFILE_NWID</variable>${DEFAULT_NWID}</entry>
  145.                         </hbox>
  146.                         <hbox>
  147.                             <vbox>
  148.                                 <text><label>Frequency:</label></text>
  149.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  150.                             </vbox>
  151.                             <entry><variable>PROFILE_FREQ</variable>${DEFAULT_FREQ}</entry>
  152.                         </hbox>
  153.                         <hbox>
  154.                             <vbox>
  155.                                 <text><label>Channel:</label></text>
  156.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  157.                             </vbox>
  158.                             <entry><variable>PROFILE_CHANNEL</variable>${DEFAULT_CHANNEL}</entry>
  159.                         </hbox>
  160.                         <hbox>
  161.                             <vbox>
  162.                                 <text><label>\"Access point
  163. MAC:\"</label></text>
  164.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  165.                             </vbox>
  166.                             <entry><variable>PROFILE_AP_MAC</variable>${DEFAULT_AP_MAC}</entry>
  167.                         </hbox>
  168.                         <hbox>
  169.                             <vbox>
  170.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  171.                                 <button><label>Save</label><action>Exit=20</action></button>
  172.                             </vbox>
  173.                             <vbox>
  174.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  175.                                 <button><label>Delete</label><action>Exit=21</action></button>
  176.                             </vbox>
  177.                             <vbox>
  178.                                 <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  179.                                 <button><label>Use This Profile</label><action>Exit=22</action></button>
  180.                             </vbox>
  181.                         </hbox>
  182.                     </frame>
  183.                 </hbox>
  184.                 <hbox>
  185.                     <vbox>
  186.                         <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  187.                         <button><label>Back</label><action>Exit=19</action></button>
  188.                     </vbox>
  189.                 </hbox>
  190.             </vbox>
  191.             "
  192. #                    <vbox>
  193. #                        <pixmap><input file>/usr/share/pixmaps/net-setup_btnsize.png</input></pixmap>
  194. #                        <button><label>Scan</label><action>Exit=11</action></button>
  195. #                    </vbox>
  196. }
  197.  
  198. #================================================================================
  199. buildProfilesWindowButtons()
  200. {
  201.     PROFILE_BUTTONS="<button><label>New Profile</label><action>Exit=12</action></button>"
  202.  
  203.     for PROFILE in ${PROFILE_TITLES}
  204.     do
  205.     if [ "${PROFILE}" != "#NEW#" ] ; then
  206.             PROFILE_BUTTONS="${PROFILE_BUTTONS}<button><label>${PROFILE}</label></button>"
  207.         fi
  208.   done
  209. } # end buildProfileWindowButtons
  210.  
  211. #================================================================================
  212. setupNewProfile ()
  213. {
  214.     PROFILE_TITLE=""
  215.     PROFILE_ESSID=""
  216.     PROFILE_MODE=""
  217.     PROFILE_KEY=""
  218.     PROFILE_NWID=""
  219.     PROFILE_FREQ=""
  220.     PROFILE_CHANNEL=""
  221.     PROFILE_AP_MAC=""
  222.  
  223.     PROFILE_TITLES="`echo "${PROFILE_TITLES}" | grep -v \"#NEW#\"`"
  224.     PROFILE_TITLES="${PROFILE_TITLES}
  225. #NEW#"
  226.     CURRENT_PROFILE="#NEW#"
  227.  
  228. } # end clearProfileFields
  229.  
  230. #================================================================================
  231. loadProfileData()
  232. {
  233.     PROFILE_TITLE=$1
  234.     PROFILE_DATA=`echo "${PROFILE_CONF}" | grep -A 9 -E "TITLE[0-9]+=\"${PROFILE_TITLE}\""`
  235.     PROFILE_IP=`echo "${PROFILE_DATA}" | grep 'IP=' | cut -d= -f2 | tr -d '"'`
  236.     PROFILE_GATEWAY=`echo "${PROFILE_DATA}" | grep 'GATEWAY=' | cut -d= -f2 | tr -d '"'`
  237.     PROFILE_ESSID=`echo "${PROFILE_DATA}" | grep 'ESSID=' | cut -d= -f2 | tr -d '"'`
  238.     PROFILE_NWID=`echo "${PROFILE_DATA}" | grep 'NWID=' | cut -d= -f2 | tr -d '"'`
  239.     PROFILE_KEY=`echo "${PROFILE_DATA}" | grep 'KEY=' | cut -d= -f2 | tr -d '"'`
  240.     PROFILE_MODE=`echo "${PROFILE_DATA}" | grep 'MODE=' | cut -d= -f2 | tr -d '"'`
  241.     PROFILE_FREQ=`echo "${PROFILE_DATA}" | grep 'FREQ=' | cut -d= -f2 | tr -d '"'`
  242.     PROFILE_CHANNEL=`echo "${PROFILE_DATA}" | grep 'CHANNEL=' | cut -d= -f2 | tr -d '"'`
  243.     PROFILE_AP_MAC=`echo "${PROFILE_DATA}" | grep 'AP_MAC=' | cut -d= -f2 | tr -d '"'`
  244.  
  245.     PROFILE_DETECTED=`echo "$SCANALL" | grep "ESSID:\"${PROFILE_ESSID}\""`
  246.  
  247. } # end loadProfileData
  248.  
  249. #================================================================================
  250. buildNewProfileData ()
  251. {
  252.     NEW_PROFILE_DATA="TITLE1=\"${PROFILE_TITLE}\"
  253.         IP=\"\"
  254.         GATEWAY=\"\"
  255.         ESSID=\"${PROFILE_ESSID}\"
  256.         NWID=\"${PROFILE_NWID}\"
  257.         KEY=\"${PROFILE_KEY}\"
  258.         MODE=\"${PROFILE_MODE}\"
  259.         FREQ=\"${PROFILE_FREQ}\"
  260.         CHANNEL=\"${PROFILE_CHANNEL}\"
  261.         AP_MAC=\"${PROFILE_AP_MAC}\"
  262.         "
  263. }
  264.  
  265. #================================================================================
  266. saveProfiles ()
  267. {
  268.     NEW_PROFILE_CONF="
  269. # This is the config file for WAG's profile management.
  270. # It allows you to store the connection information for access points.
  271. # For now you must set it up by hand.
  272. # Two connections are supplied by default.
  273. # The first is called 'autoconnect'.  It clears all settings
  274. # and forces your card to connect to the best station it can find.
  275. # The second is a template.  Copy it when making a new entry.
  276.  
  277. # WAG uses a combination of context search and line counting to
  278. # find the required information.  Don't misspell a line or delete
  279. # an unneeded line.  This will break the profile.  Settings not
  280. # required should be set to ""
  281. # TITLE must be sequentially numbered.
  282.     "
  283.     TITLE_NUM=0
  284.     for PROFILE in ${PROFILE_TITLES}
  285.     do
  286.     if [ "${PROFILE}" != "${CURRENT_PROFILE}" ] ; then
  287.             loadProfileData ${PROFILE}
  288.     else
  289.             PROFILE_DATA="${NEW_PROFILE_DATA}"
  290.     fi
  291.  
  292.     if [ ! -z "${PROFILE_DATA}" ] ; then
  293.             TITLE_NUM=`expr ${TITLE_NUM} + 1`
  294.  
  295.             PROFILE_TITLE=`echo "${PROFILE_DATA}" | grep -E "TITLE[0-9]+=" | cut -d= -f2 | tr -d '"'`
  296.             SAVE_PROFILE_DATA=`echo "${PROFILE_DATA}" | grep -v -E "TITLE[0-9]+=\"${PROFILE_TITLE}\""`
  297.             NEW_PROFILE_CONF="${NEW_PROFILE_CONF}
  298. TITLE${TITLE_NUM}=\"${PROFILE_TITLE}\"
  299. ${SAVE_PROFILE_DATA}"
  300.         fi
  301.   done
  302.  
  303.     echo "${NEW_PROFILE_CONF}" > /etc/WAG/profile-conf
  304. } # end saveProfiles
  305.  
  306. #================================================================================
  307. useProfile ()
  308. {
  309.     IWCONFIG_PARAMS="${INTERFACE}"
  310.     [ "$PROFILE_ESSID" != "" ] && IWCONFIG_PARAMS="${IWCONFIG_PARAMS} essid \"${PROFILE_ESSID}\""
  311.     [ "$PROFILE_NWID" != "" ] && IWCONFIG_PARAMS="${IWCONFIG_PARAMS} nwid $PROFILE_NWID"
  312.     [ "$PROFILE_FREQ" != "" ] && IWCONFIG_PARAMS="${IWCONFIG_PARAMS} freq $PROFILE_FREQ"
  313.     [ "$PROFILE_CHANNEL" != "" ] && IWCONFIG_PARAMS="${IWCONFIG_PARAMS} channel $PROFILE_CHANNEL"
  314.     [ "$PROFILE_MODE" != "" ] && IWCONFIG_PARAMS="${IWCONFIG_PARAMS} mode $PROFILE_MODE"
  315.     [ "$PROFILE_AP_MAC" != "" ] && IWCONFIG_PARAMS="${IWCONFIG_PARAMS} ap $PROFILE_AP_MAC"
  316.     [ "$PROFILE_KEY" != "" ] && IWCONFIG_PARAMS="${IWCONFIG_PARAMS} key $PROFILE_KEY"
  317.  
  318.     echo -e "
  319. #Configure the wireless interface
  320. echo \"Configuring wireless interface ${INTERFACE}\"
  321. ifconfig ${INTERFACE} up
  322. iwconfig ${IWCONFIG_PARAMS}" > /tmp/wag-profiles_iwconfig.sh
  323.     sh /tmp/wag-profiles_iwconfig.sh
  324.  
  325. } # end loadProfile
  326.  
  327. #================================================================================
  328. #================ END OF SCRIPT BODY =====================
  329. #================================================================================
  330.