slitaz-tools annotate tinyutils/wifibox @ rev 421
wifibox: use awk to parse scan result
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Fri Jan 22 00:03:18 2010 +0100 (2010-01-22) |
parents | af65458ca488 |
children | 1b0b998ea775 |
rev | line source |
---|---|
pankso@298 | 1 #!/bin/sh |
pankso@298 | 2 # |
paul@317 | 3 # GTKdialog interface to manage wireless connections in a simple way. |
pankso@298 | 4 # Use tabs to indent, split commands from the GUI and use functions. |
paul@317 | 5 # Favorite networks are also supported |
pankso@298 | 6 # |
pankso@421 | 7 # (c) 2010 SliTaz GNU/Linux - GNU gpl v3 |
pankso@298 | 8 # |
pankso@421 | 9 VERSION=20100118 |
pankso@298 | 10 |
paul@317 | 11 # Export script path and others if needed so we can use them in 'quote'. |
pankso@298 | 12 export BIN=$0 |
pankso@298 | 13 export FAVORITES_WIFI=/etc/wireless |
pankso@298 | 14 . /etc/network.conf |
pankso@298 | 15 |
pankso@298 | 16 # Wifibox is only for root. |
pankso@298 | 17 if test $(id -u) != 0 ; then |
pankso@298 | 18 exec subox wifibox |
pankso@298 | 19 exit 0 |
pankso@298 | 20 fi |
pankso@298 | 21 |
pankso@298 | 22 # Sanity check |
pankso@298 | 23 [ -x /usr/sbin/iwconfig ] || tazpkg get-install wireless_tools |
pankso@298 | 24 [ -d $FAVORITES_WIFI ] || mkdir -p $FAVORITES_WIFI |
pankso@298 | 25 rm -f $FAVORITES_WIFI/any.conf |
pankso@298 | 26 |
paul@317 | 27 # Catch ESSIDs and format output for GTK tree. We get the list of |
paul@317 | 28 # networks by Cell and without spaces. |
pankso@298 | 29 detect_wifi_networks() |
pankso@298 | 30 { |
pankso@298 | 31 desktopbox notify "Scanning Wireless interface: $WIFI_INTERFACE" & |
pankso@298 | 32 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then |
pankso@298 | 33 ifconfig $WIFI_INTERFACE up |
pankso@298 | 34 for i in `iwlist $WIFI_INTERFACE scan | sed s/"Cell "/Cell-/ | grep "Cell-" | awk '{print $1}'` |
pankso@298 | 35 do |
pankso@421 | 36 SCAN=`iwlist $WIFI_INTERFACE scan last | \ |
pankso@421 | 37 awk '/(Cell|ESS|Qual|Encry|IE: WPA)/ {print}' | \ |
pankso@421 | 38 sed s/"Cell "/Cell-/ | grep -A 5 "$i"` |
pankso@298 | 39 ESSID=`echo $SCAN | cut -d '"' -f 2` |
pankso@298 | 40 if echo "$SCAN" | grep -q Quality; then |
pankso@298 | 41 QUALITY=`echo $SCAN | sed 's/.*Quality=\([^ ]*\).*/\1/' | sed 's/.*Quality:\([^ ]*\).*/\1/'` |
pankso@298 | 42 else |
pankso@298 | 43 QUALITY="-" |
pankso@298 | 44 fi |
pankso@298 | 45 ENCRYPTION=`echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/'` |
pankso@298 | 46 # Check encryption type |
pankso@298 | 47 if echo "$SCAN" | grep -q WPA; then |
pankso@298 | 48 ENCRYPTION="${ENCRYPTION} (WPA)" |
pankso@298 | 49 fi |
pankso@298 | 50 # Connected or not connected... |
pankso@298 | 51 if ifconfig | grep -A 1 $WIFI_INTERFACE | \ |
pankso@421 | 52 grep -q inet && iwconfig $WIFI_INTERFACE | \ |
pankso@421 | 53 grep ESSID | grep -q -w "$ESSID"; then |
pankso@298 | 54 STATUS=connected |
pankso@298 | 55 else |
pankso@298 | 56 STATUS="-" |
pankso@298 | 57 fi |
pankso@298 | 58 echo -n "" |
pankso@298 | 59 echo "$ESSID | $QUALITY | $ENCRYPTION | $STATUS" |
pankso@298 | 60 done |
pankso@298 | 61 fi |
pankso@298 | 62 } |
pankso@298 | 63 |
pankso@298 | 64 # cmdline functions |
pankso@298 | 65 |
pascal@314 | 66 # Toggle Software RF Switch on some laptops |
pascal@314 | 67 set_rfswitch() |
pascal@314 | 68 { |
pascal@314 | 69 for i in /proc/driver/acerhk/wirelessled /proc/acpi/asus/wled ; do |
pascal@314 | 70 [ -e $i ] && echo $1 > $i |
pascal@314 | 71 done |
pascal@314 | 72 } |
pascal@314 | 73 |
paul@317 | 74 # Configure /etc/network.conf and restart connection with init script. |
pankso@298 | 75 start_wifi_connection() |
pankso@298 | 76 { |
paul@317 | 77 # Get tmp config created by connect_to_essid() if exists and set |
pankso@298 | 78 # empty value to clean config file. |
pankso@298 | 79 if [ -f /tmp/wifi.conf ]; then |
pankso@298 | 80 . /tmp/wifi.conf |
pankso@298 | 81 WIFI_MODE="" |
pankso@298 | 82 WIFI_IWCONFIG_ARGS="" |
pankso@298 | 83 WIFI_CHANNEL="" |
pankso@298 | 84 fi |
pankso@298 | 85 sed -i "s/`grep ^WIFI= /etc/network.conf`/WIFI=\"yes\"/" \ |
pankso@298 | 86 /etc/network.conf |
pankso@298 | 87 sed -i "s/`grep ^WIFI_INTERFACE= /etc/network.conf`/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" \ |
pankso@298 | 88 /etc/network.conf |
pankso@298 | 89 sed -i "s/`grep ^WIFI_ESSID= /etc/network.conf`/WIFI_ESSID=\"$WIFI_ESSID\"/" \ |
pankso@298 | 90 /etc/network.conf |
pankso@298 | 91 sed -i "s/`grep ^WIFI_KEY= /etc/network.conf`/WIFI_KEY=\"$WIFI_KEY\"/" \ |
pankso@298 | 92 /etc/network.conf |
pankso@298 | 93 sed -i "s/`grep ^WIFI_MODE= /etc/network.conf`/WIFI_MODE=\"$WIFI_MODE\"/" \ |
pankso@298 | 94 /etc/network.conf |
pankso@298 | 95 sed -i "s/`grep ^WIFI_IWCONFIG_ARGS= /etc/network.conf`/WIFI_IWCONFIG_ARGS=\"$WIFI_IWCONFIG_ARGS\"/" \ |
pankso@298 | 96 /etc/network.conf |
pankso@298 | 97 sed -i "s/`grep ^WIFI_KEY_TYPE= /etc/network.conf`/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \ |
pankso@298 | 98 /etc/network.conf |
pankso@298 | 99 sed -i "s/`grep ^WIFI_CHANNEL= /etc/network.conf`/WIFI_CHANNEL=\"$WIFI_CHANNEL\"/" \ |
pankso@298 | 100 /etc/network.conf |
pankso@298 | 101 [ -s /var/run/udhcpc.$WIFI_INTERFACE.pid ] && kill `cat /var/run/udhcpc.$WIFI_INTERFACE.pid` |
pankso@298 | 102 ifconfig $WIFI_INTERFACE down |
pascal@314 | 103 set_rfswitch 1 |
pankso@421 | 104 iwconfig $WIFI_INTERFACE txpower auto |
pankso@298 | 105 /etc/init.d/network.sh restart |
paul@317 | 106 # Remove tmp file (could be used to have wireless profiles) |
pankso@298 | 107 rm -f /tmp/wifi.conf |
pankso@421 | 108 sleep 2 |
pankso@298 | 109 } |
pankso@298 | 110 |
paul@317 | 111 # We must sleep 4 sec to refresh networks list. |
pankso@298 | 112 stop_wifi_connexion() |
pankso@298 | 113 { |
pankso@298 | 114 sed -i s/`grep ^WIFI= /etc/network.conf`/WIFI=\"no\"/ \ |
pankso@298 | 115 /etc/network.conf |
pankso@298 | 116 [ -x /etc/init.d/wpa_supplicant ] && /etc/init.d/wpa_supplicant stop |
pankso@298 | 117 ifconfig $WIFI_INTERFACE down |
pankso@298 | 118 iwconfig $WIFI_INTERFACE txpower off |
pascal@314 | 119 set_rfswitch 0 |
pankso@298 | 120 [ -s /var/run/udhcpc.$WIFI_INTERFACE.pid ] && kill `cat /var/run/udhcpc.$WIFI_INTERFACE.pid` |
pankso@421 | 121 sleep 2 |
pankso@298 | 122 } |
pankso@298 | 123 |
paul@317 | 124 # Favorite wireless networks use only 3 values: essid. key and type of |
pankso@298 | 125 # key |
pankso@421 | 126 favorites_wifi_list() |
pankso@298 | 127 { |
pankso@298 | 128 for i in $FAVORITES_WIFI/*.conf |
pankso@298 | 129 do |
pankso@298 | 130 WIFI_ESSID="" |
pankso@298 | 131 WIFI_KEY="" |
pankso@298 | 132 WIFI_KEY_TYPE="" |
pankso@298 | 133 . "$i" |
pankso@298 | 134 [ -z "$WIFI_ESSID" ] && WIFI_ESSID="Bad config file: $i" |
pankso@298 | 135 [ -z "$WIFI_KEY_TYPE" ] && WIFI_KEY_TYPE="-" |
pankso@298 | 136 if [ -n "$WIFI_KEY" ]; then |
pankso@298 | 137 WIFI_KEY="********" |
pankso@298 | 138 else |
pankso@298 | 139 WIFI_KEY="-" |
pankso@298 | 140 fi |
pankso@298 | 141 echo "$WIFI_ESSID | $WIFI_KEY_TYPE | $WIFI_KEY" |
pankso@298 | 142 done |
pankso@298 | 143 } |
pankso@298 | 144 |
pankso@298 | 145 favorite_wifi_actions() |
pankso@298 | 146 { |
pankso@298 | 147 cp -a $FAVORITES_WIFI/"$FAVORITE".conf /tmp/wifi.conf |
pankso@298 | 148 . /tmp/wifi.conf |
pankso@298 | 149 export CONNECT_FAVORITE=" |
pankso@298 | 150 <window title=\"Connect to: $WIFI_ESSID\" icon-name=\"network-wireless\"> |
pankso@298 | 151 <vbox> |
pankso@298 | 152 |
pankso@298 | 153 <text width-chars=\"54\"> |
pankso@298 | 154 <label> |
pankso@298 | 155 \" |
pankso@298 | 156 ESSID name: $WIFI_ESSID |
pankso@298 | 157 \" |
pankso@298 | 158 </label> |
pankso@298 | 159 </text> |
pankso@298 | 160 |
pankso@298 | 161 <hbox> |
pankso@298 | 162 <button> |
pankso@298 | 163 <label>Connect</label> |
pankso@298 | 164 <input file icon=\"forward\"></input> |
pankso@298 | 165 <action>$0 start_wifi_connection</action> |
pankso@298 | 166 <action type=\"exit\">exit</action> |
pankso@298 | 167 </button> |
pankso@298 | 168 <button> |
pankso@298 | 169 <label>Edit settings</label> |
pankso@298 | 170 <input file icon=\"accessories-text-editor\"></input> |
pankso@298 | 171 <action>leafpad $FAVORITES_WIFI/\"$FAVORITE\".conf</action> |
pankso@298 | 172 <action>rm -f /tmp/wifi.conf</action> |
pankso@298 | 173 <action type=\"exit\">exit</action> |
pankso@298 | 174 </button> |
pankso@298 | 175 <button> |
pankso@298 | 176 <label>Delete</label> |
pankso@298 | 177 <input file icon=\"gtk-delete\"></input> |
pankso@298 | 178 <action>rm -f $FAVORITES_WIFI/\"$FAVORITE\".conf</action> |
pankso@298 | 179 <action type=\"exit\">exit</action> |
pankso@298 | 180 </button> |
pankso@298 | 181 <button cancel></button> |
pankso@298 | 182 </hbox> |
pankso@298 | 183 |
pankso@298 | 184 </vbox> |
pankso@298 | 185 </window>" |
pankso@298 | 186 gtkdialog --center --program=CONNECT_FAVORITE >/dev/null |
pankso@298 | 187 } |
pankso@298 | 188 |
pankso@298 | 189 add_favorite_network_box() |
pankso@298 | 190 { |
pankso@298 | 191 ADD_FAVORITE=' |
pankso@298 | 192 <window title="Add new favorite Wireless" icon-name="network-wireless"> |
pankso@298 | 193 <vbox> |
pankso@298 | 194 <text width-chars="54"> |
pankso@298 | 195 <label> |
pankso@298 | 196 " |
pankso@298 | 197 Please configure your new favorite Wireless network |
pankso@298 | 198 " |
pankso@298 | 199 </label> |
pankso@298 | 200 </text> |
pankso@298 | 201 <hbox> |
pankso@298 | 202 <text use-markup="true"> |
pankso@298 | 203 <label>"<b>ESSID:</b>"</label> |
pankso@298 | 204 </text> |
pankso@298 | 205 <entry> |
pankso@298 | 206 <variable>WIFI_ESSID</variable> |
pankso@298 | 207 </entry> |
pankso@298 | 208 </hbox> |
pankso@298 | 209 <hbox> |
pankso@298 | 210 <text use-markup="true"> |
pankso@298 | 211 <label>"<b>Key: </b>"</label> |
pankso@298 | 212 </text> |
pankso@298 | 213 <entry> |
pankso@298 | 214 <variable>WIFI_KEY</variable> |
pankso@298 | 215 </entry> |
pankso@298 | 216 </hbox> |
pankso@298 | 217 <hbox> |
pankso@298 | 218 <text use-markup="true"> |
pankso@298 | 219 <label>"<b>Key type:</b>"</label> |
pankso@298 | 220 </text> |
pankso@298 | 221 <combobox>' |
pankso@298 | 222 tmp="${ADD_FAVORITE}<item>$WIFI_KEY_TYPE</item>" |
pankso@298 | 223 for i in none WEP WPA any; do |
pankso@298 | 224 tmp=${tmp}"<item>$i</item>" |
pankso@298 | 225 done |
pankso@298 | 226 export ADD_FAVORITE=${tmp}' |
pankso@298 | 227 <variable>WIFI_KEY_TYPE</variable> |
pankso@298 | 228 </combobox> |
pankso@298 | 229 </hbox> |
pankso@298 | 230 <hbox> |
pankso@298 | 231 <button> |
pankso@298 | 232 <label>Add to list</label> |
pankso@298 | 233 <input file icon="forward"></input> |
pankso@298 | 234 <action>echo "# Wireless connection configuration." > $FAVORITES_WIFI/"$WIFI_ESSID".conf</action> |
pankso@298 | 235 <action>echo "#" >> /etc/wireless/"$WIFI_ESSID".conf</action> |
pankso@298 | 236 <action>echo "WIFI_ESSID=\"$WIFI_ESSID\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action> |
pankso@298 | 237 <action>echo "WIFI_KEY=\"$WIFI_KEY\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action> |
pankso@298 | 238 <action>echo "WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action> |
pankso@298 | 239 <action type="exit">exit</action> |
pankso@298 | 240 </button> |
pankso@298 | 241 <button cancel></button> |
pankso@298 | 242 </hbox> |
pankso@298 | 243 </vbox> |
pankso@298 | 244 </window>' |
pankso@298 | 245 gtkdialog --center --program=ADD_FAVORITE #>/dev/null |
pankso@298 | 246 } |
pankso@298 | 247 |
pankso@298 | 248 # GUI functions |
pankso@298 | 249 |
pankso@298 | 250 helpbutton() |
pankso@298 | 251 { |
pankso@298 | 252 local label; |
pankso@298 | 253 label="<label>$3</label>" |
pankso@298 | 254 [ -n "$3" ] || label="" |
pankso@298 | 255 cat << EOT |
pankso@298 | 256 <button> |
pankso@298 | 257 <input file icon="help"></input>$label |
pankso@298 | 258 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry $2 -title "$1 help" -e "$(which $1) --help ; echo -e \\"----\\nENTER to continue...\\" && read close"</action> |
pankso@298 | 259 </button> |
pankso@298 | 260 EOT |
pankso@298 | 261 } |
pankso@298 | 262 |
pankso@298 | 263 manbutton() |
pankso@298 | 264 { |
pankso@298 | 265 cat << EOT |
pankso@298 | 266 <button> |
pankso@298 | 267 <input file icon="browser"></input> |
pankso@298 | 268 <label>man</label> |
pankso@298 | 269 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x24 -title "$2 man (q to quit)" -e ". /etc/profile; man $1 $2"</action> |
pankso@298 | 270 </button> |
pankso@298 | 271 EOT |
pankso@298 | 272 } |
pankso@298 | 273 |
pankso@298 | 274 # Independant dialog to connect on a wireless network. If encryption |
pankso@298 | 275 # is on we ask for the security key. |
pankso@298 | 276 connect_to_essid() |
pankso@298 | 277 { |
pankso@421 | 278 SCAN=`iwlist $WIFI_INTERFACE scan | \ |
pankso@421 | 279 awk '/(Cell|ESS|Qual|Encry|IE: WPA)/ {print}' | \ |
pankso@421 | 280 grep -B 1 -A 1 "$ESSID_LIST"` |
pankso@298 | 281 WIFI_ESSID="$ESSID_LIST" |
pankso@298 | 282 ENCRYPTION=`echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/'` |
pankso@298 | 283 # Create tmp file used by active_wifi_connexion() |
pankso@298 | 284 cat > /tmp/wifi.conf << _EOF_ |
pankso@298 | 285 # Wireless connexion configuration file. |
pankso@298 | 286 WIFI_ESSID="$ESSID_LIST" |
pankso@298 | 287 _EOF_ |
pankso@298 | 288 CONNECT_ESSID=" |
pankso@298 | 289 <window title=\"Connect to: $WIFI_ESSID\" icon-name=\"network-wireless\"> |
pankso@298 | 290 <vbox> |
pankso@298 | 291 <text width-chars=\"54\"> |
pankso@298 | 292 <label> |
pankso@298 | 293 \" |
pankso@298 | 294 Connect $WIFI_INTERFACE to: $WIFI_ESSID |
pankso@298 | 295 \" |
pankso@298 | 296 </label> |
pankso@298 | 297 </text>" |
paul@317 | 298 # We maybe need a key to connect |
pankso@298 | 299 if [ "$ENCRYPTION" = "on" ] && [ "$ESSID_LIST" != "any" ]; then |
pankso@298 | 300 # WPA |
pankso@298 | 301 if echo "$SCAN" | grep -q WPA; then |
pankso@298 | 302 echo 'WIFI_KEY_TYPE="WPA"' >> /tmp/wifi.conf |
pankso@298 | 303 CONNECT_ESSID=${CONNECT_ESSID}' |
pankso@298 | 304 <hbox> |
pankso@298 | 305 <text use-markup="true"> |
pankso@298 | 306 <label>"<b>WPA Key:</b>"</label> |
pankso@298 | 307 </text> |
pankso@298 | 308 <entry> |
pankso@298 | 309 <input>. /etc/network.conf; echo "$WIFI_KEY"</input> |
pankso@298 | 310 <variable>WIFI_KEY</variable> |
pankso@298 | 311 </entry> |
pankso@298 | 312 </hbox>' |
pankso@298 | 313 else |
pankso@298 | 314 # WEP |
pankso@298 | 315 echo 'WIFI_KEY_TYPE="WEP"' >> /tmp/wifi.conf |
pankso@298 | 316 CONNECT_ESSID=${CONNECT_ESSID}' |
pankso@298 | 317 <hbox> |
pankso@298 | 318 <text use-markup="true"> |
pankso@298 | 319 <label>"<b>WEP Key:</b>"</label> |
pankso@298 | 320 </text> |
pankso@298 | 321 <entry> |
pankso@298 | 322 <input>. /etc/network.conf; echo "$WIFI_KEY"</input> |
pankso@298 | 323 <variable>WIFI_KEY</variable> |
pankso@298 | 324 </entry> |
pankso@298 | 325 </hbox>' |
pankso@298 | 326 fi |
pankso@298 | 327 else |
pankso@298 | 328 # No encryption |
pankso@298 | 329 echo 'WIFI_KEY=""' >> /tmp/wifi.conf |
pankso@298 | 330 echo 'WIFI_KEY_TYPE=""' >> /tmp/wifi.conf |
pankso@298 | 331 start_wifi_connection |
pankso@298 | 332 exit 0 |
pankso@298 | 333 fi |
pankso@298 | 334 # Add key to config file so active_wifi_connexion() can use it. |
pankso@298 | 335 # WIFI_KEY is not exported if we quote with --> " |
pankso@298 | 336 export CONNECT_ESSID=${CONNECT_ESSID}' |
pankso@298 | 337 <hbox> |
pankso@298 | 338 <button> |
pankso@298 | 339 <label>Connect</label> |
pankso@298 | 340 <input file icon="forward"></input> |
pankso@298 | 341 <action>echo "WIFI_KEY=\"$WIFI_KEY\"" >> /tmp/wifi.conf</action> |
pankso@298 | 342 <action>$BIN start_wifi_connection</action> |
pankso@298 | 343 <action type="exit">exit</action> |
pankso@298 | 344 </button> |
pankso@298 | 345 <button cancel></button> |
pankso@298 | 346 </hbox> |
pankso@298 | 347 </vbox> |
pankso@298 | 348 </window>' |
pankso@298 | 349 gtkdialog --center --program=CONNECT_ESSID #>/dev/null |
pankso@298 | 350 } |
pankso@298 | 351 |
pankso@298 | 352 # Wifibox start with Networks tab. |
pankso@298 | 353 box() |
pankso@298 | 354 { |
pankso@298 | 355 WIFI_DIALOG=" |
pankso@298 | 356 <window title=\"Wireless manager\" icon-name=\"network-wireless\"> |
pankso@298 | 357 <vbox> |
pankso@298 | 358 |
pankso@298 | 359 <notebook labels=\"Networks|Favorites|Configuration|Drivers\"> |
pankso@298 | 360 |
pankso@298 | 361 <vbox> |
pankso@298 | 362 <tree icon=\"network-wireless\"> |
pankso@421 | 363 <width>520</width><height>160</height> |
pankso@298 | 364 <variable>ESSID_LIST</variable> |
pankso@298 | 365 <label>ESSID|Quality|Encryption|Status</label> |
pankso@298 | 366 <input>$0 detect_wifi_networks</input> |
pankso@298 | 367 <item icon=\"network-wireless\">any | * | off | (auto-connect)</item> |
pankso@298 | 368 <action>$0 connect_to_essid</action> |
pankso@298 | 369 <action>refresh:ESSID_LIST</action> |
pankso@298 | 370 <action>refresh:WIFI_ESSID</action> |
pankso@298 | 371 <action>refresh:WIFI_KEY</action> |
pankso@298 | 372 <action>refresh:WIFI_KEY_TYPE</action> |
pankso@298 | 373 </tree> |
pankso@298 | 374 <hbox> |
pankso@421 | 375 <text width-chars=\"54\"> |
pankso@298 | 376 <label> |
paul@302 | 377 \"Please double click on a network to connect or enter security key\" |
pankso@298 | 378 </label> |
pankso@298 | 379 </text> |
pankso@298 | 380 <button> |
pankso@298 | 381 <label>Refresh list</label> |
pankso@298 | 382 <input file icon=\"reload\"></input> |
pankso@298 | 383 <action>refresh:ESSID_LIST</action> |
pankso@298 | 384 </button> |
pankso@298 | 385 </hbox> |
pankso@298 | 386 </vbox>" |
pankso@298 | 387 |
paul@317 | 388 # Favorite networks |
pankso@298 | 389 WIFI_DIALOG=${WIFI_DIALOG}" |
pankso@298 | 390 <vbox> |
pankso@298 | 391 <tree icon=\"network-wireless\"> |
pankso@298 | 392 <width>500</width><height>160</height> |
pankso@298 | 393 <variable>FAVORITE</variable> |
pankso@298 | 394 <label>ESSID|Key Type|Key status</label> |
pankso@421 | 395 <input>$0 favorites_wifi_list</input> |
pankso@298 | 396 <item icon=\"network-wireless\">any | - | -</item> |
pankso@298 | 397 <action>$0 favorite_wifi_actions</action> |
pankso@298 | 398 <action>refresh:FAVORITE</action> |
pankso@298 | 399 <action>refresh:ESSID_LIST</action> |
pankso@298 | 400 <action>refresh:WIFI_ESSID</action> |
pankso@298 | 401 <action>refresh:WIFI_KEY</action> |
pankso@298 | 402 <action>refresh:WIFI_KEY_TYPE</action> |
pankso@298 | 403 </tree> |
pankso@298 | 404 <hbox> |
pankso@298 | 405 <text width-chars=\"50\"> |
pankso@298 | 406 <label> |
paul@302 | 407 \"Please double click on a network to modify or remove it\" |
pankso@298 | 408 </label> |
pankso@298 | 409 </text> |
pankso@298 | 410 <button> |
pankso@298 | 411 <label>Add Network</label> |
pankso@298 | 412 <input file icon=\"gtk-add\"></input> |
pankso@298 | 413 <action>$0 add_favorite_network_box</action> |
pankso@298 | 414 <action>refresh:FAVORITE</action> |
pankso@298 | 415 </button> |
pankso@298 | 416 </hbox> |
pankso@298 | 417 </vbox>" |
pankso@298 | 418 |
pankso@298 | 419 # Configuration tab |
pankso@298 | 420 WIFI_DIALOG=${WIFI_DIALOG}' |
pankso@298 | 421 <vbox> |
paul@302 | 422 <frame Basic> |
pankso@298 | 423 <hbox> |
pankso@298 | 424 <text use-markup="true"> |
pankso@298 | 425 <label>"<b>Interface:</b>"</label> |
pankso@298 | 426 </text> |
pankso@298 | 427 <entry> |
pankso@298 | 428 <input>. /etc/network.conf; echo "$WIFI_INTERFACE"</input> |
pankso@298 | 429 <variable>WIFI_INTERFACE</variable> |
pankso@298 | 430 </entry> |
pankso@298 | 431 </hbox> |
pankso@298 | 432 <hbox> |
pankso@298 | 433 <text use-markup="true"> |
pankso@421 | 434 <label>"<b>ESSID: </b>"</label> |
pankso@298 | 435 </text> |
pankso@298 | 436 <entry> |
pankso@298 | 437 <input>. /etc/network.conf; echo "$WIFI_ESSID"</input> |
pankso@298 | 438 <variable>WIFI_ESSID</variable> |
pankso@298 | 439 </entry> |
pankso@298 | 440 </hbox> |
pankso@298 | 441 <hbox> |
pankso@298 | 442 <text use-markup="true"> |
pankso@421 | 443 <label>"<b>Key: </b>"</label> |
pankso@298 | 444 </text> |
pankso@298 | 445 <entry> |
pankso@298 | 446 <input>. /etc/network.conf; echo "$WIFI_KEY"</input> |
pankso@298 | 447 <variable>WIFI_KEY</variable> |
pankso@298 | 448 </entry> |
pankso@298 | 449 <combobox>' |
pankso@298 | 450 tmp2="${WIFI_DIALOG}<item>$WIFI_KEY_TYPE</item>" |
pankso@298 | 451 for i in none WEP WPA any; do |
pankso@298 | 452 [ "$i" = "$WIFI_KEY_TYPE" ] || tmp2="$tmp2<item>$i</item>" |
pankso@298 | 453 done |
pankso@298 | 454 tmp3=' <variable>WIFI_KEY_TYPE</variable> |
pankso@298 | 455 </combobox> |
pankso@298 | 456 </hbox> |
pankso@298 | 457 </frame> |
pankso@298 | 458 <frame Advanced> |
pankso@298 | 459 <hbox> |
pankso@298 | 460 <text use-markup="true"> |
pankso@298 | 461 <label>"<b>Channel/Mode:</b>"</label> |
pankso@298 | 462 </text> |
pankso@298 | 463 <entry> |
pankso@298 | 464 <input>. /etc/network.conf; echo "$WIFI_CHANNEL"</input> |
pankso@298 | 465 <variable>WIFI_CHANNEL</variable> |
pankso@298 | 466 </entry> |
pankso@298 | 467 |
pankso@298 | 468 <combobox> |
pankso@298 | 469 <variable>WIFI_MODE</variable>' |
pankso@298 | 470 tmp2="$tmp2$tmp3<item>$WIFI_MODE</item>" |
pankso@298 | 471 for i in managed ad-hoc master repeater secondary monitor; do |
pankso@298 | 472 [ "$i" = "$WIFI_MODE" ] || tmp2="$tmp2<item>$i</item>" |
pankso@298 | 473 done |
pankso@298 | 474 tmp3=' </combobox> |
pankso@298 | 475 </hbox> |
pankso@298 | 476 <hbox> |
pankso@298 | 477 <text use-markup="true"> |
pankso@421 | 478 <label>"<b>Iwconfig args:</b> "</label> |
pankso@298 | 479 </text> |
pankso@298 | 480 <entry> |
pankso@298 | 481 <input>. /etc/network.conf; echo "$WIFI_IWCONFIG_ARGS"</input> |
pankso@298 | 482 <variable>WIFI_IWCONFIG_ARGS</variable> |
pankso@298 | 483 </entry>' |
pankso@298 | 484 WIFI_DIALOG="$tmp$tmp2$tmp3 |
pankso@298 | 485 $(helpbutton iwconfig 80x24) |
pankso@298 | 486 $(manbutton 8 iwconfig) |
pankso@298 | 487 </hbox> |
pankso@298 | 488 </frame>" |
pankso@298 | 489 |
pankso@298 | 490 # Start Button for manual configuration. |
pankso@298 | 491 WIFI_DIALOG=${WIFI_DIALOG}' |
pankso@298 | 492 <hbox> |
pankso@298 | 493 <button> |
pankso@298 | 494 <label>Start connection</label> |
pankso@298 | 495 <input file icon="forward"></input> |
pankso@298 | 496 <action>[ "$WIFI_KEY_TYPE" = "WPA" -a ! -x /usr/bin/wpa_supplicant ] && xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x17 -title "wpa_supplicant install" -e "tazpkg get-install wpa_supplicant ; echo -e \"----\n\nENTER to continue...\" && read close"</action> |
pankso@298 | 497 <action>sed -i s/`grep ^WIFI= /etc/network.conf`/WIFI=\"yes\"/ /etc/network.conf</action> |
pankso@298 | 498 <action>sed -i s/`grep ^WIFI_INTERFACE= /etc/network.conf`/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/ /etc/network.conf</action> |
pankso@298 | 499 <action>sed -i s/`grep ^WIFI_ESSID= /etc/network.conf`/WIFI_ESSID=\"$WIFI_ESSID\"/ /etc/network.conf</action> |
pankso@298 | 500 <action>sed -i s/`grep ^WIFI_KEY= /etc/network.conf`/WIFI_KEY=\"$WIFI_KEY\"/ /etc/network.conf</action> |
pankso@298 | 501 <action>sed -i s/`grep ^WIFI_MODE= /etc/network.conf`/WIFI_MODE=\"$WIFI_MODE\"/ /etc/network.conf</action> |
pankso@298 | 502 <action>sed -i "s/`grep ^WIFI_IWCONFIG_ARGS= /etc/network.conf`/WIFI_IWCONFIG_ARGS=\"$WIFI_IWCONFIG_ARGS\"/" /etc/network.conf</action> |
pankso@298 | 503 <action>sed -i s/`grep ^WIFI_KEY_TYPE= /etc/network.conf`/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/ /etc/network.conf</action> |
pankso@298 | 504 <action>sed -i s/`grep ^WIFI_CHANNEL= /etc/network.conf`/WIFI_CHANNEL=\"$WIFI_CHANNEL\"/ /etc/network.conf</action> |
pankso@298 | 505 <action>[ -s /var/run/udhcpc.$WIFI_INTERFACE.pid ] && kill `cat /var/run/udhcpc.$WIFI_INTERFACE.pid`</action> |
pankso@298 | 506 <action>ifconfig $WIFI_INTERFACE down</action> |
pankso@298 | 507 <action>iwconfig $WIFI_INTERFACE txpower auto</action> |
pankso@298 | 508 <action>/etc/init.d/network.sh restart</action> |
pankso@298 | 509 <action>refresh:ESSID_LIST</action> |
pankso@298 | 510 <action>refresh:WIFI_ESSID</action> |
pankso@298 | 511 <action>refresh:WIFI_KEY</action> |
pankso@298 | 512 <action>refresh:WIFI_KEY_TYPE</action> |
pankso@298 | 513 </button> |
pankso@298 | 514 </hbox> |
pankso@298 | 515 </vbox>' |
pankso@298 | 516 |
pankso@298 | 517 # Kernel Modules, firmware and tazndisbox note + button. |
pankso@298 | 518 WIFI_DIALOG=${WIFI_DIALOG}" |
pankso@298 | 519 <vbox> |
pankso@298 | 520 <hbox> |
pankso@298 | 521 <text width-chars=\"64\"> |
pankso@298 | 522 <label> |
pankso@298 | 523 \" |
paul@302 | 524 Some Wireless Adapters need non-free firmware. Please install the |
paul@302 | 525 firmware before loading the corresponding module. Note: you can use |
paul@302 | 526 Tazhw to automatically detect your PCI, PCMCIA or USB Wireless adapter. |
pankso@298 | 527 \" |
pankso@298 | 528 </label> |
pankso@298 | 529 </text> |
pankso@298 | 530 </hbox> |
pankso@298 | 531 <hbox> |
pankso@298 | 532 <text use-markup=\"true\"> |
pankso@298 | 533 <label>\"<b>Tools:</b>\"</label> |
pankso@298 | 534 </text> |
pankso@298 | 535 <button> |
pankso@298 | 536 <input file icon=\"computer\"></input> |
pankso@298 | 537 <label>Auto detect devices</label> |
pankso@298 | 538 <action>tazhw box</action> |
pankso@298 | 539 <action>refresh:ESSID_LIST</action> |
pankso@298 | 540 </button>" |
pankso@298 | 541 # Display firmware stuff, tazndisbox button if installed and close |
pankso@298 | 542 # tab + notebook |
pankso@298 | 543 if [ -x /usr/bin/tazndisbox ]; then |
pankso@298 | 544 WIFI_DIALOG=${WIFI_DIALOG}" |
pankso@298 | 545 <button> |
pankso@298 | 546 <input file icon=\"system-installer\"></input> |
pankso@298 | 547 <label>Install Windows driver</label> |
pankso@298 | 548 <action>tazndisbox</action> |
pankso@298 | 549 <action>refresh:ESSID_LIST</action> |
pankso@298 | 550 </button>" |
pankso@298 | 551 fi |
pankso@298 | 552 WIFI_DIALOG=${WIFI_DIALOG}" |
pankso@298 | 553 </hbox> |
pankso@298 | 554 <hbox> |
pankso@298 | 555 <text use-markup=\"true\"> |
pankso@298 | 556 <label>\"<b>Module:</b>\"</label> |
pankso@298 | 557 </text> |
pankso@298 | 558 <combobox> |
pankso@298 | 559 <variable>MODULE</variable>" |
pankso@298 | 560 WIFI_DIALOG="${WIFI_DIALOG}$(find /lib/modules/$(uname -r)/kernel/drivers/net/wireless -type f 2> /dev/null | sed 's,/.*/\(.*\).ko.*,<item>\1</item>,')" |
pankso@298 | 561 WIFI_DIALOG=${WIFI_DIALOG}' |
pankso@298 | 562 </combobox> |
pankso@298 | 563 <button> |
pankso@298 | 564 <label>Load</label> |
pankso@298 | 565 <input file icon="forward"></input> |
pankso@298 | 566 <action>modprobe $MODULE</action> |
pankso@298 | 567 </button> |
pankso@298 | 568 <button> |
pankso@298 | 569 <label>Unload</label> |
pankso@298 | 570 <input file icon="undo"></input> |
pankso@298 | 571 <action>modprobe -r $MODULE</action> |
pankso@298 | 572 </button> |
pankso@298 | 573 <button> |
pankso@298 | 574 <label>Lsmod</label> |
pankso@298 | 575 <input file icon="computer"></input> |
pankso@298 | 576 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x25 -title "Modules (q to quit)" -e "lsmod | less"</action> |
pankso@298 | 577 </button> |
pankso@298 | 578 </hbox>' |
pankso@298 | 579 # Firmware stuff. |
pankso@298 | 580 tmp=$(for i in /usr/bin/get*firmware; do |
pankso@298 | 581 [ -x $i ] || continue |
pankso@298 | 582 [ "$i" = "/usr/bin/get-wifi-firmware" ] && continue |
pankso@298 | 583 [ -d /var/lib/tazpkg/installed/${i#/usr/bin/get-} ] && continue |
pankso@298 | 584 echo "<item>${i#/usr/bin/get-}</item>"; done) |
pankso@298 | 585 [ -n "$tmp" ] && tmp=" |
pankso@298 | 586 <hbox> |
pankso@298 | 587 <text use-markup=\"true\"> |
pankso@298 | 588 <label>\"<b>Firmware:</b>\"</label> |
pankso@298 | 589 </text> |
pankso@298 | 590 <combobox><variable>FIRMWARE</variable>$tmp</combobox> |
pankso@298 | 591 <button> |
pankso@298 | 592 <label>Install</label> |
pankso@298 | 593 <input file icon=\"go-jump\"></input> |
pankso@298 | 594 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x25 -title \"Install \$FIRMWARE\" -e \"get-\$FIRMWARE\"</action> |
pankso@298 | 595 <action>refresh:ESSID_LIST</action> |
pankso@298 | 596 </button> |
pankso@298 | 597 <button> |
pankso@298 | 598 <input file icon=\"system-file-manager\"></input> |
pankso@298 | 599 <label>List files</label> |
pankso@298 | 600 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 100x25 -title \"Firmware files (q to quit)\" -e \"find /lib/firmware -exec ls -ld {} \; | less\"</action> |
pankso@298 | 601 <action>refresh:ESSID_LIST</action> |
pankso@298 | 602 </button> |
pankso@298 | 603 </hbox>" |
pankso@298 | 604 |
pankso@298 | 605 # Bottom buttons |
pankso@298 | 606 export WIFI_DIALOG=${WIFI_DIALOG}${tmp}" |
pankso@298 | 607 </vbox> |
pankso@298 | 608 </notebook> |
pankso@298 | 609 <hbox> |
pankso@298 | 610 <button> |
pankso@298 | 611 <label>Stop connection</label> |
pankso@298 | 612 <input file icon=\"stop\"></input> |
pankso@298 | 613 <action>$0 stop_wifi_connexion</action> |
pankso@298 | 614 <action>refresh:ESSID_LIST</action> |
pankso@298 | 615 </button> |
pankso@298 | 616 <button> |
pankso@298 | 617 <label>Exit</label> |
pankso@298 | 618 <input file icon=\"exit\"></input> |
pankso@298 | 619 <action type=\"exit\">Exit</action> |
pankso@298 | 620 </button> |
pankso@298 | 621 </hbox> |
pankso@298 | 622 |
pankso@298 | 623 </vbox> |
pankso@298 | 624 </window>" |
pankso@421 | 625 gtkdialog --center --program=WIFI_DIALOG #>/dev/null 2>&1 |
pankso@298 | 626 } |
pankso@298 | 627 |
pankso@298 | 628 if [ -n "$1" ]; then |
pankso@298 | 629 $1 |
pankso@298 | 630 else |
pankso@298 | 631 box |
pankso@298 | 632 fi |
pankso@298 | 633 |
pankso@298 | 634 exit 0 |