#!/bin/sh
# make-accounts
#  erzeugt aus den Datensaetzen in 
#          /home/unixsoft/accmgr/Auto-Account/Zubearbeiten
# einen gueltigen Account und Speichert einen Informationssatz in
#           /home/unixsoft/accmgr/Auto-Account/Bearbeitet
#  ab
#  Bei Fehlern wird kein Account erzeugt und kein Informationssatz gespeichert
#  Der Datensatz bleibt unveraendert in
#           /home/unixsoft/accmgr/Auto-Account/Zubearbeiten
#  stehen
#
WORKHOME=/home/unixsoft/accmgr/Auto-Account
NEW=/home/unixsoft/accmgr/Auto-Account/Zubearbeiten
FERTIG=/home/unixsoft/accmgr/Auto-Account/Bearbeitet
ANTRAG=/home/unixsoft/accmgr/Auto-Account/antpr.tex
INDEX=/home/unixsoft/accmgr/Auto-Account/index.prot
shell="/bin/csh"
maschine=fob

cd $WORKHOME
umask 077
. ./get.hdr
echo -n "make-accounts: "
date
PATH=${PATH}:/usr/local/TeX/bin
export PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/TeX/lib
export LD_LIBRARY_PATH
# Pruefen ob root
rm -f /tmp/$$
touch /tmp/$$
USER=`ls -l /tmp/$$ | awk '{ print $3 }' `
rm /tmp/$$
if [ "$USER" != "root" ]
then
  echo "ERROR: Permission denied."
  echo "ERROR: You must be logged in as superuser."
  exit 1
fi


#
# pruefen der Gruppen
#
if [ $DEBUG = 1 ] ; then
  for grp in $MIGROUP $NEGROUP
  do
    grep "^${grp}:" /etc/group >/dev/null
    rc=$?
    if [ $rc -ne 0 ]
       then
         echo "ERROR: Group $grp does not exist!"
         exit 1
    fi
    grep "^${grp} " /etc/netgroup >/dev/null
    rc=$?
    if [ $rc -ne 0 ]
       then
         echo "ERROR: Net-Group $grp does not exist!"
         exit 1
    fi
  done
fi
cd $WORKHOME
umask 077
#
EXIST=`ls $NEW`
if [ "x$EXIST" = "x" ] ; then
    echo "make-accounts: nichts zu tun"
    exit
