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
|