home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / lib / user-setup / user-setup-ask < prev   
Encoding:
Text File  |  2009-07-21  |  5.4 KB  |  212 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. # For the convenience of heavy testers
  17. set_special_users() {
  18.     local realname
  19.     case "$fullname" in
  20.         fjp)    realname="Frans Pop" ;;
  21.         tbm)    realname="Martin Michlmayr" ;;
  22.         *)        return 1 ;;
  23.     esac
  24.     db_set passwd/user-fullname "$realname"
  25.     userdefault=$fullname
  26.     db_fset passwd/username seen true
  27.     return 0
  28. }
  29.  
  30. # Main loop starts here. Use a state machine to allow jumping back to
  31. # previous questions.
  32. STATE=0
  33. while :; do
  34.     case "$STATE" in
  35.         0)
  36.         # Ask how the password files should be set up.
  37.         db_input low passwd/shadow || true
  38.         # Ask if root should be allowed to login.
  39.         db_input medium passwd/root-login || true
  40.         ;;
  41.         1)
  42.         db_get passwd/root-login
  43.         if [ "$RET" = false ]; then
  44.             # root password will be locked
  45.             db_set passwd/root-password ""
  46.             db_set passwd/root-password-crypted "!"
  47.         elif ! root_password; then
  48.             # First check whether the root password was preseeded
  49.             # crypted to an actual password (not locked)
  50.             db_get passwd/root-password-crypted || true
  51.             if ! test "$RET" || [ "x$RET" = "x!" ]; then
  52.                 # No preseed of the root password hash
  53.                 # we will prompt the user
  54.                 db_set passwd/root-password-crypted ""
  55.                 db_input critical passwd/root-password || true
  56.                 db_input critical passwd/root-password-again || true
  57.             fi
  58.         fi
  59.         ;;
  60.         2)
  61.         db_get passwd/root-login
  62.         if [ "$RET" = false ]; then
  63.             # root password will be locked
  64.             db_set passwd/root-password-again ""
  65.         elif ! root_password; then
  66.             # First check whether the root password was preseeded crypted
  67.             db_get passwd/root-password-crypted || true
  68.             if ! test "$RET" ; then
  69.                 # Compare the two passwords, loop back if not
  70.                 # identical, or if empty.
  71.                 db_get passwd/root-password
  72.                 ROOT_PW="$RET"
  73.                 if [ -z "$ROOT_PW" ]; then
  74.                     db_set passwd/root-login false
  75.                     STATE=1
  76.                     continue
  77.                 fi
  78.                 db_get passwd/root-password-again
  79.                 if [ "$ROOT_PW" != "$RET" ]; then
  80.                     db_fset user-setup/password-mismatch seen false
  81.                     db_input critical user-setup/password-mismatch
  82.                     db_fset passwd/root-password seen false
  83.                     db_fset passwd/root-password-again seen false
  84.                     STATE=1
  85.                     continue
  86.                 fi
  87.                 ROOT_PW=''
  88.             fi
  89.         fi
  90.         ;;
  91.         3)
  92.         # Ask if a non-root user should be made, if there is not
  93.         # already one.
  94.         db_get passwd/root-login
  95.         if [ "$RET" = false ]; then
  96.             # always make non-root user; this user will be able
  97.             # to sudo to root
  98.             db_set passwd/make-user true
  99.         elif ! is_system_user; then
  100.             db_input medium passwd/make-user || true
  101.         fi
  102.         ;;
  103.         4)
  104.         # Prompt for user info.
  105.         db_get passwd/make-user
  106.         if [ "$RET" = true ] && ! is_system_user; then
  107.             db_input critical passwd/user-fullname || true
  108.         fi
  109.         ;;
  110.         5)
  111.         # Prompt for user info.
  112.         db_get passwd/make-user
  113.         if [ "$RET" = true ] && ! is_system_user; then
  114.             LOOP=""
  115.             db_get passwd/username
  116.             if [ -z "$RET" ]; then
  117.                 db_get passwd/user-fullname
  118.                 fullname=$RET
  119.                 if ! set_special_users; then
  120.                     userdefault=$(echo "$fullname" | \
  121.                         sed 's/ .*//' | LC_ALL=C tr A-Z a-z)
  122.                 fi
  123.                 if test -n "$userdefault" && \
  124.                     LC_ALL=C expr "$userdefault" : '[a-z][-a-z0-9]*$' >/dev/null; then
  125.                     db_set passwd/username "$userdefault"
  126.                 fi
  127.             fi
  128.             db_input critical passwd/username || true
  129.         fi
  130.         ;;
  131.         6)
  132.         # Verify user.
  133.         db_get passwd/make-user
  134.         if [ "$RET" = true ] && ! is_system_user; then
  135.             # Verify the user name, loop with message if bad.
  136.             db_get passwd/username
  137.             USER="$RET"
  138.             if ! LC_ALL=C expr "$USER" : '[a-z][-a-z0-9]*$' >/dev/null; then
  139.                 db_fset passwd/username seen false
  140.                 db_fset passwd/username-bad seen false
  141.                 db_input critical passwd/username-bad
  142.                 STATE=3
  143.                 continue
  144.             fi
  145.             
  146.             if grep -v '^#' /usr/lib/user-setup/reserved-usernames | \
  147.                grep -q "^$USER\$"; then
  148.                 db_fset passwd/username seen false
  149.                 db_fset passwd/username-reserved seen false
  150.                 db_subst passwd/username-reserved USERNAME "$USER"
  151.                 db_input critical passwd/username-reserved
  152.                 STATE=3
  153.                 continue
  154.             fi
  155.  
  156.             db_get passwd/user-password-crypted || true
  157.             if ! test "$RET" ; then
  158.                 db_input critical passwd/user-password || true
  159.                 db_input critical passwd/user-password-again || true
  160.             fi
  161.         fi
  162.         ;;
  163.         7)
  164.         db_get passwd/make-user
  165.         if [ "$RET" = true ] && ! is_system_user; then
  166.             db_get passwd/user-password-crypted || true
  167.             if ! test "$RET" ; then
  168.                 # Compare the two passwords, loop with message if not
  169.                 # identical, or if empty.
  170.                 db_get passwd/user-password
  171.                 USER_PW="$RET"
  172.                 db_get passwd/user-password-again
  173.                 if [ "$USER_PW" != "$RET" ]; then
  174.                     db_set passwd/user-password ""
  175.                     db_set passwd/user-password-again ""
  176.                     db_fset user-setup/password-mismatch seen false
  177.                     db_input critical user-setup/password-mismatch
  178.                     db_fset passwd/user-password seen false
  179.                     db_fset passwd/user-password-again seen false
  180.                     STATE=6
  181.                     continue
  182.                 fi
  183.                 if [ -z "$USER_PW" ]; then
  184.                     db_set passwd/user-password ""
  185.                     db_set passwd/user-password-again ""
  186.                     db_fset user-setup/password-empty seen false
  187.                     db_input critical user-setup/password-empty
  188.                     db_fset passwd/user-password seen false
  189.                     db_fset passwd/user-password-again seen false
  190.                     STATE=6
  191.                     continue
  192.                 fi
  193.             fi
  194.         fi
  195.         ;;
  196.         *)
  197.         break
  198.         ;;
  199.     esac
  200.  
  201.     if db_go; then
  202.         STATE=$(($STATE + 1))
  203.     else
  204.         STATE=$(($STATE - 1))
  205.     fi
  206.     #echo "ON STATE: $STATE"
  207. done
  208.  
  209. if [ "$STATE" = -1 ]; then
  210.     exit 10
  211. fi
  212.