home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / user-setup / user-setup-ask < prev   
Encoding:
Text File  |  2006-07-11  |  5.1 KB  |  199 lines

  1. #!/bin/sh -e
  2.  
  3. . /usr/share/debconf/confmodule
  4.  
  5. db_capb "backup"
  6.  
  7. if [ "$1" ]; then
  8.     ROOT="$1"
  9. else
  10.     ROOT=
  11. fi
  12. export ROOT
  13.  
  14. . /usr/lib/user-setup/functions.sh
  15.  
  16. # Main loop starts here. Use a state machine to allow jumping back to
  17. # previous questions.
  18. STATE=0
  19. while :; do
  20.     case "$STATE" in
  21.     0)
  22.         # Ask how the password files should be set up.
  23.         db_input low passwd/shadow || true
  24.         # Ask if root should be allowed to login.
  25.         db_input medium passwd/root-login || true
  26.     ;;
  27.     1)
  28.         db_get passwd/root-login
  29.         if [ "$RET" = false ]; then
  30.             # root password will be locked
  31.             db_set passwd/root-password ""
  32.             db_set passwd/root-password-crypted "!"
  33.         elif ! root_password; then
  34.             # First check whether the root password was preseeded crypted
  35.             db_get passwd/root-password-crypted || true
  36.             if ! test "$RET" ; then
  37.                 # No preseed of the root password hash
  38.                 # we will prompt the user
  39.                 db_input critical passwd/root-password || true
  40.                 # Note that this runs at a slightly lower
  41.                 # priority, so it may not always be seen. If
  42.                 # it isn't, don't compare passwords.
  43.                 COMPARE_PW=''
  44.                 db_input critical passwd/root-password-again \
  45.                 && COMPARE_PW=1 || true
  46.             fi
  47.         fi
  48.     ;;
  49.     2)
  50.         db_get passwd/root-login
  51.         if [ "$RET" = false ]; then
  52.             # root password will be locked
  53.             db_set passwd/root-password-again ""
  54.         elif ! root_password; then
  55.             # First check whether the root password was preseeded crypted
  56.             db_get passwd/root-password-crypted || true
  57.             if ! test "$RET" ; then
  58.                 # Compare the two passwords, loop back if not
  59.                 # identical, or if empty.
  60.                 db_get passwd/root-password
  61.                 ROOT_PW="$RET"
  62.                 if [ -z "$ROOT_PW" ]; then
  63.                     db_fset user-setup/password-empty seen false
  64.                     db_input critical user-setup/password-empty
  65.                     db_fset passwd/root-password seen false
  66.                     db_fset passwd/root-password-again seen false
  67.                     STATE=0
  68.                     continue
  69.                 fi
  70.                 db_get passwd/root-password-again
  71.                 if [ "$COMPARE_PW" ] && [ "$ROOT_PW" != "$RET" ]; then
  72.                     db_fset user-setup/password-mismatch seen false
  73.                     db_input critical user-setup/password-mismatch
  74.                     db_fset passwd/root-password seen false
  75.                     db_fset passwd/root-password-again seen false
  76.                     STATE=0
  77.                     continue
  78.                 fi
  79.                 ROOT_PW=''
  80.             fi
  81.         fi
  82.     ;;
  83.     3)
  84.         # Ask if a non-root user should be made, if there is not
  85.         # already one.
  86.         db_get passwd/root-login
  87.         if [ "$RET" = false ]; then
  88.             # always make non-root user; this user will be able
  89.             # to sudo to root
  90.             db_set passwd/make-user true
  91.         elif ! is_system_user; then
  92.             db_input medium passwd/make-user || true
  93.         fi
  94.     ;;
  95.     4)
  96.         # Prompt for user info.
  97.         db_get passwd/make-user
  98.         if [ "$RET" = true ] && ! is_system_user; then
  99.             db_input critical passwd/user-fullname || true
  100.         fi
  101.     ;;
  102.     5)
  103.         # Prompt for user info.
  104.         db_get passwd/make-user
  105.         if [ "$RET" = true ] && ! is_system_user; then
  106.             LOOP=""
  107.             db_get passwd/username
  108.             if [ -z "$RET" ]; then
  109.                 db_get passwd/user-fullname
  110.                 case "$RET" in
  111.                     "Frans Pop")    userdefault="fjp";;
  112.                     "Martin Michlmayr")    userdefault="tbm";;
  113.                     *)
  114.                         userdefault=`echo $RET | sed 's/ .*//' | LC_ALL=C tr A-Z a-z`
  115.                     ;;
  116.                 esac
  117.                 if test -n "$userdefault" && \
  118.                     LC_ALL=C expr "$userdefault" : '[a-z][-a-z0-9]*$' >/dev/null; then
  119.                     db_set passwd/username "$userdefault"
  120.                 fi
  121.             fi
  122.             db_input critical passwd/username || true
  123.         fi
  124.     ;;
  125.     6)
  126.         # Verify user.
  127.         db_get passwd/make-user
  128.         if [ "$RET" = true ] && ! is_system_user; then
  129.             # Verify the user name, loop with message if bad.
  130.             db_get passwd/username
  131.             USER="$RET"
  132.             if ! LC_ALL=C expr "$USER" : '[a-z][-a-z0-9]*$' >/dev/null; then
  133.                 db_fset passwd/username seen false
  134.                 db_fset passwd/username-bad seen false
  135.                 db_input critical passwd/username-bad
  136.                 STATE=3
  137.                 continue
  138.             fi
  139.             
  140.             db_get passwd/user-password-crypted || true
  141.             if ! test "$RET" ; then
  142.                 db_input critical passwd/user-password || true
  143.                 COMPARE_PW=''
  144.                 db_input critical passwd/user-password-again \
  145.                 && COMPARE_PW=1 || true
  146.             fi
  147.         fi
  148.     ;;
  149.     7)
  150.         db_get passwd/make-user
  151.         if [ "$RET" = true ] && ! is_system_user; then
  152.             db_get passwd/user-password-crypted || true
  153.             if ! test "$RET" ; then
  154.                 # Compare the two passwords, loop with message if not
  155.                 # identical, or if empty.
  156.                 db_get passwd/user-password
  157.                 USER_PW="$RET"
  158.                 db_get passwd/user-password-again
  159.                 if [ "$COMPARE_PW" ] && [ "$USER_PW" != "$RET" ]; then
  160.                     db_set passwd/user-password ""
  161.                     db_set passwd/user-password-again ""
  162.                     db_fset user-setup/password-mismatch seen false
  163.                     db_input critical user-setup/password-mismatch
  164.                     db_fset passwd/user-password seen false
  165.                     db_fset passwd/user-password-again seen false
  166.                     STATE=6
  167.                     continue
  168.                 fi
  169.                 if [ -z "$USER_PW" ]; then
  170.                     db_set passwd/user-password ""
  171.                     db_set passwd/user-password-again ""
  172.                     db_fset user-setup/password-empty seen false
  173.                     db_input critical user-setup/password-empty
  174.                     db_fset passwd/user-password seen false
  175.                     db_fset passwd/user-password-again seen false
  176.                     STATE=6
  177.                     continue
  178.                 fi
  179.             fi
  180.         fi
  181.     ;;
  182.     *)
  183.         break
  184.     ;;
  185.     esac
  186.  
  187.     if db_go; then
  188.         STATE=$(($STATE + 1))
  189.     else
  190.         STATE=$(($STATE - 1))
  191.     fi
  192.     #echo "ON STATE: $STATE"
  193. done
  194.  
  195. if test "$STATE" = -1 
  196. then
  197.     exit 10
  198. fi
  199.