:
#
# Eintragung weiterer Anwender (Benutzer) - Accounts :
#  Created      :       Mon, 05-Mar-90 / 14:53 / (pf@artcom0)
#  Version      :       Fri, 26-Jan-96 / 01:16 / (pf,rb,mk+)
#
Parm="$*"
#
[ -z "$LANGUAGE" ] && LANGUAGE=deu
[ -z "$BITSLIB" ] && BITSLIB=/bitslib
[ -z "$OS" ] && . $BITSLIB/bin/setOS

MSG_CAT=$BITSLIB/service/SERVImsg.${LANGUAGE}
. $BITSLIB/bin/.Messages

# einige nuetzliche Bourne Shell Prozeduren
#
# PROCEDURE Yes : Prompt for yes or no answer - returns non-zero for no
Yes() {
	while	read yn
	do	case $yn in
		       [yYjJ])	return 0 	;;
		       [nN])	return 1	;;
		       *) Error 1
		       ;;
		esac
	done
}
#
# PROCEDURE Error (msgNum : CARDINAL);
Error() {
	PARAM=$1
	(echo "\007\c"; Print moreuser 2;
	 echo " : "; PrintLn moreuser ${PARAM}) >&2
	return 1
}
#
# PROCEDURE Super : BOOLEAN;  (* are we root ? else error ! *)
Super() {
    if [ -w /etc/passwd ]
    then	return 0
    else	
#> Sie muessen Superuser ('root') -Zugriffsrechte haben.
		Error 3
#> Der Benutzer 'service' sollte die userid-Nummer '0' haben !
#> Bitte pruefen Sie, ob Sie sich als service eingeloggt haben und was
#> in der /etc/passwd steht.
		MultiPrint moreuser 4 5 6
	    return 1
    fi
}
#
Findfreeuser () {
	already=`fgrep ":$usernum:" /etc/passwd`
	while [ "$already" ] 
	do	usernum=`expr $usernum + 1`
		already=`fgrep $usernum /etc/passwd`
	done

	# > "Erste freie Benutzernummer (ueber 1000) = $usernum."
	GetMessage moreuser 7
	echo $MESSAGE
}
#
InsertAdminMailAlias() {
	if   [ -w /usr/lib/mail/aliases ] && fgrep 'mum' /usr/lib/mail/aliases
	then #> Soll dieser Benutzer in Zukunft der Systemverwalter sein ? \c
	     Print moreuser 8
	     if Yes
	     then awk '{ if ($0 == "admin: mum") {
			     printf "admin: %s\n", user;
			 } else {
			     print $0;
			 }
		       }' user=${user} </usr/lib/mail/aliases > /tmp/aliases
		  cat /tmp/aliases >/usr/lib/mail/aliases
		  rm -f /tmp/aliases
		  /usr/lib/mail/aliashash
	     fi
	fi
}
#
EditPasswd() {
    case $OS in
	XENIX) chmod 644 /etc/passwd
	       echo "${user}::${usernum}:${group}:${fullname}:/projects/${user}:/bin/csh" >>/etc/passwd
	       ;;
	SCOSV|IRIX)
	       chmod 644 /etc/passwd
	       echo "${user}::${usernum}:${group}:${fullname}:/projects/${user}:/usr/local/bin/bash" >>/etc/passwd
	       ;;
	SunOS) /usr/sbin/useradd -c "$fullname" -d /projects/$user \
		       -g $group -s /usr/local/bin/bash -u $usernum $user
	       ;;
    esac
}
#
InsertUser() {
	if [ ! "$1" = "Recreate" ]
	then #> Richtiger voll ausgeschriebener Benutzername ? \c
	     Print moreuser 9
	     fullname=`line`
	     EditPasswd
	     passwd $user
	fi
	cd /projects
	mkdir $user 2>/dev/null
	cd $user || exit 1
	chmod 775 . 
	echo "source /bitslib/mustermann/.cshrc"  > .cshrc
	echo "source /bitslib/mustermann/.login"  > .login
	echo "source /bitslib/mustermann/.logout" > .logout
	echo ". /bitslib/mustermann/.profile" > .profile
	echo "so /bitslib/mustermann/.exrc" > .exrc
	chown $user  . .cshrc .log* .exrc .profile
	chgrp $group . .cshrc .log* .exrc .profile
	chmod 664      .cshrc .log* .exrc .profile
	if   [ -r /bitslib/mustermann/.bashrc ]
	then echo ". /bitslib/mustermann/.bash_profile"  >.bash_profile
	     echo ". /bitslib/mustermann/.bash_logout"   >.bash_logout
	     echo ". /bitslib/mustermann/.bashrc"        >.bashrc
	     echo ". /bitslib/mustermann/.bash_interact" >.bash_interact
	     chown $user  .bash*
	     chgrp $group .bash*
	     chmod 664    .bash*
	fi
	if   [ "$OS" = SunOS ]
	then echo ". /bitslib/mustermann/.xinitrc"  >.xinitrc
	     cp /bitslib/mustermann/.openwin* .
	     mv .openwin-m.de  .openwin-menu.de
	     mv .openwin-mp.de .openwin-menu-programs.de
	     mv .openwin-m     .openwin-menu
	     mv .openwin-mp    .openwin-menu-programs
	     chown $user  .xinitrc .openwin*
	     chgrp $group .xinitrc .openwin*
	     chmod 664    .xinitrc .openwin*
	     chmod 775    .openwin-init .xinitrc
	fi
	if   [ "$OS" = IRIX ]
	then cp /bitslib/mustermann/.4Dwmrc .
	     chown $user  .4Dwmrc
	     chgrp $group .4Dwmrc
	     chmod 664    .4Dwmrc
	     chmod 775    .4Dwmrc
	fi
	InsertAdminMailAlias
	usernum=`expr $usernum + 1`
}
#
# ***** main part starts here : *****
#
Super || exit 1
#
clear
chmod 644 /etc/passwd
if [ "$Parm" ]
then	group=$Parm
	if  [ $group -eq 0 ]
	then	#> --- Die Gruppe muss als Nummer angegeben werden ---
		Error 10
		cat /etc/group
		#> --- Waehle die Nummer aus der 'group' - Datei ---
		PrintLn moreuser 11
		exit
	fi
