#!/bin/sh
# adduser script for use with shadow passwords and useradd command.
# by Hrvoje Dogan <hdogan@student.math.hr>, Dec 1995.
#
# Japanese enhancements by kojima <isle@st.rim.or.jp> Aug 1997
# Time-stamp: <2002-02-23 11:29:02 kojima>

backup_oldfiles() {
  DIR=$1
  shift
  while [ ! "x.$1" = "x." ] ; do
    FILE=${1##*/}
    if [ ! $FILE = "." -a ! $FILE = ".." ] ; then
      if [ -f $DIR/$FILE ] ; then
	if [ -f $DIR/$FILE.old ] ; then
	  backup_oldfiles $DIR $FILE.old
	  FILE=${1##*/}
	fi
	mv $DIR/$FILE $DIR/$FILE.old
      elif [ -d $DIR/$FILE ] ; then
	if [ -d $DIR/$FILE.org ] ; then
	  backup_oldfiles $DIR $FILE.org
	  FILE=${1##*/}
	fi
	mv $DIR/$FILE $DIR/$FILE.org
      fi
    fi
    shift
  done
}

echo "Can you read Japanese chars on this term ? [y/N]"
read ANS
if [ "$ANS" = "Y" -o "$ANS" = "y" ]; then
   echo "Japanese mode"
   LNG="JAPANESE"
else
   echo "No Japanese mode"
 fi

if [ "$LNG" = "JAPANESE" ]; then

echo
echo -n "桼Υ̾ꤷƤ(8 ʸ) []: "

read LOGIN
if [ -z "$LOGIN" ]
then 
	echo "ǰʤ̾ꤻˤϿʤޤ󡣡";exit
fi
echo
echo -n "$LOGIN Υ桼 ID ϡ [ưϿξ 10000 ˤʤޤ]: "
read ID
GUID="-u $ID"
if [ -z "$ID" ] 
then 
	GUID=""
fi

echo
echo -n "$LOGIN °륰롼פϡ[users]: "
read GID
GGID="-g $GID"
if [ -z "$GID" ] 
then 
	GGID="-g users"
    GID="users"
fi

#  useradd ΥХ˿餷
# changed on 11/07
#
#echo
#echo -n "$LOGIN ¾Υ롼פˤ°ޤ[]: "
#read AGID
#GAGID="-G $AGID"
#if [ -z "$AGID" ] 
#then 
#	GAGID=""
#fi

echo
echo -n "$LOGIN Υۡǥ쥯ȥϡ[/home/$LOGIN]: "
read HME

if [ -z "$HME" ]; then 
     HME="/home/$LOGIN"
fi
GHME="-d $HME"

echo -n "$LOGIN Ȥϡ [/bin/tcsh]: "
read SHL

if [ -z "$SHL" ]
  then 
	SHL="/bin/tcsh"
fi

GSHL="-s $SHL"

if [ -z "$SHL" ]
    then 
		GSHL="-s /bin/bash"
		SHL="/bin/bash"
fi

echo "$LOGIN Ȥ WM ϡ [afterstep]: "
echo "1 : AfterStep()"
echo "2 : qvwm(Windows95 )"
echo "3 : twm(ץ)"
echo "4 : KDE Desktop(KDE2ɬ)"

read WM

if [ -z "$WM" ]; then
   WM=1
elif [ "$WM" -lt "1" ]; then
    WM=1
elif [ "$WM" -gt "4" ]; then
    WM=1
fi

echo
echo -n "$LOGIN ΥȤͭ¤ϡ (MM/DD/YY) []: "
read EXP
GEXP="-e $EXP"
if [ -z "$EXP" ]
then GEXP=""
fi
echo
echo "ơºݤɬפʥȥޤǡϤǤǤ"
echo
echo New login name: $LOGIN
if [ -z "$GUID" ]; then 
  echo New UID: [Next available]
  else echo New UID: $UID
fi
if [ -z "$GGID" ]; then 
  echo Initial group: users
else 
  echo Initial group: $GID
fi

if [ -z "$GAGID" ]
then echo Additional groups: [none]
else echo Additional groups: $AGID
fi
if [ -z "$GHME" ]
then echo Home directory: /home/$LOGIN
else echo Home directory: $HME
fi
if [ -z "$GSHL" ]
then echo Shell: /bin/bash
else echo Shell: $SHL
fi
if [ -z "$GEXP" ]
then echo Expiry date: [no expiration]
else echo Expiry date: $EXP
fi

if [ -d /etc/pcmcia ]; then
  echo
  echo "Υ桼 Note PC ѤδĶȤޤ [Y/n]"
  read ANS
  if [ "$ANS" = "n" -o "$ANS" = "N" ]; then
     PCMCIA=no
  else
     PCMCIA=yes
  fi
fi

if [ -d $HME ]; then
   echo 
   echo "$HME ¸ߤޤ$HME/.tcshrc  $HME/.login "
   echo "Plamo ΥǥեȤ˽񤭴ޤޤ󤫡[y/N]"
   echo "Υե $HME/.tcshrc.old Τ褦˥Хååפ"
   echo "¸ޤ(.*.old ˤ̵ѤǾ񤭤ޤ;-)"
   read ANS
   if [ -z $ANS ]; then
      ANS="N"
   fi

   if [ "$ANS" != "Y" -a "$ANS" != "y" ]; then
      exit -1
   fi
fi

echo
echo "Ͽߤ Cntl-C 򲡤ƤΥǡǤ"
echo "Enter 򲡤ƤСȤޤ"
read FOO
echo
echo "Ⱥ"

if [ -d $HME ]; then   # backup old files
  ORIGDIR=/etc/template/Desktop
  backup_oldfiles $HME $ORIGDIR/.*
  backup_oldfiles $HME $ORIGDIR/*
fi

if [ "$PCMCIA" = "yes" ]; then
  /usr/sbin/useradd $GHME -m -k /etc/template/notePC $GEXP $GGID $GAGID $GSHL $GUID $LOGIN
else
  /usr/sbin/useradd $GHME -m -k /etc/template/Desktop $GEXP $GGID $GAGID $GSHL $GUID $LOGIN
fi

if [ -d $HME ]; then
  chmod 711 $HME
  cd $HME
  if [ "$WM" -eq "1" ]; then
     ln -sf .xinitrc_step .xinitrc
  elif [ "$WM" -eq "2" ]; then
     ln -sf .xinitrc_qvwm .xinitrc
  elif [ "$WM" -eq "3" ]; then
     ln -sf .xinitrc_twm .xinitrc
  elif [ "$WM" -eq "4" ]; then
     ln -sf .xinitrc_kde .xinitrc
  else 
     ln -sf .xinitrc_step .xinitrc
  fi
  ln -sf .xinitrc .xsession
  chown $LOGIN.$GID .xinitrc
  chown $LOGIN.$GID .xsession
fi

echo
/usr/bin/chfn $LOGIN
echo
/usr/bin/passwd $LOGIN
echo
echo "Ͽλޤ"

else

echo
echo -n "Login name for new user (8 characters or less) []: "
read LOGIN
if [ -z "$LOGIN" ]
then echo "Come on, man, you can't leave the login field empty...";exit
fi
echo
echo -n "User id for $LOGIN [ defaults to next available]: "
read ID
GUID="-u $ID"
if [ -z "$ID" ] 
then GUID=""
fi

echo
echo -n "Initial group for $LOGIN [users]: "
read GID
GGID="-g $GID"
if [ -z "$GID" ]
then GGID="-g users"
     GID="users"
fi

#  useradd ΥХ˿餷
# changed on 11/07
#
#echo -n "Additional groups for $LOGIN []: "
#echo
#read AGID
#GAGID="-G $AGID"
#if [ -z "$AGID" ]
#then GAGID=""
#fi

echo
echo -n "$LOGIN's home directory [/home/$LOGIN]: "
read HME

if [ -z "$HME" ]; then 
     HME="/home/$LOGIN"
fi
GHME="-d $HME"

echo
echo -n "$LOGIN's shell [/bin/tcsh]: "
read SHL

if [ -z "$SHL" ]
  then 
	SHL="/bin/tcsh"
fi

GSHL="-s $SHL"
if [ -z "$SHL" ]
then GSHL="-s /bin/bash"
     SHL="/bin/bash"
fi

echo "$LOGIN's WM ? [afterstep]: "
echo "1 : AfterStep(recommended)"
echo "2 : qvwm(Windows95 like)"
echo "3 : twm(most simple)"
echo "4 : KDE desktop(need KDE2)"
read WM

if [ -z "$WM" ]; then
   WM=1
elif [ "$WM" -lt "1" ]; then
    WM=1
elif [ "$WM" -gt "4" ]; then
    WM=1
fi

echo
echo -n "$LOGIN's account expiry date (MM/DD/YY) []: "
read EXP
GEXP="-e $EXP"
if [ -z "$EXP" ]
then GEXP=""
fi
echo
echo "OK, I'm about to make a new account. Here's what you entered so far:"
echo
echo New login name: $LOGIN
if [ -z "$GUID" ] 
then echo New UID: [Next available]
else echo New UID: $UID
fi
if [ -z "$GGID" ]
then echo Initial group: users
else echo Initial group: $GID
fi
if [ -z "$GAGID" ]
then echo Additional groups: [none]
else echo Additional groups: $AGID
fi
if [ -z "$GHME" ]
then echo Home directory: /home/$LOGIN
else echo Home directory: $HME
fi
if [ -z "$GSHL" ]
then echo Shell: /bin/bash
else echo Shell: $SHL
fi
if [ -z "$GEXP" ]
then echo Expiry date: [no expiration]
else echo Expiry date: $EXP
fi

if [ -d /etc/pcmcia ]; then
  echo
  echo "Does this user uses Note PC environment setting? [Y/n]"
  read ANS
  if [ "$ANS" = "n" -o "$ANS" = "N" ]; then
     PCMCIA=no
  else
     PCMCIA=yes
  fi
fi

if [ -d $HME ]; then
   echo 
   echo "$HME exists. $HME/.tcshrc or $HME/.login will be"
   echo "overwritten by Plamo's default configuration files. OK?[y/N]"
   read ANS
   if [ -z $ANS ]; then
      ANS="N"
   fi

   if [ "$ANS" != "Y" -a "$ANS" != "y" ]; then
      exit -1
   fi
fi

echo
echo "This is it... if you want to bail out, hit Control-C.  Otherwise, press"
echo "ENTER to go ahead and make the account."
read FOO
echo
echo Making new account...

if [ -d $HME ]; then   # backup old files
  ORIGDIR=/etc/template/Desktop
  backup_oldfiles $HME $ORIGDIR/.*
  backup_oldfiles $HME $ORIGDIR/*
fi

if [ "$PCMCIA" = "yes" ]; then
  /usr/sbin/useradd $GHME -m -k /etc/template/notePC $GEXP $GGID $GAGID $GSHL $GUID $LOGIN
else
  /usr/sbin/useradd $GHME -m -k /etc/template/Desktop $GEXP $GGID $GAGID $GSHL $GUID $LOGIN
fi
if [ -d $HME ]; then
  chmod 711 $HME
  cd $HME
  if [ "$WM" -eq "1" ]; then
     ln -sf .xinitrc_step .xinitrc
  elif [ "$WM" -eq "2" ]; then
     ln -sf .xinitrc_qvwm .xinitrc
  elif [ "$WM" -eq "3" ]; then
     ln -sf .xinitrc_twm .xinitrc
  elif [ "$WM" -eq "4" ]; then
     ln -sf .xinitrc_kde .xinitrc
  else 
     ln -sf .xinitrc_step .xinitrc
  fi
  ln -sf .xinitrc .xsession
  chown $LOGIN.$GID .xinitrc
  chown $LOGIN.$GID .xsession
fi
echo
/usr/bin/chfn $LOGIN
echo
/usr/bin/passwd $LOGIN
echo

echo "Done..."

fi

if [ -x /usr/sbin/sendmail ]; then
  if [ ! -f /usr/spool/mail/$LOGIN ]; then
    cat /etc/template/mime-mail.sample > /usr/spool/mail/$LOGIN
    chown $LOGIN.$GID /usr/spool/mail/$LOGIN
    chmod og-rwx /usr/spool/mail/$LOGIN
  fi
fi
