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 |