else    host=`uname -n`
	if [ "$host" = "artcom1" ] || [ "$host" = "artcom2" ] || \
	   [ "$host" = "artcom3" ] || [ "$host" = "artcomd" ]
	then group=65 # group 'artcom' on our machines
	else group=101 # this is group 'anwender' on distributed machines !
	fi
fi
#
GetMessage moreuser 12 #> Neue Benutzer werden der Gruppe '$group' zugeordnet !
echo $MESSAGE
GetMessage moreuser 13 #> Ist dies nicht erwuenscht, dann bitte \"$0\"
echo $MESSAGE
#> mit der gewuenschten Benutzergruppe als Parameter aufrufen.
PrintLn moreuser 14
#
usernum=1000
while true ; do
	Findfreeuser
	while true ; do
		#> Neues Benutzerkuerzel (<return> beendet) ? \c
		Print moreuser 15
		read user
		if [ "$user" ]
		then    pattern="^${user}:"
			already=`grep $pattern /etc/passwd`
			if [ "$already" ] 
			then
Error 16 #> --- Diesen Benutzer gibt es bereits (in /etc/passwd) : ---
echo $already
echo "----------------------------------------------------------"
#> Soll nur sein 'Heimatverzeichnis' neu eingerichtet werden ? \c
				Print moreuser 17
				if Yes
				then InsertUser Recreate
				fi
			else
				InsertUser
			fi
		else
			if   [ "$OS" = "SCOSV" ]
			then fixmog
			fi
			break 2
		fi
	done
done
