slitaz-boot-scripts rev 398

network.sh: bugfix: start Live CD with predefined wpa.conf, not with empty file; remove "any" network, it prevents to connect to regular AP; shrink sleep timing (20s to 5s).
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sat Mar 28 14:33:42 2015 +0200 (2015-03-28)
parents fb3932bbddf8
children a8aa6b77a7ed
files etc/init.d/network.sh
line diff
     1.1 --- a/etc/init.d/network.sh	Wed Mar 25 00:29:48 2015 +0200
     1.2 +++ b/etc/init.d/network.sh	Sat Mar 28 14:33:42 2015 +0200
     1.3 @@ -11,6 +11,7 @@
     1.4  . "$CONF"
     1.5  
     1.6  WPA_CONF='/etc/wpa/wpa.conf'
     1.7 +[ ! -e "$WPA_CONF" ] && cp /etc/wpa/wpa_empty.conf $WPA_CONF
     1.8  
     1.9  # Migrate existing settings to a new format file
    1.10  
    1.11 @@ -59,7 +60,7 @@
    1.12  		current_ssid="$(wpa_cli list_networks 2>/dev/null | fgrep '[CURRENT]' | cut -f2)"
    1.13  		if [ "$current_ssid" != "$WIFI_ESSID" ]; then
    1.14  			echo "Connecting to $WIFI_ESSID..."
    1.15 -			for i in $(seq 20); do
    1.16 +			for i in $(seq 5); do
    1.17  				index=$(wpa_cli list_networks 2>/dev/null | \
    1.18  					grep -m1 -F $'\t'$WIFI_ESSID$'\t' | head -n1 | cut -f1)
    1.19  				[ -z "$index" ] && echo -n '.' && sleep 1
    1.20 @@ -70,6 +71,15 @@
    1.21  }
    1.22  
    1.23  
    1.24 +# Remove selected network settings from wpa.conf
    1.25 +
    1.26 +remove_network() {
    1.27 +	mv -f $WPA_CONF $WPA_CONF.old
    1.28 +	cat $WPA_CONF.old | tr '\n' '\a' | sed 's|[^#]\(network={\)|\n\1|g' | \
    1.29 +		fgrep -v "ssid=\"$1\"" | tr '\a' '\n' > $WPA_CONF
    1.30 +}
    1.31 +
    1.32 +
    1.33  # For Wi-Fi. Users just have to enable it through WIFI="yes" and usually
    1.34  # ESSID="any" will work and the interface is autodetected.
    1.35  
    1.36 @@ -99,6 +109,9 @@
    1.37  		[ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
    1.38  		[ -n "$WIFI_AP" ]      && IWCONFIG_ARGS="$IWCONFIG_ARGS ap $WIFI_AP"
    1.39  
    1.40 +		# Use "any" network only when it is needed
    1.41 +		[ "$WIFI_ESSID" != 'any' ] && remove_network 'any'
    1.42 +
    1.43  		# Clean all / add / change stored networks settings
    1.44  		if [ "$WIFI_BLANK_NETWORKS" == 'yes' ]; then
    1.45  			echo "Creating new $WPA_CONF"
    1.46 @@ -107,9 +120,7 @@
    1.47  			if fgrep -q ssid=\"$WIFI_ESSID\" $WPA_CONF; then
    1.48  				echo "Change network settings in $WPA_CONF"
    1.49  				# Remove given existing network (it's to be appended later)
    1.50 -				mv -f $WPA_CONF $WPA_CONF.old
    1.51 -				cat $WPA_CONF.old | tr '\n' '\a' | sed 's|[^#]\(network={\)|\n\1|g' | \
    1.52 -				fgrep -v "ssid=\"$WIFI_ESSID\"" | tr '\a' '\n' > $WPA_CONF
    1.53 +				remove_network "$WIFI_ESSID"
    1.54  			else
    1.55  				echo "Append existing $WPA_CONF"
    1.56  			fi