slitaz-vz diff base-scripts/network.sh @ rev 2

Add stuff for templates
author Eric Joseph-Alexandre <erjo@slitaz.org>
date Tue Nov 01 09:23:49 2011 +0100 (2011-11-01)
parents
children d8fc6f00bb20
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/base-scripts/network.sh	Tue Nov 01 09:23:49 2011 +0100
     1.3 @@ -0,0 +1,226 @@
     1.4 +#!/bin/sh
     1.5 +# /etc/init.d/network.sh - Network initialization boot script.
     1.6 +# Config file is: /etc/network.conf
     1.7 +#
     1.8 +. /etc/init.d/rc.functions
     1.9 +
    1.10 +if [ -z "$2" ]; then
    1.11 +	. /etc/network.conf 
    1.12 +else
    1.13 +	. $2 
    1.14 +fi
    1.15 +
    1.16 +
    1.17 +Boot() {
    1.18 +	# Set hostname.
    1.19 +	echo -n "Setting hostname..."
    1.20 +	/bin/hostname -F /etc/hostname
    1.21 +	status
    1.22 +
    1.23 +	# Configure loopback interface.
    1.24 +	echo -n "Configuring loopback..."
    1.25 +	/sbin/ifconfig lo 127.0.0.1 up
    1.26 +	/sbin/route add 127.0.0.1 lo
    1.27 +	status	
    1.28 +}
    1.29 +
    1.30 +
    1.31 +eth() {
    1.32 +#  Use ethernet
    1.33 +	   	ifconfig $INTERFACE up	
    1.34 +}
    1.35 +
    1.36 +wifi() {
    1.37 +	# For wifi. Users just have to enable it through yes and usually
    1.38 +	# essid any will work and the interface is autodetected.
    1.39 +	if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
    1.40 +	    ifconfig $INTERFACE down
    1.41 +		
    1.42 +		# Confirm if $WIFI_INTERFACE is the wifi interface
    1.43 +		if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
    1.44 +			echo "$WIFI_INTERFACE is not a wifi interface, changing it."
    1.45 +			WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
    1.46 +				while read dev; do iwconfig $dev 2>&1 | \
    1.47 +					grep -iq "essid" && { echo $dev ; break; }; \
    1.48 +				done)
    1.49 +			[ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
    1.50 +		fi
    1.51 +		
    1.52 +		echo -n "Configuring $WIFI_INTERFACE..."
    1.53 +		ifconfig $WIFI_INTERFACE up
    1.54 +		if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then
    1.55 +			iwconfig $WIFI_INTERFACE txpower on
    1.56 +		fi
    1.57 +		status
    1.58 +		
    1.59 +		[ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
    1.60 +		
    1.61 +		
    1.62 +		IWCONFIG_ARGS=""
    1.63 +		[ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
    1.64 +		[ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
    1.65 +		# unencrypted network
    1.66 +		if [ "$WIFI_KEY" == "" -o "$WIFI_KEY_TYPE" == "none" ]; 
    1.67 +then
    1.68 +			iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
    1.69 +		fi
    1.70 +		# encrypted network
    1.71 +		[ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
    1.72 +			wep|WEP) 
    1.73 +			     IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY"
    1.74 +				 iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
    1.75 +# wpa_supplicant can also deal with wep encryption but iwconfig is preferred
    1.76 +# Tip: Use unquoted strings for hexadecimal key in wep_key0
    1.77 +#			cat /etc/wpa_supplicant.conf > /tmp/wpa.conf 
    1.78 +#			cat >> /tmp/wpa.conf <<EOF
    1.79 +#ctrl_interface=/var/run/wpa_supplicant
    1.80 +#ctrl_interface_group=0
    1.81 +#ap_scan=1
    1.82 +#network={
    1.83 +#	ssid="$WIFI_ESSID"
    1.84 +#	scan_ssid=1
    1.85 +#	key_mgmt=NONE
    1.86 +#	wep_key0="$WIFI_KEY"
    1.87 +#	wep_tx_keyidx=0
    1.88 +#	priority=5
    1.89 +#}
    1.90 +#EOF
    1.91 +#				echo "Starting wpa_supplicant for NONE/WEP..."
    1.92 +#				wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 
    1.93 +				    ;;
    1.94 +			wpa|WPA) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf # load pre-configured multiple profiles 
    1.95 +			cat >> /tmp/wpa.conf <<EOF
    1.96 +ctrl_interface=/var/run/wpa_supplicant
    1.97 +ctrl_interface_group=0
    1.98 +ap_scan=1
    1.99 +network={
   1.100 +	ssid="$WIFI_ESSID"
   1.101 +	scan_ssid=1
   1.102 +	proto=WPA RSN
   1.103 +	key_mgmt=WPA-PSK
   1.104 +	psk="$WIFI_KEY"
   1.105 +	priority=5
   1.106 +}
   1.107 +EOF
   1.108 +				echo "Starting wpa_supplicant for WPA-PSK..."
   1.109 +				wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 
   1.110 +				;;
   1.111 +			any|ANY) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf 
   1.112 +			cat >> /tmp/wpa.conf <<EOF
   1.113 +ctrl_interface=/var/run/wpa_supplicant
   1.114 +ctrl_interface_group=0
   1.115 +ap_scan=1
   1.116 +network={
   1.117 +	ssid="$WIFI_ESSID"
   1.118 +	scan_ssid=1
   1.119 +	key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
   1.120 +	group=CCMP TKIP WEP104 WEP40
   1.121 +	pairwise=CCMP TKIP
   1.122 +	psk="$WIFI_KEY"
   1.123 +	priority=5
   1.124 +}
   1.125 +EOF
   1.126 +				echo "Starting wpa_supplicant for any key type..."
   1.127 +				wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 
   1.128 +				;;
   1.129 +		esac
   1.130 +		
   1.131 +		rm -f /tmp/wpa.conf
   1.132 +		
   1.133 +		INTERFACE=$WIFI_INTERFACE	
   1.134 +		 		
   1.135 +	fi
   1.136 +
   1.137 +}
   1.138 +
   1.139 +wpa()
   1.140 +{
   1.141 +	DHCP_SCRIPT="/etc/init.d/wpa_action.sh"
   1.142 +	wpa_cli -a$DHCP_SCRIPT -B 
   1.143 +}
   1.144 +
   1.145 +dhcp() {
   1.146 +
   1.147 +# For a dynamic IP with DHCP. 
   1.148 +	if [ "$DHCP" = "yes" ]  ; then
   1.149 +		echo "Starting udhcpc client on: $INTERFACE..."		
   1.150 +		if [ -d /var/run/wpa_supplicant ]; then # wpa wireless && wpa_ctrl_open interface is up
   1.151 +		   wpa		  
   1.152 +		else  # fallback on udhcpc: wep, eth
   1.153 +		   /sbin/udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
   1.154 +		fi		
   1.155 +	fi
   1.156 +	
   1.157 +}
   1.158 +
   1.159 +static_ip() {
   1.160 +# For a static IP.
   1.161 +	if [ "$STATIC" = "yes" ] ; then
   1.162 +		echo "Configuring static IP on $INTERFACE: $IP..."
   1.163 +		/sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
   1.164 +		/sbin/route add default gateway $GATEWAY
   1.165 +		# wpa_supplicant waits for wpa_cli
   1.166 +		[ -d /var/run/wpa_supplicant ] && wpa_cli -B
   1.167 +		# Multi-DNS server in $DNS_SERVER.
   1.168 +		/bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
   1.169 +		if [ -n "$DNS_SERVER" ], then
   1.170 +			for NS in $DNS_SERVER
   1.171 +			do
   1.172 +				echo "nameserver $NS" >> /etc/resolv.conf
   1.173 +			done
   1.174 +		else
   1.175 +			touch /etc/resolv.conf
   1.176 +		fi
   1.177 +	fi
   1.178 +}
   1.179 +
   1.180 +# Stopping everything
   1.181 +Stop() {
   1.182 +	echo "Stopping all interfaces"
   1.183 +	ifconfig $INTERFACE down
   1.184 +	ifconfig $WIFI_INTERFACE down
   1.185 +
   1.186 +	echo "Killing all daemons"
   1.187 +	killall udhcpc
   1.188 +	killall wpa_supplicant 2>/dev/null
   1.189 +	
   1.190 +	if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then
   1.191 +		echo "Shutting down wifi card"
   1.192 +		iwconfig $WIFI_INTERFACE txpower off
   1.193 +	fi
   1.194 +}
   1.195 +
   1.196 +Start() {
   1.197 +   eth
   1.198 +   wifi
   1.199 +   dhcp 
   1.200 +   static_ip
   1.201 +   # change default lxpanel panel iface
   1.202 +	sed -i "s/iface=.*/iface=$INTERFACE/" /etc/lxpanel/default/panels/panel	
   1.203 +}
   1.204 +
   1.205 +
   1.206 +# looking for arguments:
   1.207 +if [ -z "$1" ]; then
   1.208 +	Boot
   1.209 +	Start
   1.210 +else
   1.211 +	case $1 in
   1.212 +		start)
   1.213 +			Start ;;
   1.214 +		stop)
   1.215 +			Stop ;;
   1.216 +		restart)
   1.217 +			Stop
   1.218 +			Start ;;
   1.219 +		*)
   1.220 +			echo ""
   1.221 +			echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
   1.222 +			echo ""
   1.223 +			echo -e "	Default configuration file is \033[1m/etc/network.conf\033[0m"
   1.224 +			echo -e "	You can specify another configuration file in the second argument:"
   1.225 +			echo -e "	\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart] file.conf"
   1.226 +			echo ""
   1.227 +
   1.228 +	esac
   1.229 +fi