slitaz-tools annotate oldstuff/wifibox @ rev 686

Move wifibox to old stuff
author Christophe Lincoln <pankso@slitaz.org>
date Wed Feb 29 02:11:49 2012 +0100 (2012-02-29)
parents tinyutils/wifibox@0f5e3af5a51d
children
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
jozee@467 124 auto_connect_to_favorites_atboot()
jozee@467 125 {
jozee@467 126 . $FAVORITES_WIFI/${FAVNET}.conf
jozee@467 127
jozee@467 128 if grep -q "ssid=\"$FAVNET\"" /etc/wpa_supplicant.conf ; then
jozee@467 129 # edit configuration
jozee@467 130 sed -i "/start ${FAVNET}.conf/,/end ${FAVNET}.conf/s/[^_]ssid=.*/ ssid=\"$WIFI_ESSID\"/ " /etc/wpa_supplicant.conf
jozee@467 131 sed -i "/start ${FAVNET}.conf/,/end ${FAVNET}.conf/s/psk=.*/psk=\"$WIFI_KEY\"/ " /etc/wpa_supplicant.conf
jozee@467 132 else
jozee@467 133 # add new configuration
jozee@467 134 echo -e "
jozee@467 135 # start ${FAVNET}.conf configuration
jozee@467 136 network={
jozee@467 137 ssid=\"$WIFI_ESSID\"
jozee@467 138 scan_ssid=1
jozee@467 139 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
jozee@467 140 group=CCMP TKIP WEP104 WEP40
jozee@467 141 pairwise=CCMP TKIP
jozee@467 142 psk=\"$WIFI_KEY\"
jozee@467 143 priority=3
jozee@467 144 }
jozee@467 145 # end ${FAVNET}.conf configuration" >> /etc/wpa_supplicant.conf
jozee@467 146 fi
jozee@467 147
jozee@467 148 }
jozee@467 149
paul@317 150 # Favorite wireless networks use only 3 values: essid. key and type of
pankso@298 151 # key
pankso@421 152 favorites_wifi_list()
pankso@298 153 {
pankso@298 154 for i in $FAVORITES_WIFI/*.conf
pankso@298 155 do
pankso@298 156 WIFI_ESSID=""
pankso@298 157 WIFI_KEY=""
pankso@298 158 WIFI_KEY_TYPE=""
pankso@298 159 . "$i"
pankso@298 160 [ -z "$WIFI_ESSID" ] && WIFI_ESSID="Bad config file: $i"
pankso@298 161 [ -z "$WIFI_KEY_TYPE" ] && WIFI_KEY_TYPE="-"
pankso@298 162 if [ -n "$WIFI_KEY" ]; then
pankso@298 163 WIFI_KEY="********"
pankso@298 164 else
pankso@298 165 WIFI_KEY="-"
pankso@298 166 fi
pankso@298 167 echo "$WIFI_ESSID | $WIFI_KEY_TYPE | $WIFI_KEY"
pankso@298 168 done
pankso@298 169 }
pankso@298 170
pankso@298 171 favorite_wifi_actions()
pankso@298 172 {
pankso@298 173 cp -a $FAVORITES_WIFI/"$FAVORITE".conf /tmp/wifi.conf
pankso@298 174 . /tmp/wifi.conf
pankso@298 175 export CONNECT_FAVORITE="
pankso@298 176 <window title=\"Connect to: $WIFI_ESSID\" icon-name=\"network-wireless\">
pankso@298 177 <vbox>
pankso@298 178
pankso@298 179 <text width-chars=\"54\">
pankso@298 180 <label>
pankso@298 181 \"
pankso@298 182 ESSID name: $WIFI_ESSID
pankso@298 183 \"
pankso@298 184 </label>
pankso@298 185 </text>
pankso@298 186
pankso@298 187 <hbox>
pankso@298 188 <button>
pankso@298 189 <label>Connect</label>
pankso@298 190 <input file icon=\"forward\"></input>
pankso@298 191 <action>$0 start_wifi_connection</action>
pankso@298 192 <action type=\"exit\">exit</action>
pankso@298 193 </button>
pankso@298 194 <button>
pankso@298 195 <label>Edit settings</label>
pankso@298 196 <input file icon=\"accessories-text-editor\"></input>
pankso@298 197 <action>leafpad $FAVORITES_WIFI/\"$FAVORITE\".conf</action>
jozee@467 198 <action>rm -f /tmp/wifi.conf</action>
jozee@467 199 </button>
jozee@467 200 <button>
jozee@467 201 <label>Save Edits</label>
jozee@467 202 <input file icon=\"document-save\"></input>
jozee@467 203 <action>export FAVNET=$WIFI_ESSID; $0 auto_connect_to_favorites_atboot</action>
jozee@467 204 <action type=\"exit\">exit</action>
pankso@298 205 </button>
pankso@298 206 <button>
pankso@298 207 <label>Delete</label>
pankso@298 208 <input file icon=\"gtk-delete\"></input>
pankso@298 209 <action>rm -f $FAVORITES_WIFI/\"$FAVORITE\".conf</action>
jozee@467 210 <action>sed -i \"/start ${FAVORITE}.conf/,/end ${FAVORITE}.conf/d\" /etc/wpa_supplicant.conf</action>
pankso@298 211 <action type=\"exit\">exit</action>
pankso@298 212 </button>
pankso@298 213 <button cancel></button>
pankso@298 214 </hbox>
pankso@298 215
pankso@298 216 </vbox>
pankso@298 217 </window>"
pankso@298 218 gtkdialog --center --program=CONNECT_FAVORITE >/dev/null
pankso@298 219 }
pankso@298 220
pankso@298 221 add_favorite_network_box()
pankso@298 222 {
pankso@298 223 ADD_FAVORITE='
pankso@298 224 <window title="Add new favorite Wireless" icon-name="network-wireless">
pankso@298 225 <vbox>
pankso@298 226 <text width-chars="54">
pankso@298 227 <label>
pankso@298 228 "
pankso@298 229 Please configure your new favorite Wireless network
pankso@298 230 "
pankso@298 231 </label>
pankso@298 232 </text>
pankso@298 233 <hbox>
pankso@298 234 <text use-markup="true">
pankso@298 235 <label>"<b>ESSID:</b>"</label>
pankso@298 236 </text>
pankso@298 237 <entry>
pankso@298 238 <variable>WIFI_ESSID</variable>
pankso@298 239 </entry>
pankso@298 240 </hbox>
pankso@298 241 <hbox>
pankso@298 242 <text use-markup="true">
pankso@298 243 <label>"<b>Key: </b>"</label>
pankso@298 244 </text>
pankso@298 245 <entry>
pankso@298 246 <variable>WIFI_KEY</variable>
pankso@298 247 </entry>
pankso@298 248 </hbox>
pankso@298 249 <hbox>
pankso@298 250 <text use-markup="true">
pankso@298 251 <label>"<b>Key type:</b>"</label>
pankso@298 252 </text>
pankso@298 253 <combobox>'
pankso@298 254 tmp="${ADD_FAVORITE}<item>$WIFI_KEY_TYPE</item>"
pankso@298 255 for i in none WEP WPA any; do
pankso@298 256 tmp=${tmp}"<item>$i</item>"
pankso@298 257 done
pankso@298 258 export ADD_FAVORITE=${tmp}'
pankso@298 259 <variable>WIFI_KEY_TYPE</variable>
pankso@298 260 </combobox>
pankso@298 261 </hbox>
pankso@298 262 <hbox>
pankso@298 263 <button>
pankso@298 264 <label>Add to list</label>
pankso@298 265 <input file icon="forward"></input>
pankso@298 266 <action>echo "# Wireless connection configuration." > $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
pankso@298 267 <action>echo "#" >> /etc/wireless/"$WIFI_ESSID".conf</action>
pankso@298 268 <action>echo "WIFI_ESSID=\"$WIFI_ESSID\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
pankso@298 269 <action>echo "WIFI_KEY=\"$WIFI_KEY\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
pankso@298 270 <action>echo "WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
jozee@467 271 <action>export FAVNET=$WIFI_ESSID; $BIN auto_connect_to_favorites_atboot</action>
pankso@298 272 <action type="exit">exit</action>
pankso@298 273 </button>
pankso@298 274 <button cancel></button>
pankso@298 275 </hbox>
pankso@298 276 </vbox>
pankso@298 277 </window>'
pankso@298 278 gtkdialog --center --program=ADD_FAVORITE #>/dev/null
pankso@298 279 }
pankso@298 280
pankso@298 281 # GUI functions
pankso@298 282
pankso@298 283 helpbutton()
pankso@298 284 {
pankso@298 285 local label;
pankso@298 286 label="<label>$3</label>"
pankso@298 287 [ -n "$3" ] || label=""
pankso@298 288 cat << EOT
pankso@298 289 <button>
pankso@298 290 <input file icon="help"></input>$label
pankso@298 291 <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 292 </button>
pankso@298 293 EOT
pankso@298 294 }
pankso@298 295
pankso@298 296 manbutton()
pankso@298 297 {
pankso@298 298 cat << EOT
pankso@298 299 <button>
pankso@298 300 <input file icon="browser"></input>
pankso@298 301 <label>man</label>
pankso@298 302 <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 303 </button>
pankso@298 304 EOT
pankso@298 305 }
pankso@298 306
paul@549 307 # Independent dialog to connect to a wireless network. If encryption
pankso@298 308 # is on we ask for the security key.
pankso@298 309 connect_to_essid()
pankso@298 310 {
pankso@421 311 SCAN=`iwlist $WIFI_INTERFACE scan | \
pankso@421 312 awk '/(Cell|ESS|Qual|Encry|IE: WPA)/ {print}' | \
pankso@421 313 grep -B 1 -A 1 "$ESSID_LIST"`
pankso@298 314 WIFI_ESSID="$ESSID_LIST"
pankso@298 315 ENCRYPTION=`echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/'`
pankso@298 316 # Create tmp file used by active_wifi_connexion()
pankso@298 317 cat > /tmp/wifi.conf << _EOF_
pankso@298 318 # Wireless connexion configuration file.
pankso@298 319 WIFI_ESSID="$ESSID_LIST"
pankso@298 320 _EOF_
pankso@298 321 CONNECT_ESSID="
pankso@298 322 <window title=\"Connect to: $WIFI_ESSID\" icon-name=\"network-wireless\">
pankso@298 323 <vbox>
pankso@298 324 <text width-chars=\"54\">
pankso@298 325 <label>
pankso@298 326 \"
pankso@298 327 Connect $WIFI_INTERFACE to: $WIFI_ESSID
pankso@298 328 \"
pankso@298 329 </label>
pankso@298 330 </text>"
paul@317 331 # We maybe need a key to connect
pankso@298 332 if [ "$ENCRYPTION" = "on" ] && [ "$ESSID_LIST" != "any" ]; then
pankso@298 333 # WPA
pankso@298 334 if echo "$SCAN" | grep -q WPA; then
pankso@298 335 echo 'WIFI_KEY_TYPE="WPA"' >> /tmp/wifi.conf
pankso@298 336 CONNECT_ESSID=${CONNECT_ESSID}'
pankso@298 337 <hbox>
pankso@298 338 <text use-markup="true">
pankso@298 339 <label>"<b>WPA Key:</b>"</label>
pankso@298 340 </text>
pankso@298 341 <entry>
pankso@298 342 <input>. /etc/network.conf; echo "$WIFI_KEY"</input>
pankso@298 343 <variable>WIFI_KEY</variable>
pankso@298 344 </entry>
pankso@298 345 </hbox>'
pankso@298 346 else
pankso@298 347 # WEP
pankso@298 348 echo 'WIFI_KEY_TYPE="WEP"' >> /tmp/wifi.conf
pankso@298 349 CONNECT_ESSID=${CONNECT_ESSID}'
pankso@298 350 <hbox>
pankso@298 351 <text use-markup="true">
pankso@298 352 <label>"<b>WEP Key:</b>"</label>
pankso@298 353 </text>
pankso@298 354 <entry>
pankso@298 355 <input>. /etc/network.conf; echo "$WIFI_KEY"</input>
pankso@298 356 <variable>WIFI_KEY</variable>
pankso@298 357 </entry>
pankso@298 358 </hbox>'
pankso@298 359 fi
pankso@298 360 else
pankso@298 361 # No encryption
pankso@298 362 echo 'WIFI_KEY=""' >> /tmp/wifi.conf
pankso@298 363 echo 'WIFI_KEY_TYPE=""' >> /tmp/wifi.conf
pankso@298 364 start_wifi_connection
pankso@298 365 exit 0
pankso@298 366 fi
pankso@298 367 # Add key to config file so active_wifi_connexion() can use it.
pankso@298 368 # WIFI_KEY is not exported if we quote with --> "
pankso@298 369 export CONNECT_ESSID=${CONNECT_ESSID}'
pankso@298 370 <hbox>
pankso@298 371 <button>
pankso@298 372 <label>Connect</label>
pankso@298 373 <input file icon="forward"></input>
pankso@298 374 <action>echo "WIFI_KEY=\"$WIFI_KEY\"" >> /tmp/wifi.conf</action>
pankso@298 375 <action>$BIN start_wifi_connection</action>
pankso@298 376 <action type="exit">exit</action>
pankso@298 377 </button>
pankso@298 378 <button cancel></button>
pankso@298 379 </hbox>
pankso@298 380 </vbox>
pankso@298 381 </window>'
pankso@298 382 gtkdialog --center --program=CONNECT_ESSID #>/dev/null
pankso@298 383 }
pankso@298 384
pankso@298 385 # Wifibox start with Networks tab.
pankso@298 386 box()
pankso@298 387 {
pankso@298 388 WIFI_DIALOG="
pankso@298 389 <window title=\"Wireless manager\" icon-name=\"network-wireless\">
pankso@298 390 <vbox>
pankso@298 391
pankso@298 392 <notebook labels=\"Networks|Favorites|Configuration|Drivers\">
pankso@298 393
pankso@298 394 <vbox>
pankso@298 395 <tree icon=\"network-wireless\">
pankso@421 396 <width>520</width><height>160</height>
pankso@298 397 <variable>ESSID_LIST</variable>
pankso@298 398 <label>ESSID|Quality|Encryption|Status</label>
pankso@298 399 <input>$0 detect_wifi_networks</input>
pankso@298 400 <item icon=\"network-wireless\">any | * | off | (auto-connect)</item>
pankso@298 401 <action>$0 connect_to_essid</action>
pankso@298 402 <action>refresh:ESSID_LIST</action>
pankso@298 403 <action>refresh:WIFI_ESSID</action>
pankso@298 404 <action>refresh:WIFI_KEY</action>
pankso@298 405 <action>refresh:WIFI_KEY_TYPE</action>
pankso@298 406 </tree>
pankso@298 407 <hbox>
pankso@421 408 <text width-chars=\"54\">
pankso@298 409 <label>
paul@302 410 \"Please double click on a network to connect or enter security key\"
pankso@298 411 </label>
pankso@298 412 </text>
pankso@298 413 <button>
pankso@298 414 <label>Refresh list</label>
pankso@298 415 <input file icon=\"reload\"></input>
pankso@298 416 <action>refresh:ESSID_LIST</action>
pankso@298 417 </button>
pankso@298 418 </hbox>
pankso@298 419 </vbox>"
pankso@298 420
jozee@467 421
paul@317 422 # Favorite networks
pankso@298 423 WIFI_DIALOG=${WIFI_DIALOG}"
pankso@298 424 <vbox>
jozee@467 425 <tree icon=\"network-wireless\">
pankso@298 426 <width>500</width><height>160</height>
pankso@298 427 <variable>FAVORITE</variable>
pankso@298 428 <label>ESSID|Key Type|Key status</label>
pankso@421 429 <input>$0 favorites_wifi_list</input>
pankso@298 430 <item icon=\"network-wireless\">any | - | -</item>
pankso@298 431 <action>$0 favorite_wifi_actions</action>
pankso@298 432 <action>refresh:FAVORITE</action>
pankso@298 433 <action>refresh:ESSID_LIST</action>
pankso@298 434 <action>refresh:WIFI_ESSID</action>
pankso@298 435 <action>refresh:WIFI_KEY</action>
pankso@298 436 <action>refresh:WIFI_KEY_TYPE</action>
pankso@298 437 </tree>
pankso@298 438 <hbox>
jozee@467 439 <text width-chars=\"65\">
jozee@467 440 <label>
paul@504 441 \"Favorite networks connect automatically when the computer is started \"
jozee@467 442 </label>
jozee@467 443 </text>
jozee@467 444 </hbox>
jozee@467 445 <hbox>
pankso@298 446 <text width-chars=\"50\">
pankso@298 447 <label>
paul@302 448 \"Please double click on a network to modify or remove it\"
pankso@298 449 </label>
pankso@298 450 </text>
pankso@298 451 <button>
pankso@298 452 <label>Add Network</label>
pankso@298 453 <input file icon=\"gtk-add\"></input>
pankso@298 454 <action>$0 add_favorite_network_box</action>
pankso@298 455 <action>refresh:FAVORITE</action>
pankso@298 456 </button>
pankso@298 457 </hbox>
pankso@298 458 </vbox>"
pankso@298 459
pankso@298 460 # Configuration tab
pankso@298 461 WIFI_DIALOG=${WIFI_DIALOG}'
pankso@298 462 <vbox>
paul@302 463 <frame Basic>
pankso@298 464 <hbox>
pankso@298 465 <text use-markup="true">
pankso@298 466 <label>"<b>Interface:</b>"</label>
pankso@298 467 </text>
pankso@298 468 <entry>
pankso@298 469 <input>. /etc/network.conf; echo "$WIFI_INTERFACE"</input>
pankso@298 470 <variable>WIFI_INTERFACE</variable>
pankso@298 471 </entry>
pankso@298 472 </hbox>
pankso@298 473 <hbox>
pankso@298 474 <text use-markup="true">
pankso@421 475 <label>"<b>ESSID: </b>"</label>
pankso@298 476 </text>
pankso@298 477 <entry>
pankso@298 478 <input>. /etc/network.conf; echo "$WIFI_ESSID"</input>
pankso@298 479 <variable>WIFI_ESSID</variable>
pankso@298 480 </entry>
pankso@298 481 </hbox>
pankso@298 482 <hbox>
pankso@298 483 <text use-markup="true">
pankso@421 484 <label>"<b>Key: </b>"</label>
pankso@298 485 </text>
pankso@298 486 <entry>
pankso@298 487 <input>. /etc/network.conf; echo "$WIFI_KEY"</input>
pankso@298 488 <variable>WIFI_KEY</variable>
pankso@298 489 </entry>
pankso@298 490 <combobox>'
pankso@298 491 tmp2="${WIFI_DIALOG}<item>$WIFI_KEY_TYPE</item>"
pankso@298 492 for i in none WEP WPA any; do
pankso@298 493 [ "$i" = "$WIFI_KEY_TYPE" ] || tmp2="$tmp2<item>$i</item>"
pankso@298 494 done
pankso@298 495 tmp3=' <variable>WIFI_KEY_TYPE</variable>
pankso@298 496 </combobox>
pankso@298 497 </hbox>
pankso@298 498 </frame>
pankso@298 499 <frame Advanced>
pankso@298 500 <hbox>
pankso@298 501 <text use-markup="true">
pankso@298 502 <label>"<b>Channel/Mode:</b>"</label>
pankso@298 503 </text>
pankso@298 504 <entry>
pankso@298 505 <input>. /etc/network.conf; echo "$WIFI_CHANNEL"</input>
pankso@298 506 <variable>WIFI_CHANNEL</variable>
pankso@298 507 </entry>
pankso@298 508
pankso@298 509 <combobox>
pankso@298 510 <variable>WIFI_MODE</variable>'
pankso@298 511 tmp2="$tmp2$tmp3<item>$WIFI_MODE</item>"
pankso@298 512 for i in managed ad-hoc master repeater secondary monitor; do
pankso@298 513 [ "$i" = "$WIFI_MODE" ] || tmp2="$tmp2<item>$i</item>"
pankso@298 514 done
pankso@298 515 tmp3=' </combobox>
pankso@298 516 </hbox>
pankso@298 517 <hbox>
pankso@298 518 <text use-markup="true">
pankso@421 519 <label>"<b>Iwconfig args:</b> "</label>
pankso@298 520 </text>
pankso@298 521 <entry>
pankso@298 522 <input>. /etc/network.conf; echo "$WIFI_IWCONFIG_ARGS"</input>
pankso@298 523 <variable>WIFI_IWCONFIG_ARGS</variable>
pankso@298 524 </entry>'
pankso@298 525 WIFI_DIALOG="$tmp$tmp2$tmp3
pankso@298 526 $(helpbutton iwconfig 80x24)
pankso@298 527 $(manbutton 8 iwconfig)
pankso@298 528 </hbox>
pankso@298 529 </frame>"
pankso@298 530
pankso@298 531 # Start Button for manual configuration.
pankso@298 532 WIFI_DIALOG=${WIFI_DIALOG}'
pankso@298 533 <hbox>
jozee@467 534 <button>
jozee@467 535 <label>Save to Favorites</label>
jozee@467 536 <input file icon="document-save"></input>
jozee@467 537 <action>echo "# Wireless connection configuration." > $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
jozee@467 538 <action>echo "#" >> /etc/wireless/"$WIFI_ESSID".conf</action>
jozee@467 539 <action>echo "WIFI_ESSID=\"$WIFI_ESSID\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
jozee@467 540 <action>echo "WIFI_KEY=\"$WIFI_KEY\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
jozee@467 541 <action>echo "WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"" >> $FAVORITES_WIFI/"$WIFI_ESSID".conf</action>
jozee@467 542 <action>export FAVNET=$WIFI_ESSID; $BIN auto_connect_to_favorites_atboot</action>
jozee@467 543 <action>refresh:FAVORITE</action>
jozee@467 544 </button>
pankso@298 545 <button>
pankso@298 546 <label>Start connection</label>
pankso@298 547 <input file icon="forward"></input>
pankso@298 548 <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 549 <action>sed -i s/`grep ^WIFI= /etc/network.conf`/WIFI=\"yes\"/ /etc/network.conf</action>
pankso@298 550 <action>sed -i s/`grep ^WIFI_INTERFACE= /etc/network.conf`/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/ /etc/network.conf</action>
pankso@298 551 <action>sed -i s/`grep ^WIFI_ESSID= /etc/network.conf`/WIFI_ESSID=\"$WIFI_ESSID\"/ /etc/network.conf</action>
pankso@298 552 <action>sed -i s/`grep ^WIFI_KEY= /etc/network.conf`/WIFI_KEY=\"$WIFI_KEY\"/ /etc/network.conf</action>
pankso@298 553 <action>sed -i s/`grep ^WIFI_MODE= /etc/network.conf`/WIFI_MODE=\"$WIFI_MODE\"/ /etc/network.conf</action>
pankso@298 554 <action>sed -i "s/`grep ^WIFI_IWCONFIG_ARGS= /etc/network.conf`/WIFI_IWCONFIG_ARGS=\"$WIFI_IWCONFIG_ARGS\"/" /etc/network.conf</action>
pankso@298 555 <action>sed -i s/`grep ^WIFI_KEY_TYPE= /etc/network.conf`/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/ /etc/network.conf</action>
pankso@298 556 <action>sed -i s/`grep ^WIFI_CHANNEL= /etc/network.conf`/WIFI_CHANNEL=\"$WIFI_CHANNEL\"/ /etc/network.conf</action>
pankso@298 557 <action>[ -s /var/run/udhcpc.$WIFI_INTERFACE.pid ] && kill `cat /var/run/udhcpc.$WIFI_INTERFACE.pid`</action>
pankso@298 558 <action>ifconfig $WIFI_INTERFACE down</action>
pankso@298 559 <action>iwconfig $WIFI_INTERFACE txpower auto</action>
pankso@298 560 <action>/etc/init.d/network.sh restart</action>
pankso@298 561 <action>refresh:ESSID_LIST</action>
pankso@298 562 <action>refresh:WIFI_ESSID</action>
pankso@298 563 <action>refresh:WIFI_KEY</action>
pankso@298 564 <action>refresh:WIFI_KEY_TYPE</action>
pankso@298 565 </button>
pankso@298 566 </hbox>
pankso@298 567 </vbox>'
pankso@298 568
pankso@298 569 # Kernel Modules, firmware and tazndisbox note + button.
pankso@298 570 WIFI_DIALOG=${WIFI_DIALOG}"
pankso@298 571 <vbox>
pankso@298 572 <hbox>
pankso@298 573 <text width-chars=\"64\">
pankso@298 574 <label>
pankso@298 575 \"
paul@302 576 Some Wireless Adapters need non-free firmware. Please install the
paul@549 577 firmware before loading the corresponding module. Note that you can use
paul@302 578 Tazhw to automatically detect your PCI, PCMCIA or USB Wireless adapter.
pankso@298 579 \"
pankso@298 580 </label>
pankso@298 581 </text>
pankso@298 582 </hbox>
pankso@298 583 <hbox>
pankso@298 584 <text use-markup=\"true\">
pankso@298 585 <label>\"<b>Tools:</b>\"</label>
pankso@298 586 </text>
pankso@298 587 <button>
pankso@298 588 <input file icon=\"computer\"></input>
pankso@298 589 <label>Auto detect devices</label>
pankso@298 590 <action>tazhw box</action>
pankso@298 591 <action>refresh:ESSID_LIST</action>
pankso@298 592 </button>"
pankso@298 593 # Display firmware stuff, tazndisbox button if installed and close
pankso@298 594 # tab + notebook
pankso@298 595 if [ -x /usr/bin/tazndisbox ]; then
pankso@298 596 WIFI_DIALOG=${WIFI_DIALOG}"
pankso@298 597 <button>
pankso@298 598 <input file icon=\"system-installer\"></input>
pankso@298 599 <label>Install Windows driver</label>
pankso@298 600 <action>tazndisbox</action>
pankso@298 601 <action>refresh:ESSID_LIST</action>
pankso@298 602 </button>"
pankso@298 603 fi
pankso@298 604 WIFI_DIALOG=${WIFI_DIALOG}"
pankso@298 605 </hbox>
pankso@298 606 <hbox>
pankso@298 607 <text use-markup=\"true\">
pankso@298 608 <label>\"<b>Module:</b>\"</label>
pankso@298 609 </text>
pankso@298 610 <combobox>
pankso@298 611 <variable>MODULE</variable>"
pankso@298 612 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 613 WIFI_DIALOG=${WIFI_DIALOG}'
pankso@298 614 </combobox>
pankso@298 615 <button>
pankso@298 616 <label>Load</label>
pankso@298 617 <input file icon="forward"></input>
pankso@298 618 <action>modprobe $MODULE</action>
pankso@298 619 </button>
pankso@298 620 <button>
pankso@298 621 <label>Unload</label>
pankso@298 622 <input file icon="undo"></input>
pankso@298 623 <action>modprobe -r $MODULE</action>
pankso@298 624 </button>
pankso@298 625 <button>
pankso@298 626 <label>Lsmod</label>
pankso@298 627 <input file icon="computer"></input>
pankso@298 628 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x25 -title "Modules (q to quit)" -e "lsmod | less"</action>
pankso@298 629 </button>
pankso@298 630 </hbox>'
pankso@298 631 # Firmware stuff.
pankso@298 632 tmp=$(for i in /usr/bin/get*firmware; do
pankso@298 633 [ -x $i ] || continue
pankso@298 634 [ "$i" = "/usr/bin/get-wifi-firmware" ] && continue
pankso@298 635 [ -d /var/lib/tazpkg/installed/${i#/usr/bin/get-} ] && continue
pankso@298 636 echo "<item>${i#/usr/bin/get-}</item>"; done)
pankso@298 637 [ -n "$tmp" ] && tmp="
pankso@298 638 <hbox>
pankso@298 639 <text use-markup=\"true\">
pankso@298 640 <label>\"<b>Firmware:</b>\"</label>
pankso@298 641 </text>
pankso@298 642 <combobox><variable>FIRMWARE</variable>$tmp</combobox>
pankso@298 643 <button>
pankso@298 644 <label>Install</label>
pankso@298 645 <input file icon=\"go-jump\"></input>
pankso@298 646 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -geometry 80x25 -title \"Install \$FIRMWARE\" -e \"get-\$FIRMWARE\"</action>
pankso@298 647 <action>refresh:ESSID_LIST</action>
pankso@298 648 </button>
pankso@298 649 <button>
pankso@298 650 <input file icon=\"system-file-manager\"></input>
pankso@298 651 <label>List files</label>
pankso@298 652 <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 653 <action>refresh:ESSID_LIST</action>
pankso@298 654 </button>
pankso@298 655 </hbox>"
pankso@298 656
pankso@298 657 # Bottom buttons
pankso@298 658 export WIFI_DIALOG=${WIFI_DIALOG}${tmp}"
pankso@298 659 </vbox>
pankso@298 660 </notebook>
pankso@298 661 <hbox>
pankso@298 662 <button>
pankso@298 663 <label>Stop connection</label>
pankso@298 664 <input file icon=\"stop\"></input>
pankso@298 665 <action>$0 stop_wifi_connexion</action>
pankso@298 666 <action>refresh:ESSID_LIST</action>
pankso@298 667 </button>
pankso@298 668 <button>
pankso@298 669 <label>Exit</label>
pankso@298 670 <input file icon=\"exit\"></input>
pankso@298 671 <action type=\"exit\">Exit</action>
pankso@298 672 </button>
pankso@298 673 </hbox>
pankso@298 674
pankso@298 675 </vbox>
pankso@298 676 </window>"
pankso@421 677 gtkdialog --center --program=WIFI_DIALOG #>/dev/null 2>&1
pankso@298 678 }
pankso@298 679
pankso@298 680 if [ -n "$1" ]; then
pankso@298 681 $1
pankso@298 682 else
pankso@298 683 box
pankso@298 684 fi
pankso@298 685
pankso@298 686 exit 0