fi
for i in $NEW/*
do
  echo " "
  # einlesen der Werte
  unset Dozent
  unset IPAdresse
  . $i
  username=`echo $Name | \
         sed -e 's/+//g
                 s//e/g
                 s//a/g
                 s//i/g
                 s//oe/g
                 s//oe/g
                 s//ae/g
                 s//ae/g
                 s//ue/g
                 s//ue/g
                 s//ss/g' | \
         dd ibs=8 count=1 conv=lcase 2>/dev/null`
  hauptf=`echo $Hauptf | dd conv=lcase 2>/dev/null`
  nebenf=`echo $Nebenf | dd conv=lcase 2>/dev/null`
  if [ "x$nebenf" = "xinformatik" ] ; then
    grpname="$NEGROUP"
    vol="$NEVOL"
    volume="$NEVOLUME"
    comment1="$Vorname $Name, $Hauptf"
  fi
  if [ "x$hauptf" = "xinformatik" ] ; then
    grpname="$MIGROUP"
    vol="$MIVOL"
    volume="$MIVOLUME"
    comment1="$Vorname $Name"
  fi
  comment=`echo $comment1 | \
          sed -e 's/:/-/g
                  s//Ae/g
                  s//ae/g
                  s//Oe/g
                  s//oe/g
                  s//Ue/g
                  s//ue/g
                  s//a/g
                  s//i/g
                  s//e/g
                  s//\ss/g
                  s/+/ /g'`
  #	check if login name already exists
  vcname=`echo $Vorname | \
          sed -e 's//Ae/g
                  s//ae/g
                  s//Oe/g
                  s//oe/g
                  s//Ue/g
                  s//ue/g
                  s//a/g
                  s//i/g
                  s//e/g
                  s//\ss/g
                  s/+//g'`
  usersave=$username
  grep "^$username:" /etc/netpasswd/passwd >/dev/null
  rc=$?
  if [ $rc -eq 0 ]
  then
    vname=`echo $vcname | dd ibs=1 count=1 conv=lcase 2>/dev/null`
    username=$vname`echo $usersave | dd ibs=7 count=1  2>/dev/null`
    grep "^$username:" /etc/netpasswd/passwd >/dev/null
    rc=$?
    if [ $rc -eq 0 ]
    then
      vname=`echo $vcname | dd ibs=2 count=1 conv=lcase 2>/dev/null`
      username=$vname`echo $usersave | dd ibs=6 count=1  2>/dev/null`
      grep "^$username:" /etc/netpasswd/passwd >/dev/null
      rc=$?
      if [ $rc -eq 0 ]
      then
        echo -n "Passwd-entry: "
        grep "^$username:" /etc/netpasswd/passwd
	echo "ERROR: $username already exists on your system." 
        continue
      fi
    fi
  fi
  if echo "$username" | grep "[^0-9a-z]" > /dev/null
  then 
        echo "ERROR: $Name - invalid"
	echo "ERROR: Only numbers & lower case letters are permitted in user name." 
        continue
  fi
  X=`grep "^$username " /vol/mail-adm/lib/aliases`
  if [ "x$X" != "x" ]
    then
      echo ERROR: $username already exist in alias-file
      continue
  fi
  X=`grep "^$username:" /vol/mail-adm/lib/aliases`
  if [ "x$X" != "x" ]
    then
      echo ERROR: $username already exist in alias-file
      continue
  fi
  #
  #	Set default group id 
  #
  groupid=`grep "$grpname:" /etc/group | awk -F: '{printf $3}'`
  #
  lastuid=`grep ":$groupid:" /etc/netpasswd/passwd | awk -F: ' { xx = $3 } END { print xx } '`
  if [ "x$lastuid" = "x" ]
    then
      lastuid=$groupid
  fi
  userid=`bc <<EOF
$lastuid+1
EOF`
  if grep "^[^:]*:[^:]*:0*$userid:" /etc/netpasswd/passwd > /dev/null
  then
	echo "ERROR: User Id already used on system, please choose another."
        continue
  fi

  logdir="/vol/${maschine}-${vol}/${grpname}/${username}"

  passwort=`/bin/ssh zentrum "/usr/bin/mkpasswd -l 8"`
  key=`/bin/ssh zentrum "/usr/bin/mkpasswd -l 8"`
  passcrypt=`/home/unixsoft/accmgr/Auto-Account/passcrypt $passwort $key`
  passent="${username}:${passcrypt}:${userid}:${groupid}:${comment}:${logdir}:${shell}"
  echo Nutzer: $username, Netz-Gruppe: $grpname
  #  Start user $username in /etc/netpasswd/passwd
  echo $passent > /tmp/$$pwdentry
  rm -f /etc/netpasswd/opasswd
  cp /etc/netpasswd/passwd /etc/netpasswd/opasswd
  cat /tmp/$$pwdentry
  cat /etc/netpasswd/opasswd /tmp/$$pwdentry > /etc/netpasswd/passwd
  rm -f /tmp/$$pwdentry
  #
  # Start user $username in $grpname in /etc/netgroup
  rm -f /etc/netgroup.new
  cp /etc/netgroup /etc/netgroup.old
  /usr/bin/gawk '{ print ; if ( $0 ~ (GROUP " ")) { printf ("        (,%s,) \\\n",USER); } }'  USER=$username GROUP=\^$grpname /etc/netgroup >/etc/netgroup.new
  mv /etc/netgroup.new /etc/netgroup
  # 
  # 
  # #	Make home directory 
  #
  umask 002
  # 
  ssh fob /export/volume1/rbg/addusr/mkhome $username $grpname $volume $userid
  ssh -l root samy /www/server/etc/scripts/install/gen-new-user $username $logdir $userid $groupid
  # insert user in mail:/usr1/usr/lib/aliases
  #  $username : $username@mailslv1 
  ssh -l root mail /usr1/usr/bin/addmail $username mailslv1 $grpname
  # sw=0
  # while [ $sw -eq 0 ]
  # do
    # echo -n "Weiterer alias-Name [Nein=<NL>]:  "
    # read alias
    # if [ "x$alias" != "x" ]
    # then
      # X=`grep "^$alias " /vol/mail-adm/lib/aliases`
      # if [ "x$X" != "x" ]
      # then
        # echo $alias already exist in alias-file
        # continue
      # fi
      # ssh -l root mail /usr1/usr/bin/addalias $username mailslv1 $grpname $alias
    # else
      # echo keine weiteren alias-Eintragungen
      # sw=1
  #   fi
  # done
  # ssh -l root mail /usr1/usr/bin/newali

  FNAME=$FERTIG/${username}-${ImmJahr}-${ImmNr}
  sed  -e 's/\// /g' $i > $FNAME
  rm $i
  echo "`basename $i`  -  `basename $FNAME`" >> $INDEX
  echo "UID=\"$username\"" >>$FNAME
  echo "PASSWORT=\"$passwort\"" >>$FNAME
  echo "GRUPPE=\"$grpname\"" >>$FNAME
  echo "DATE=\"`date`\"" >>$FNAME

  echo $username  `date` >>adduser.prot

  # Antrag ausdrucken
  #  einlesen der Antragswerte
  .     $FNAME
  sed  -e "s/NAME/$Name/
           s/VORN/$Vorname/
           s/STAAT/$Staat/
           s/INR/$ImmNr/
           s/IJAHR/$ImmJahr/
           s/HFACH/$Hauptf/
           s/NFACH/$Nebenf/
           s/PLZ/$PLZ/
           s/ORT/$Ort/
           s/STRASSE/$Strasse/
           s/DOZENT/$Dozent/
           s/FON/$Telefon/
           s/UID/$UID/
           s/PASSWORD/$PASSWORT/
           s/DATE/$DATE/
           s/GRUPPE/$GRUPPE/" $ANTRAG | \
      sed -e 's//\"A/g
              s//\"a/g
              s//\"O/g
              s//\"o/g
              s//\"U/g
              s//\"u/g
              s//a/g
              s//i/g
              s//e/g
              s//\"s/g'   > tmp.tex
  latex tmp.tex 2>/dev/null 1>/dev/null
  dvips tmp   2>/dev/null
  rm tmp.*
done
