slitaz-tools annotate tinyutils/slitaz-config @ rev 1029

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 08:26:53 2019 +0100 (2019-02-26)
parents 3be081525506
children
rev   line source
pankso@840 1 #!/bin/sh
pankso@840 2 #
pankso@840 3 # SliTaz Config - A tool with all SliTaz Ncurses configs in one place for
pankso@840 4 # text mode systems (server, ARM devices)
pankso@840 5 #
al@939 6 # Copyright (C) 2014-2015 SliTaz ARM - BSD License
pankso@840 7 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@840 8 #
al@939 9
pankso@840 10 . /lib/libtaz.sh
al@926 11 export TEXTDOMAIN='slitaz-tools' #i18n
al@926 12
pankso@840 13 check_root
pankso@840 14
al@926 15 title="{ $(_ 'SliTaz Config') }"
al@943 16 about='/usr/share/doc/slitaz/post-install.txt'
pankso@840 17 tmpdir="/tmp/$(basename $0)"
pankso@840 18 tmp="$tmpdir/$$"
al@943 19 height='20'
al@943 20 width='72'
pankso@840 21
al@939 22
pankso@840 23 # Use a tmp directory
al@939 24
al@926 25 mkdir -p $tmpdir
al@926 26
al@926 27 quit() {
al@926 28 rm -rf $tmpdir; exit 0
al@926 29 }
al@926 30
pankso@840 31
pankso@840 32 #
pankso@840 33 # GUI Functions
pankso@840 34 #
pankso@840 35
al@939 36
pankso@853 37 # Coded for the ARM first boot settings
al@939 38
pankso@852 39 about_post_install() {
pankso@852 40 dialog --cr-wrap \
al@926 41 --title "{ $(_ 'Post Installation') }" \
al@926 42 --exit-label "$(_ 'Continue')" \
al@926 43 --textbox "$about" $height $width
pankso@852 44 }
pankso@852 45
al@939 46
pankso@840 47 # Set root passwd
al@939 48
pankso@840 49 root_passwd() {
al@926 50 dialog --title "{ $(_ 'Root Password') }" --colors \
al@943 51 --inputbox "\n$(_ 'Enter new password for %s' '\Zb\Z1root')" \
al@926 52 12 $width 2>$tmp
al@926 53 passwd=$(cat $tmp)
al@926 54 [ -z "$passwd" ] && return 0
al@926 55 echo "root:$passwd" | chpasswd --md5 >/dev/null
pankso@840 56 }
pankso@840 57
al@939 58
pankso@852 59 # Add a new user
al@939 60
pankso@852 61 add_user() {
al@926 62 title2="{ $(_ 'Add User') }"
al@926 63
al@926 64 dialog --title "$title2" --colors \
al@926 65 --inputbox "\n$(_ 'Enter login name for the new \Zb\Z4user')" 12 $width 2>$tmp
pankso@852 66 user=$(cat $tmp)
al@926 67 [ -z "$user" ] && return 0
al@926 68
al@926 69 dialog --title "$title2" --colors \
al@943 70 --inputbox "\n$(_ 'Enter password for user \Zb\Z4%s' "$user")" 12 $width 2>$tmp
pankso@852 71 passwd=$(cat $tmp)
al@926 72 [ -z "$passwd" ] && return 0
al@926 73
al@926 74 adduser -D -g "SliTaz User" -G users $user
al@926 75 echo "$user:$passwd" | chpasswd --md5 >/dev/null
al@926 76
al@926 77 # User groups
al@926 78 for group in audio cdrom video tty; do
al@926 79 addgroup $user $group >/dev/null
pankso@852 80 done
al@926 81
pankso@874 82 # Make sure system-wide applications.conf is used
al@926 83 config="/home/$user/.config"
al@926 84 mkdir -p $config/slitaz
al@926 85 cp -f /etc/slitaz/applications.conf $config/slitaz
al@926 86
pankso@852 87 # Slim default user on post-install
pankso@852 88 if [ -f "/etc/slim.conf" ] && [ ! -f "/var/lib/slitaz/post-install" ]; then
pankso@852 89 sed -i s"/default_user .*/default_user $user/" /etc/slim.conf
pankso@852 90 fi
pankso@852 91 }
pankso@852 92
al@939 93
pankso@840 94 set_date() {
al@926 95 clear; newline
al@926 96 echo "Old date: $(date)"
pankso@852 97 rdate -s tick.greyware.com 2>/dev/null
al@926 98 echo "New date: $(date)"
pankso@840 99 sleep 4
pankso@840 100 }
pankso@840 101
al@939 102
al@926 103 # Catch ESSIDs and format output for Ncurses Dialog or GTK Yad tree.
al@926 104 # We get the list of networks by Cell and without spaces.
pankso@863 105 # Usage: detect_wifi --output=gtk (default output to dialog)
al@939 106
pankso@863 107 detect_wifi() {
pankso@863 108 . /etc/network.conf
pankso@863 109 ifconfig $WIFI_INTERFACE up
al@926 110
pankso@863 111 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
al@926 112 IFS=$'\n'; hidden=''
al@926 113 for i in $(iwlist $WIFI_INTERFACE scan | grep -Eo 'Cell [0-9]*'); do
pankso@863 114 scan=$(iwlist $WIFI_INTERFACE scan last | \
pankso@863 115 awk '/(Cell|ESS|Qual|Encry|IE: WPA|WPA2)/ {print}' | \
al@926 116 sed "/$i/,/Cell/ !d")
al@926 117
pankso@863 118 essid=$(echo $scan | cut -d '"' -f 2)
pankso@863 119
al@926 120 quality=$(echo $scan | grep -Eo 'Quality[:=][^ ]*' | tr -cd '0-9/')
al@926 121 [ -z "$quality" ] && quality='-----'
pankso@863 122
al@926 123 crypto="$(echo $scan | sed 's/.*key:\([^ ]*\).*/\1/')"
al@926 124
pankso@863 125 # Check encryption type
pankso@863 126 if echo "$scan" | grep -q WPA*; then
pankso@863 127 crypto="WPA"
pankso@863 128 fi
pankso@863 129
pankso@863 130 # Connected or not connected...
al@926 131 if ifconfig | grep -A1 $WIFI_INTERFACE | grep -qF 'inet' && \
al@926 132 iwconfig $WIFI_INTERFACE | grep ESSID | grep -qwF "$essid"; then
al@926 133 status="..$(_ 'connected')"
pankso@863 134 else
al@926 135 status=''
pankso@863 136 fi
al@926 137
pankso@863 138 # Output
al@926 139 if [ -z "$essid" ]; then
al@926 140 hidden='yes'
al@926 141 else
al@926 142 case "$output" in
al@926 143 gtk)
al@926 144 #echo -e "$(_n 'any')\n$(_n 'N/A')\n$(_n 'none')\n$(_n '-')"
al@926 145 echo -e "$essid\n$quality\n$crypto\n$status" ;;
al@926 146 *)
al@926 147 echo "$essid"
al@926 148 echo "$(_ 'Quality'):${quality}..$(_ 'Key'):${crypto}${status}" ;;
al@926 149 esac
al@926 150 fi
pankso@863 151 done
al@926 152 [ -n "$hidden" ] && echo "$(_ 'hidden.network')" "$(_ 'Connect.to.a.hidden.network')"
pankso@863 153 fi
pankso@863 154 }
pankso@863 155
al@939 156
al@926 157 # Show message and percentage on the dialog gauge
al@939 158
al@926 159 msg() {
al@926 160 sleep 1; echo -e "XXX\n$1\n$MSG\nXXX"
al@926 161 }
al@926 162
al@939 163
al@926 164 # Wireless config so users don't have to edit any config files on post
pankso@863 165 # install to get connected. If the wired connection is used it will auto
pankso@863 166 # connect with DHCP so no need for a dialog frontend.
al@939 167
pankso@863 168 wifi_setup() {
pankso@863 169 . /etc/network.conf
pankso@863 170 dialog \
pankso@863 171 --clear --title "$title" \
al@926 172 --ok-label "$(_ 'Select')" \
al@926 173 --menu "\n$(_ 'Connect to a Wi-Fi network')" \
al@926 174 $height $width 14 \
al@926 175 "any" "$(_ 'Connect.to.any.network')" \
al@926 176 $(detect_wifi) 2>$tmp
al@926 177
pankso@863 178 # Handle options
al@926 179 case "$?" in
al@926 180 1|255) quit ;;
pankso@863 181 0) essid=$(cat $tmp) ;;
pankso@863 182 esac
al@926 183
al@926 184 # Connect to hidden network
pascal@1029 185 if [ "$essid" = "$(_ 'hidden.network')" ]; then
al@926 186 dialog --title "{ $(_ 'Wi-Fi ESSID') }" \
al@926 187 --inputbox "\n$(_ 'Enter Wi-Fi access point ESSID (name)')" \
al@926 188 12 $width 2>$tmp
al@926 189 essid=$(cat $tmp)
al@926 190 [ -z "$essid" ] && exit 0
al@926 191
al@926 192 dialog --title "{ $(_ 'Wi-Fi Password') }" --colors \
al@943 193 --inputbox "\n$(_ 'Enter Wi-Fi key (password) for \Zb\Z4%s' "$essid")" \
al@926 194 12 $width 2>$tmp
pankso@863 195 key=$(cat $tmp)
al@926 196 else
al@926 197
al@926 198 # Check if we need to prompt user for an encrypted network
al@926 199 key=$(iwlist $WIFI_INTERFACE scan last | grep -E 'Cell |Encryption|ESSID' | \
al@926 200 grep -C1 "$essid" | sed -n 's|.*key:\(.*\)|\1|p')
al@926 201
pascal@1029 202 if [ "$key" = "on" ]; then
al@926 203 dialog --title "{ $(_ 'Wi-Fi Password') }" --colors \
al@943 204 --inputbox "\n$(_ 'Enter Wi-Fi key (password) for \Zb\Z4%s' "$essid")" \
al@926 205 12 $width 2>$tmp
al@926 206 key=$(cat $tmp)
al@926 207 [ -z "$key" ] && exit 0
al@926 208 fi
pankso@863 209 fi
al@926 210
pankso@863 211 # Configure connection
pankso@863 212 {
al@926 213 MSG="\n$(_ 'Shutting down network interfaces...')"
al@926 214 msg 0; stopd network.sh >/dev/null 2>&1
al@926 215 msg 10
al@926 216
al@943 217 MSG="\n$(_ 'Configuring: %s...' '/etc/network.conf')"
al@926 218 msg 20
pankso@863 219 # WIFI_KEY_TYPE=any should work for WEP/WPA*
pankso@863 220 sed -i \
pankso@866 221 -e s"/^WIFI=.*/WIFI=\"yes\"/" \
pankso@863 222 -e s"/^WIFI_ESSID=.*/WIFI_ESSID=\"$essid\""/ \
pankso@863 223 -e s"/^WIFI_KEY=.*/WIFI_KEY=\"$key\"/" \
pankso@863 224 -e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"any\"/" \
pankso@863 225 /etc/network.conf
al@926 226
al@926 227 MSG="\n$(_ 'Restarting Wi-Fi interface...')"
al@926 228 msg 30; startd network.sh >/dev/null 2>&1
al@926 229 msg 40; msg 50; msg 60; msg 70; msg 80
al@926 230
al@926 231 MSG="\n$(_ 'Checking connection...')"
al@926 232 msg 90; sleep 2
al@926 233 ip="$(ifconfig $WIFI_INTERFACE | fgrep 'inet addr' | sed 's|.*:\([^ ]*\) .*|\1|')"
al@926 234
al@943 235 if [ -n "$ip" ]; then
al@943 236 MSG="\n$(_ 'IP address: %s' "$ip")"
pankso@863 237 else
al@926 238 MSG="\n$(_ 'Unable to connect...')"
pankso@863 239 fi
al@926 240 msg 100; sleep 2
al@926 241
al@926 242 } | dialog --title "{ $(_ 'Wi-Fi Config') }" --gauge "" 8 $width 0
pankso@863 243 }
pankso@863 244
al@939 245
pankso@840 246 # Main Dialog menu
al@939 247
pankso@840 248 main_box() {
pankso@840 249 dialog \
pankso@840 250 --clear --title "$title" \
al@926 251 --ok-label "$(_ 'Exec')" --cancel-label "$(_ 'Quit')" \
al@926 252 --menu "" $height $width 14 \
al@926 253 "keyboard" "$(_ 'System keyboard setting')" \
al@926 254 "locale" "$(_ 'System language setting')" \
al@926 255 "wifi-setup" "$(_ 'Wi-Fi network settings')" \
al@926 256 "add-user" "$(_ 'Add a new user')" \
al@926 257 "root-passwd" "$(_ 'Change root password')" \
al@926 258 "set-date" "$(_ 'Set system date from the web')" \
al@926 259 "quit" "$(_ 'Exit from SliTaz Config')" 2>$tmp
al@926 260
pankso@840 261 # Handle options
al@926 262 opt="$?"
pankso@840 263 case "$opt" in
al@926 264 1|255) quit ;;
pankso@840 265 esac
al@926 266
pankso@840 267 # Handle actions
pankso@840 268 action=$(cat $tmp)
pankso@840 269 case "$action" in
al@926 270 keyboard) tazkeymap ;;
al@926 271 locale) tazlocale ;;
al@926 272 wifi-setup) wifi_setup ;;
al@926 273 add-user) add_user ;;
pankso@840 274 root-passwd) root_passwd ;;
al@926 275 set-date) set_date ;;
al@926 276 quit) quit ;;
pankso@840 277 esac
pankso@840 278 }
pankso@840 279
al@939 280
pankso@840 281 #
pankso@840 282 # Handle commands
pankso@840 283 #
pankso@840 284
pankso@840 285 case "$1" in
al@926 286 *_*)
al@926 287 # Execute functions
pankso@840 288 $@ ;;
pankso@840 289 *)
pankso@840 290 while true; do
pankso@840 291 main_box
pankso@840 292 done ;;
pankso@840 293 esac
pankso@840 294
al@939 295
pankso@840 296 # Clean exit
al@939 297
pankso@863 298 #rm -rf ${tmpdir}
pankso@840 299 exit 0