#!/bin/sh
shout()  { echo "$0: $@" >&2; }
barf() { shout "fatal: $@"; exit 111; }
safe()  { "$@" || barf "cannot $@"; }

here=`env - PATH=$PATH pwd`
mypwd=${here%package}
mypwd=${mypwd%/}
home=`head -1 $mypwd/conf-home`

if [  -f $mypwd/conf-ids ]
then
  sqmailids=`grep -v "^#" $mypwd/conf-ids | grep ":" | tr ' ' '_'`
else
  barf "Can't open file '$mypwd/conf-ids' with sqmail ids!"
fi

unix=`uname -a | cut -d' ' -f1 | tr [a-z] [A-Z]`

if [ "$unix" = "LINUX" ]
then
  qshl="/bin/false"
  shout "Linux (Shell: $qshl):"

  for line in $sqmailids
  do
    if [ `echo $line | grep "group"` ]
    then
	qgid=`echo "$line" | cut -d":" -f1`
	qgrp=`echo "$line" | cut -d":" -f2`
	if [ `grep -c ^$qgrp /etc/group` -eq 0 ]
        then
          safe groupadd -g $qgid $qgrp
        else
	  shout "Group '$qgrp' already existing!"
        fi
    fi

    if [ `echo $line | grep "user"` ]
    then
	quid=`echo "$line" | cut -d":" -f1`
	qusr=`echo "$line" | cut -d":" -f2`
	qcom=`echo "$line" | cut -d":" -f3 | tr "_" " "`
	qgrp=`echo "$line" | cut -d":" -f4`
	qdir="$home/`echo "$line" | cut -d":" -f5`"
	if [ `grep -c $qusr /etc/passwd` -eq 0 ]
	then
      	  shout "Generating user: $qusr:$quid - $qgr - $qdir - $qshl - $qcom"
          safe useradd -u $quid -g $qgrp -d $qdir $qusr -s $qshl -c "$qcom"
        else
	  shout "User '$qusr' already existing!"
	fi
    fi
  done

elif [ `echo "$unix" | grep "BSD"` ]
then
  qshl="/sbin/nologin"
  shout "BSD ($unix) (Shell: $qshl):"

  for line in $sqmailids
  do
    if [ `echo $line | grep "group"` ]
    then
	qgid=`echo "$line" | cut -d":" -f1`
	qgrp=`echo "$line" | cut -d":" -f2`
	if [ `grep -c ^$qgrp /etc/group` -eq 0 ]
        then
          if [ `echo "$unix" | grep "OPENBSD"` ]
          then
            safe groupadd -g $qgid $qgrp 
          else
            safe pw groupadd $qgrp -g $qgid $qgrp 
          fi
        else 
	  shout "Group '$qgrp' already existing!"
        fi
    fi
    if [ `echo $line | grep "user"` ]
    then
	quid=`echo "$line" | cut -d":" -f1`
	qusr=`echo "$line" | cut -d":" -f2`
	qcom=`echo "$line" | cut -d":" -f3 | tr "_" " "`
	qgrp=`echo "$line" | cut -d":" -f4`
	qdir="$home/`echo "$line" | cut -d":" -f5`"
	if [ `grep -c $qusr /etc/passwd` -eq 0 ]
	then
      	  shout "Generating user: $qusr:$quid - $qgrp - $qdir - $qshl - $qcom"
          if [ `echo "$unix" | grep "OPENBSD"` ]
          then
            safe useradd -u $quid -g $qgrp -d $qdir -s $qshl -c "$qcom" $qusr
          else
            safe pw useradd $qusr -u $quid -g $qgrp -d $qdir -s $qshl -c "$qcom"
          fi
        else
	  shout "User '$qusr' already existing!"
	fi
    fi
  done

else
   shout "Unix OS not recognized; please install s/qmail user/groups manually \\
 and continue with installation step-by-step."
fi

exit 0