#!/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
#
# Modified by Motohiro Takasaki (moto@takasaki-clinic.com) No Warranty
#
#


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(NeXT 風)"
echo "2 : fvwm95(Windows95 風)"
echo "3 : fvwm(ごくシンプル)"

read WM

if [ -z "$WM" ]; then
   WM=1
elif [ "$WM" -lt "1" ]; then
    WM=1
elif [ "$WM" -gt "3" ]; 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/.cshrc や $HME/.login は"
   echo "Plamo のデフォルトの設定に書き換えられますが構いませんか？[y/N]"
   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
    if [ -f $HME/.Xdefaults ]; then
	mv $HME/.Xdefaults $HME/.old.Xdefaults
    fi

    if [ -f $HME/.bashrc ]; then
	mv $HME/.bashrc $HME/.old.bashrc
    fi

    if [ -f $HME/.cshrc ]; then
	mv $HME/.cshrc $HME/.old.cshrc
    fi

    if [ -f $HME/.dir_colors ]; then
	mv $HME/.dir_colors $HME/.old.dir_colors
    fi

    if [ -f $HME/.eggrc ]; then
	mv $HME/.eggrc $HME/.old.eggrc
    fi

    if [ -f $HME/.emacs ]; then 
	mv $HME/.emacs $HME/.old.emacs
    fi

    if [ -f $HME/.fvwm2rc95 ]; then
	mv $HME/.fvwm2rc95 $HME/.old.fvwm2rc95
    fi

    if [ -f $HME/.fvwm95rc ]; then
	mv $HME/.fvwm95rc $HME/.old.fvwm95rc
    fi

    if [ -f $HME/.fvwm95rc ]; then
	mv $HME/.fvwm95rc $HME/.old.fvwm95rc
    fi

    if [ -f $HME/.fvwmrc ]; then
	mv $HME/.fvwmrc $HME/.old.fvwmrc
    fi

    if [ -f $HME/.inputrc ]; then
	mv $HME/.inputrc $HME/.old.inputrc
    fi

    if [ -f $HME/.mh_profile ]; then
	mv $HME/.mh_profile $HME/.old.mh_profile
    fi

    if [ -f $HME/.mnews_setup ]; then
	mv $HME/.mnews_setup $HME/.old.mnews_setup
    fi

    if [ -f $HME/.screenrc ]; then
        mv $HME/.screenrc $HME/.old.screenrc
    fi

    if [ -f $HME/.skk ]; then
        mv $HME/.skk $HME/.old.skk
    fi

    if [ -f $HME/.tknmzrc ]; then
	mv $HME/.tknmzrc $HME/.old.tknmzrc
    fi

    if [ -f $HME/.xinitrc_fvwm ]; then
	mv $HME/.xinitrc_fvwm $HME/.old.xinitrc_fvwm
    fi

    if [ -f $HME/.xinitrc_fvwm95-2 ]; then
	mv $HME/.xinitrc_fvwm95-2 $HME/.old.xinitrc_fvwm95-2
    fi

    if [ -f $HME/.xinitrc_step ]; then
	mv $HME/.xinitrc_step $HME/.old.xinitrc_step
    fi

    if [ -d $HME/Mail ]; then
	mv $HME/Mail $HME/Mail.org
    fi

    if [ -d $HME/Sample ]; then
        mv $HME/Sample $HME/Sample.org
    fi
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_fvwm95-2 .xinitrc
  elif [ "$WM" -eq "3" ]; then
     ln -sf .xinitrc_fvwm .xinitrc
  else 
     ln -sf .xinitrc_step .xinitrc
  fi
  chown $LOGIN.$GID .xinitrc
fi

echo
/usr/bin/chfn $LOGIN
echo
/usr/bin/passwd $LOGIN
echo

