#!/bin/sh
# erzeugt Accounts, die nicht automatisch aus den
# Nutzerinformationen mit make-account erzeugt werden
# konnten im Dialog.
# Holt Informationen aus $NEW
# Fertige Accounts werden in $FERTIG gespeichert.
#
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
PATH=${PATH}:/usr/local/TeX/bin
export PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/TeX/lib
export LD_LIBRARY_PATH
shell="/bin/csh"
maschine=fob

cd $WORKHOME
umask 077
. ./get.hdr

echo " "
date
# Pruefen ob root
rm -f /tmp/$$
touch /tmp/$$
USER=`ls -l /tmp/$$ | awk '{ print $3 }' `
rm /tmp/$$
if [ "$USER" != "root" ]
then
  echo "Permission denied."
  echo "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 "Group $grp does not exist!"
         exit 1
    fi
    grep "^${grp} " /etc/netgroup >/dev/null
    rc=$?
    if [ $rc -ne 0 ]
       then
         echo "Net-Group $grp does not exist!"
         exit 1
    fi
  done
fi

EXIST=`ls $NEW`
if [ "x$EXIST" = "x" ] ; then
      echo nichts zu tun
      exit 0
fi
for i in $NEW/*
do
  # einlesen der Werte
  unset Dozent
  unset IPAdresse
  . $i
  username=`echo $Name | 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' | sed -e 's/+/ /g'`
  sw=0
  while [ $sw -eq 0 ]
    do
      echo "Folgender Nutzer laesst sich nicht automatisch generieren:"
      echo "Nutzername: $Name, Vorname: $Vorname"
      echo -n "username (max. 8 Zeichen) [$username]: "
      read answer
      if [ "x$answer" != "x" ]
        then
          username=$answer
      fi
      sw=1
      #     check if the length of input is longer than 8
      length=`echo $username | wc -c`
      if [ "$length" -gt "9" ]
        then
          echo "User name can not be longer than eight characters."
          sw=0
          continue
      fi
      #check for illegal character (s)
      if echo "$username" | grep "[^0-9a-z]" > /dev/null
        then
          echo "Only numbers & lower case letters are permitted in user name."
          sw=0
          continue
      fi
      grep "^$username:" /etc/netpasswd/passwd >/dev/null
      rc=$?
      if [ $rc -eq 0 ]
        then
          echo "$user name already exists on your system. Choose another user name."
          echo -n "Passwd-entry: "
          grep "^$username:" /etc/netpasswd/passwd
          sw=0
          continue
      fi
      X=`grep "^$username " /vol/mail-adm/lib/aliases`
      if [ "x$X" != "x" ]
        then
          echo $username already exist in alias-file
          sw=0
          continue
      fi
      X=`grep "^$username:" /vol/mail-adm/lib/aliases`
      if [ "x$X" != "x" ]
        then
          echo $username already exist in alias-file
          sw=0
          continue
      fi
  done
  #
  #	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 "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
  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//\\`\{e\}/g
              s//\"s/g'   > tmp.tex
  latex tmp.tex 2>/dev/null 1>/dev/null
  dvips tmp   2>/dev/null
  rm tmp.*
done
