slitaz-tools diff tinyutils/slitaz-config @ rev 930

Finish previous tiny edit
author Aleksej Bobylev <al.bobylev@gmail.com>
date Tue Nov 25 00:41:01 2014 +0200 (2014-11-25)
parents 0764c1dac3c2
children 5d80f6fdbdb7
line diff
     1.1 --- a/tinyutils/slitaz-config	Thu May 01 09:57:49 2014 +0200
     1.2 +++ b/tinyutils/slitaz-config	Tue Nov 25 00:41:01 2014 +0200
     1.3 @@ -7,9 +7,11 @@
     1.4  # Author: Christophe Lincoln <pankso@slitaz.org>
     1.5  #
     1.6  . /lib/libtaz.sh
     1.7 +export TEXTDOMAIN='slitaz-tools' #i18n
     1.8 +
     1.9  check_root
    1.10  
    1.11 -title="{ SliTaz Config }"
    1.12 +title="{ $(_ 'SliTaz Config') }"
    1.13  about="/usr/share/doc/slitaz/post-install.txt"
    1.14  tmpdir="/tmp/$(basename $0)"
    1.15  tmp="$tmpdir/$$"
    1.16 @@ -17,7 +19,12 @@
    1.17  width="72"
    1.18  
    1.19  # Use a tmp directory
    1.20 -mkdir -p ${tmpdir}
    1.21 +mkdir -p $tmpdir
    1.22 +
    1.23 +quit() {
    1.24 +	rm -rf $tmpdir; exit 0
    1.25 +}
    1.26 +
    1.27  
    1.28  #
    1.29  # GUI Functions
    1.30 @@ -26,45 +33,48 @@
    1.31  # Coded for the ARM first boot settings
    1.32  about_post_install() {
    1.33  	dialog --cr-wrap \
    1.34 -		--title "{ Post Installation }" \
    1.35 -		--exit-label "Continue" \
    1.36 -		--textbox "$about" ${height} ${width}
    1.37 +		--title "{ $(_ 'Post Installation') }" \
    1.38 +		--exit-label "$(_ 'Continue')" \
    1.39 +		--textbox "$about" $height $width
    1.40  }
    1.41  
    1.42  # Set root passwd
    1.43  root_passwd() {
    1.44 -	dialog --title "{ Root Password }" --colors \
    1.45 -		--inputbox "\nEnter new password for \Zb\Z1root" \
    1.46 -		12 ${width} 2>${tmp}
    1.47 -    passwd=$(cat $tmp)
    1.48 -    [ "$passwd" == "" ] && return 0
    1.49 -    echo "root:$passwd" | chpasswd --md5 >/dev/null
    1.50 +	dialog --title "{ $(_ 'Root Password') }" --colors \
    1.51 +		--inputbox "\n$(_ 'Enter new password for \Zb\Z1root')" \
    1.52 +		12 $width 2>$tmp
    1.53 +	passwd=$(cat $tmp)
    1.54 +	[ -z "$passwd" ] && return 0
    1.55 +	echo "root:$passwd" | chpasswd --md5 >/dev/null
    1.56  }
    1.57  
    1.58  # Add a new user
    1.59  add_user() {
    1.60 -	title="{ Add User }"
    1.61 -	dialog --title "$title" --colors \
    1.62 -		--inputbox "\nEnter login name for the new \Zb\Z4user" 12 ${width} 2>${tmp}
    1.63 +	title2="{ $(_ 'Add User') }"
    1.64 +
    1.65 +	dialog --title "$title2" --colors \
    1.66 +		--inputbox "\n$(_ 'Enter login name for the new \Zb\Z4user')" 12 $width 2>$tmp
    1.67  	user=$(cat $tmp)
    1.68 -	[ "$user" == "" ] && return 0
    1.69 -	dialog --title "$title" --colors \
    1.70 -		--inputbox "\nEnter password for user \Zb\Z4${user}" 12 ${width} 2>${tmp}
    1.71 +	[ -z "$user" ] && return 0
    1.72 +
    1.73 +	dialog --title "$title2" --colors \
    1.74 +		--inputbox "\n$(_ 'Enter password for user \Zb\Z4$user')" 12 $width 2>$tmp
    1.75  	passwd=$(cat $tmp)
    1.76 -    [ "$passwd" == "" ] && return 0
    1.77 -    adduser -D -g "SliTaz User" -G users ${user}
    1.78 -    echo "$user:$passwd" | chpasswd --md5 >/dev/null
    1.79 -    
    1.80 -    # User groups
    1.81 -    for group in audio cdrom video tty; do
    1.82 -		addgroup ${user} ${group} >/dev/null
    1.83 +	[ -z "$passwd" ] && return 0
    1.84 +
    1.85 +	adduser -D -g "SliTaz User" -G users $user
    1.86 +	echo "$user:$passwd" | chpasswd --md5 >/dev/null
    1.87 +
    1.88 +	# User groups
    1.89 +	for group in audio cdrom video tty; do
    1.90 +		addgroup $user $group >/dev/null
    1.91  	done
    1.92 -	
    1.93 +
    1.94  	# Make sure system-wide applications.conf is used
    1.95 -	config="/home/${user}/.config"
    1.96 -	mkdir -p ${config}/slitaz
    1.97 -	cp -f /etc/slitaz/applications.conf ${config}/slitaz
    1.98 -	
    1.99 +	config="/home/$user/.config"
   1.100 +	mkdir -p $config/slitaz
   1.101 +	cp -f /etc/slitaz/applications.conf $config/slitaz
   1.102 +
   1.103  	# Slim default user on post-install
   1.104  	if [ -f "/etc/slim.conf" ] && [ ! -f "/var/lib/slitaz/post-install" ]; then
   1.105  		sed -i s"/default_user .*/default_user        $user/" /etc/slim.conf
   1.106 @@ -72,101 +82,124 @@
   1.107  }
   1.108  
   1.109  set_date() {
   1.110 -	clear && newline
   1.111 -	echo -n "Old date:"; date
   1.112 +	clear; newline
   1.113 +	echo "Old date: $(date)"
   1.114  	rdate -s tick.greyware.com 2>/dev/null
   1.115 -	echo -n "New date:"; date
   1.116 +	echo "New date: $(date)"
   1.117  	sleep 4
   1.118  }
   1.119  
   1.120 -# Catch ESSIDs and format output for Ncurses Dialog or GTK Yad tree. 
   1.121 -# We get the list of networks by Cell and without spaces. 
   1.122 +# Catch ESSIDs and format output for Ncurses Dialog or GTK Yad tree.
   1.123 +# We get the list of networks by Cell and without spaces.
   1.124  # Usage: detect_wifi --output=gtk (default output to dialog)
   1.125  detect_wifi() {
   1.126  	. /etc/network.conf
   1.127  	ifconfig $WIFI_INTERFACE up
   1.128 +
   1.129  	if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
   1.130 -		for i in $(iwlist $WIFI_INTERFACE scan | sed s/"Cell "/Cell-/ | grep "Cell-" | awk '{print $1}')
   1.131 -		do
   1.132 +		IFS=$'\n'; hidden=''
   1.133 +		for i in $(iwlist $WIFI_INTERFACE scan | grep -Eo 'Cell [0-9]*'); do
   1.134  			scan=$(iwlist $WIFI_INTERFACE scan last | \
   1.135  				awk '/(Cell|ESS|Qual|Encry|IE: WPA|WPA2)/ {print}' | \
   1.136 -				sed s/"Cell "/Cell-/ | grep -A 5 "$i")
   1.137 +				sed "/$i/,/Cell/ !d")
   1.138 +
   1.139  			essid=$(echo $scan | cut -d '"' -f 2)
   1.140  
   1.141 -			if echo "$scan" | grep -q Quality; then
   1.142 -				quality=$(echo $scan | sed 's/.*Quality=\([^ ]*\).*/\1/' | sed 's/.*Quality:\([^ ]*\).*/\1/')
   1.143 -			else
   1.144 -				quality="$(_n '-----')"
   1.145 -			fi
   1.146 +			quality=$(echo $scan | grep -Eo 'Quality[:=][^ ]*' | tr -cd '0-9/')
   1.147 +			[ -z "$quality" ] && quality='-----'
   1.148  
   1.149 -			crypto=$(echo $scan | sed 's/.*key:\([^ ]*\).*/\1/')
   1.150 +			crypto="$(echo $scan | sed 's/.*key:\([^ ]*\).*/\1/')"
   1.151 +
   1.152  			# Check encryption type
   1.153  			if echo "$scan" | grep -q WPA*; then
   1.154  				crypto="WPA"
   1.155  			fi
   1.156  
   1.157  			# Connected or not connected...
   1.158 -			if ifconfig | grep -A 1 $WIFI_INTERFACE | \
   1.159 -				grep -q inet && iwconfig $WIFI_INTERFACE | \
   1.160 -				grep ESSID | grep -q -w "$essid"; then
   1.161 -				status=connected
   1.162 +			if ifconfig | grep -A1 $WIFI_INTERFACE | grep -qF 'inet' && \
   1.163 +				iwconfig $WIFI_INTERFACE | grep ESSID | grep -qwF "$essid"; then
   1.164 +				status="..$(_ 'connected')"
   1.165  			else
   1.166 -				status="--"
   1.167 +				status=''
   1.168  			fi
   1.169 -			
   1.170 +
   1.171  			# Output
   1.172 -			case "$output" in
   1.173 -				gtk)
   1.174 -					echo -e "$( _n 'any')\n$(_n 'N/A')\n$(_n 'none')\n$(_n '-')"
   1.175 -					echo -e "$essid\n$quality\n$crypto\n$status" ;;
   1.176 -				*) 
   1.177 -					echo "$essid" "QA_${quality}_KEY_${crypto}_${status}" ;;
   1.178 -			esac
   1.179 +			if [ -z "$essid" ]; then
   1.180 +				hidden='yes'
   1.181 +			else
   1.182 +				case "$output" in
   1.183 +					gtk)
   1.184 +						#echo -e "$(_n 'any')\n$(_n 'N/A')\n$(_n 'none')\n$(_n '-')"
   1.185 +						echo -e "$essid\n$quality\n$crypto\n$status" ;;
   1.186 +					*)
   1.187 +						echo "$essid"
   1.188 +						echo "$(_ 'Quality'):${quality}..$(_ 'Key'):${crypto}${status}" ;;
   1.189 +				esac
   1.190 +			fi
   1.191  		done
   1.192 +		[ -n "$hidden" ] && echo "$(_ 'hidden.network')" "$(_ 'Connect.to.a.hidden.network')"
   1.193  	fi
   1.194  }
   1.195  
   1.196 -# Wireless config so users dont have to edit any config files on post
   1.197 +# Show message and percentage on the dialog gauge
   1.198 +msg() {
   1.199 +	sleep 1; echo -e "XXX\n$1\n$MSG\nXXX"
   1.200 +}
   1.201 +
   1.202 +# Wireless config so users don't have to edit any config files on post
   1.203  # install to get connected. If the wired connection is used it will auto
   1.204  # connect with DHCP so no need for a dialog frontend.
   1.205  wifi_setup() {
   1.206  	. /etc/network.conf
   1.207  	dialog \
   1.208  		--clear --title "$title" \
   1.209 -		--ok-label "Select" \
   1.210 -		--menu "\n$(gettext 'Connect to a Wi-Fi network')" \
   1.211 -		${height} ${width} 14 \
   1.212 -"any" "Quality_N/A" \
   1.213 -$(detect_wifi) 2>${tmp}
   1.214 -	
   1.215 +		--ok-label "$(_ 'Select')" \
   1.216 +		--menu "\n$(_ 'Connect to a Wi-Fi network')" \
   1.217 +		$height $width 14 \
   1.218 +"any" "$(_ 'Connect.to.any.network')" \
   1.219 +$(detect_wifi) 2>$tmp
   1.220 +
   1.221  	# Handle options
   1.222 -	case "${?}" in
   1.223 -		1|255) rm -rf ${tmpdir} && exit 0 ;;
   1.224 +	case "$?" in
   1.225 +		1|255) quit ;;
   1.226  		0) essid=$(cat $tmp) ;;
   1.227  	esac
   1.228 -	
   1.229 -	# Check if we need to prompt user for an encrypted network
   1.230 -	scan=$(iwlist $WIFI_INTERFACE scan | \
   1.231 -		awk '/(Cell|ESS|Qual|Encry|IE: WPA|WPA2)/ {print}' | \
   1.232 -		sed s/"Cell "/Cell-/ | grep -A 5 "$essid")
   1.233 -	if echo "$scan" | sed 's/.*key:\([^ ]*\).*/\1/' | grep -q WPA*; then
   1.234 -		dialog --title "{ Wi-Fi Password }" --colors \
   1.235 -			--inputbox "\nEnter wifi key (password) for \Zb\Z4${essid}" \
   1.236 -			12 ${width} 2>${tmp}
   1.237 +
   1.238 +	# Connect to hidden network
   1.239 +	if [ "$essid" == "$(_ 'hidden.network')" ]; then
   1.240 +		dialog --title "{ $(_ 'Wi-Fi ESSID') }" \
   1.241 +			--inputbox "\n$(_ 'Enter Wi-Fi access point ESSID (name)')" \
   1.242 +			12 $width 2>$tmp
   1.243 +		essid=$(cat $tmp)
   1.244 +		[ -z "$essid" ] && exit 0
   1.245 +
   1.246 +		dialog --title "{ $(_ 'Wi-Fi Password') }" --colors \
   1.247 +			--inputbox "\n$(_ 'Enter Wi-Fi key (password) for \Zb\Z4$essid')" \
   1.248 +			12 $width 2>$tmp
   1.249  		key=$(cat $tmp)
   1.250 -		[ "$key" == "" ] && return 0
   1.251 +	else
   1.252 +
   1.253 +		# Check if we need to prompt user for an encrypted network
   1.254 +		key=$(iwlist $WIFI_INTERFACE scan last | grep -E 'Cell |Encryption|ESSID' | \
   1.255 +			grep -C1 "$essid" | sed -n 's|.*key:\(.*\)|\1|p')
   1.256 +
   1.257 +		if [ "$key" == "on" ]; then
   1.258 +			dialog --title "{ $(_ 'Wi-Fi Password') }" --colors \
   1.259 +				--inputbox "\n$(_ 'Enter Wi-Fi key (password) for \Zb\Z4$essid')" \
   1.260 +				12 $width 2>$tmp
   1.261 +			key=$(cat $tmp)
   1.262 +			[ -z "$key" ] && exit 0
   1.263 +		fi
   1.264  	fi
   1.265 -	
   1.266 +
   1.267  	# Configure connection
   1.268  	{
   1.269 -		echo "XXX" && echo 30
   1.270 -		echo -e "\nShuting down network interfaces..."
   1.271 -		echo "XXX"
   1.272 -		stopd network.sh >/dev/null 2>&1 && sleep 2
   1.273 -		
   1.274 -		echo "XXX" && echo 30
   1.275 -		echo -e "\nConfiguring: /etc/network.conf..."
   1.276 -		echo "XXX"
   1.277 +		MSG="\n$(_ 'Shutting down network interfaces...')"
   1.278 +		msg 0; stopd network.sh >/dev/null 2>&1
   1.279 +		msg 10
   1.280 +
   1.281 +		MSG="\n$(_ 'Configuring: /etc/network.conf...')"
   1.282 +		msg 20
   1.283  		# WIFI_KEY_TYPE=any should work for WEP/WPA*
   1.284  		sed -i \
   1.285  			-e s"/^WIFI=.*/WIFI=\"yes\"/" \
   1.286 @@ -174,62 +207,55 @@
   1.287  			-e s"/^WIFI_KEY=.*/WIFI_KEY=\"$key\"/" \
   1.288  			-e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"any\"/" \
   1.289  			/etc/network.conf
   1.290 -		sleep 1
   1.291 -		
   1.292 -		echo "XXX" && echo 60
   1.293 -		echo -e "\nRestarting wifi interface..."
   1.294 -		echo "XXX"
   1.295 -		startd network.sh >/dev/null 2>&1 && sleep 3
   1.296 -		
   1.297 -		echo "XXX" && echo 90
   1.298 -		echo -e "\nChecking connection..."
   1.299 -		sleep 1
   1.300 -		ip=$(ifconfig | fgrep -A 1 "encap:Ethernet" | fgrep "inet" | \
   1.301 -			cut -d ":" -f 2 | awk '{print $1}')
   1.302 -		echo "XXX"
   1.303 -		sleep 1
   1.304 -		
   1.305 -		echo "XXX" && echo 100
   1.306 +
   1.307 +		MSG="\n$(_ 'Restarting Wi-Fi interface...')"
   1.308 +		msg 30; startd network.sh >/dev/null 2>&1
   1.309 +		msg 40; msg 50; msg 60; msg 70; msg 80
   1.310 +
   1.311 +		MSG="\n$(_ 'Checking connection...')"
   1.312 +		msg 90; sleep 2
   1.313 +		ip="$(ifconfig $WIFI_INTERFACE | fgrep 'inet addr' | sed 's|.*:\([^ ]*\) .*|\1|')"
   1.314 +
   1.315  		if [ "$ip" ]; then
   1.316 -			echo -e "\nIP address: $ip"
   1.317 +			MSG="\n$(_ 'IP address: $ip')"
   1.318  		else
   1.319 -			echo -e "\nUnable to connect..."
   1.320 +			MSG="\n$(_ 'Unable to connect...')"
   1.321  		fi
   1.322 -		echo "XXX" && sleep 2
   1.323 -		
   1.324 -	} | dialog --title "{ Wi-Fi Config }" --gauge "" 8 ${width} 0
   1.325 +		msg 100; sleep 2
   1.326 +
   1.327 +	} | dialog --title "{ $(_ 'Wi-Fi Config') }" --gauge "" 8 $width 0
   1.328  }
   1.329  
   1.330  # Main Dialog menu
   1.331  main_box() {
   1.332  	dialog \
   1.333  		--clear --title "$title" \
   1.334 -		--ok-label "Exec" --cancel-label "Quit" \
   1.335 -		--menu "" ${height} ${width} 14 \
   1.336 -"keyboard"       "$(gettext 'System keyboard setting')" \
   1.337 -"locale"         "$(gettext 'System language setting')" \
   1.338 -"wifi-setup"     "$(gettext 'Wi-Fi network settings')" \
   1.339 -"add-user"       "$(gettext 'Add a new user')" \
   1.340 -"root-passwd"    "$(gettext 'Change root password')" \
   1.341 -"set-date"       "$(gettext 'Set system date from the web')" \
   1.342 -"quit"           "$(gettext 'Exit from SliTaz Config')" 2>${tmp}
   1.343 -	
   1.344 +		--ok-label "$(_ 'Exec')" --cancel-label "$(_ 'Quit')" \
   1.345 +		--menu "" $height $width 14 \
   1.346 +"keyboard"    "$(_ 'System keyboard setting')"      \
   1.347 +"locale"      "$(_ 'System language setting')"      \
   1.348 +"wifi-setup"  "$(_ 'Wi-Fi network settings')"       \
   1.349 +"add-user"    "$(_ 'Add a new user')"               \
   1.350 +"root-passwd" "$(_ 'Change root password')"         \
   1.351 +"set-date"    "$(_ 'Set system date from the web')" \
   1.352 +"quit"        "$(_ 'Exit from SliTaz Config')"      2>$tmp
   1.353 +
   1.354  	# Handle options
   1.355 -	opt=${?}
   1.356 +	opt="$?"
   1.357  	case "$opt" in
   1.358 -		1|255) rm -rf ${tmpdir} && exit 0 ;;
   1.359 +		1|255) quit ;;
   1.360  	esac
   1.361 -	
   1.362 +
   1.363  	# Handle actions
   1.364  	action=$(cat $tmp)
   1.365  	case "$action" in
   1.366 -		keyboard) tazkeymap ;;
   1.367 -		locale) tazlocale ;;
   1.368 -		wifi-setup) wifi_setup ;;
   1.369 -		add-user) add_user ;;
   1.370 +		keyboard)    tazkeymap   ;;
   1.371 +		locale)      tazlocale   ;;
   1.372 +		wifi-setup)  wifi_setup  ;;
   1.373 +		add-user)    add_user    ;;
   1.374  		root-passwd) root_passwd ;;
   1.375 -		set-date) set_date ;;
   1.376 -		quit) rm -rf ${tmpdir} && exit 0 ;;
   1.377 +		set-date)    set_date    ;;
   1.378 +		quit)        quit        ;;
   1.379  	esac
   1.380  }
   1.381  
   1.382 @@ -238,8 +264,8 @@
   1.383  #
   1.384  
   1.385  case "$1" in
   1.386 -	*_*) 
   1.387 -		# Execute functions 
   1.388 +	*_*)
   1.389 +		# Execute functions
   1.390  		$@ ;;
   1.391  	*)
   1.392  		while true; do