/var/qmail/bin/maildirmake /home/$LOGIN/Maildir
chown -R $LOGIN /home/$LOGIN/Maildir
chgrp -R $GID /home/$LOGIN/Maildir
echo "./Maildir/" >/home/$LOGIN/.qmail
chown $LOGIN /home/$LOGIN/.qmail 
chgrp $GID /home/$LOGIN/.qmail 

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(NeXT like)"
echo "2 : fvwm95(Windows95 like)"
echo "3 : fvwm(most simple)"
read WM

if [ -z "$WM" ]; then
   WM=1
elif [ "$WM" -lt "1" ]; then
    WM=1
elif [ "$WM" -gt "3" ]; 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/.cshrc 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
    if [ -f $HME/.Xdefaults ]; then
	mv $HME/.Xdefaults $HME/.old.Xdefaults
    fi

    if [ -f $HME/.bashrc ]; then
	mv $HME/.bashrc $HME/.old.bashrc
    fi

    if [ -f $HME/.cshrc ]; then
	mv $HME/.cshrc $HME/.old.cshrc
    fi

    if [ -f $HME/.dir_colors ]; then
	mv $HME/.dir_colors $HME/.old.dir_colors
    fi

    if [ -f $HME/.eggrc ]; then
	mv $HME/.eggrc $HME/.old.eggrc
    fi

    if [ -f $HME/.emacs ]; then 
	mv $HME/.emacs $HME/.old.emacs
    fi

    if [ -f $HME/.fvwm2rc95 ]; then
	mv $HME/.fvwm2rc95 $HME/.old.fvwm2rc95
    fi

    if [ -f $HME/.fvwm95rc ]; then
	mv $HME/.fvwm95rc $HME/.old.fvwm95rc
    fi

    if [ -f $HME/.fvwm95rc ]; then
	mv $HME/.fvwm95rc $HME/.old.fvwm95rc
    fi

    if [ -f $HME/.fvwmrc ]; then
	mv $HME/.fvwmrc $HME/.old.fvwmrc
    fi

    if [ -f $HME/.inputrc ]; then
	mv $HME/.inputrc $HME/.old.inputrc
    fi

    if [ -f $HME/.mh_profile ]; then
	mv $HME/.mh_profile $HME/.old.mh_profile
    fi

    if [ -f $HME/.mnews_setup ]; then
	mv $HME/.mnews_setup $HME/.old.mnews_setup
    fi

    if [ -f $HME/.screenrc ]; then
        mv $HME/.screenrc $HME/.old.screenrc
    fi

    if [ -f $HME/.skk ]; then
        mv $HME/.skk $HME/.old.skk
    fi

    if [ -f $HME/.tknmzrc ]; then
	mv $HME/.tknmzrc $HME/.old.tknmzrc
    fi

    if [ -f $HME/.xinitrc_fvwm ]; then
	mv $HME/.xinitrc_fvwm $HME/.old.xinitrc_fvwm
    fi

    if [ -f $HME/.xinitrc_fvwm95-2 ]; then
	mv $HME/.xinitrc_fvwm95-2 $HME/.old.xinitrc_fvwm95-2
    fi

    if [ -f $HME/.xinitrc_step ];  then
	mv $HME/.xinitrc_step $HME/.old.xinitrc_step
    fi

    if [ -d $HME/Mail ]; then
	mv $HME/Mail $HME/Mail.org
    fi

    if [ -d $HME/Sample ]; then
        mv $HME/Sample $HME/Sample.org
    fi
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_fvwm95-2 .xinitrc
  elif [ "$WM" -eq "3" ]; then
     ln -sf .xinitrc_fvwm .xinitrc
  else 
     ln -sf .xinitrc_step .xinitrc
  fi
  chown $LOGIN.$GID .xinitrc
fi
echo
/usr/bin/chfn $LOGIN
echo
/usr/bin/passwd $LOGIN
echo

/var/qmail/bin/maildirmake /home/$LOGIN/Maildir
chown -R $LOGIN /home/$LOGIN/Maildir
chgrp -R $GID /home/$LOGIN/Maildir
echo "./Maildir/" >/home/$LOGIN/.qmail
chown $LOGIN /home/$LOGIN/.qmail
chgrp $GID /home/$LOGIN/.qmail


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










