slitaz-boot-scripts view etc/init.d/network.sh @ rev 131

network.sh: WIFI_ESSID can have space in the name
author Christophe Lincoln <pankso@slitaz.org>
date Sun Feb 15 11:55:47 2009 +0100 (2009-02-15)
parents ea125bdc0888
children 6038353267b7
line source
1 #!/bin/sh
2 # /etc/init.d/network.sh - Network initialization boot script.
3 # Config file is: /etc/network.conf
4 #
5 . /etc/init.d/rc.functions
7 if [ -z "$2" ]; then
8 . /etc/network.conf
9 else
10 . $2
11 fi
13 Boot() {
14 # Set hostname.
15 echo -n "Setting hostname... "
16 /bin/hostname -F /etc/hostname
17 status
19 # Configure loopback interface.
20 echo -n "Configuring loopback... "
21 /sbin/ifconfig lo 127.0.0.1 up
22 /sbin/route add 127.0.0.1 lo
23 status
24 }
26 # Stopping everything
27 Stop() {
28 echo "Stopping all interfaces"
29 ifconfig $INTERFACE down
30 ifconfig $WIFI_INTERFACE down
32 echo "Killing all daemons"
33 killall udhcpc
34 killall wpa_supplicant
36 echo "Shutting down wifi card"
37 iwconfig $WIFI_INTERFACE txpower off
39 }
41 Start() {
42 # For wifi. Users just have to enable it throught yes and usually
43 # essid any will work and interface is autodetected.
44 if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
45 if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
46 echo "$WIFI_INTERFACE is not a wifi interface, changing it."
47 WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
48 while read dev; do iwconfig $dev 2>&1 | \
49 grep -iq "essid" && { echo $dev ; break; }; \
50 done)
51 [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
52 fi
53 [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
54 IWCONFIG_ARGS=""
55 [ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
56 [ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
57 wep|WEP) IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY";;
58 wpa|WPA) cat > /tmp/wpa.conf <<EOF
59 ap_scan=1
60 network={
61 ssid="$WIFI_ESSID"
62 scan_ssid=1
63 proto=WPA
64 key_mgmt=WPA-PSK
65 psk="$WIFI_KEY"
66 priority=5
67 }
68 EOF
69 echo "starting wpa_supplicant, for WPA-PSK"
70 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
71 ;;
72 any|ANY) cat > /tmp/wpa.conf <<EOF
73 ap_scan=1
74 network={
75 ssid="$WIFI_ESSID"
76 scan_ssid=1
77 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
78 group=CCMP TKIP WEP104 WEP40
79 pairwise=CCMP TKIP
80 psk="$WIFI_KEY"
81 priority=5
82 }
83 EOF
84 echo "starting wpa_supplicant for any key type"
85 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
86 ;;
87 esac
88 rm -f /tmp/wpa.conf
89 [ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
90 echo -n "configuring $WIFI_INTERFACE..."
91 ifconfig $WIFI_INTERFACE up
92 iwconfig $WIFI_INTERFACE txpower on
93 iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
94 status
95 INTERFACE=$WIFI_INTERFACE
96 fi
98 # For a dynamic IP with DHCP.
99 if [ "$DHCP" = "yes" ] ; then
100 echo "Starting udhcpc client on: $INTERFACE... "
101 /sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
102 fi
104 # For a static IP.
105 if [ "$STATIC" = "yes" ] ; then
106 echo "Configuring static IP on $INTERFACE: $IP... "
107 /sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
108 /sbin/route add default gateway $GATEWAY
109 # Multi-DNS server in $DNS_SERVER.
110 /bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
111 for NS in $DNS_SERVER
112 do
113 echo "nameserver $NS" >> /etc/resolv.conf
114 done
115 fi
116 }
119 # looking for arguments:
120 if [ -z "$1" ]; then
121 Boot
122 Start
123 else
124 case $1 in
125 start)
126 Start
127 ;;
128 stop)
129 Stop
130 ;;
131 restart)
132 Stop
133 Start
134 ;;
135 *)
136 echo ""
137 echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
138 echo ""
139 echo -e " Default configuration file is \033[1m/etc/network.conf\033[0m"
140 echo -e " You can specify another configuration file in second argument:"
141 echo -e " \033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart] file.conf"
142 echo ""
144 esac
145 fi