#!/bin/ksh
#
LFA4ULSBIN=/usr/local/bin/lfa4uls
LFA4ULSCONFDIR=/etc/uls/lfa4uls.d
#
if [ ! -f "$2" ]
 then
  if [ ! -d "$LFA4ULSCONFDIR" ]
   then
    echo "$LFA4ULSCONFDIR nicht vorhanden."
    exit 0
  elif [ `ls $LFA4ULSCONFDIR/*.conf 2>/dev/null | wc -l` -eq 0 ]
   then
    echo "Es sind keine Logdateien konfiguriert."
    exit 0
  fi
fi
#
#
start()
{ echo
  echo "Config File: $1"
  unset LFA4ULSCONF LFA4ULSPARS LFA4ULSUSER LFA4ULSLANG
  . "$1"
  if [ -z "$LFA4ULSCONF" ]
   then
    C=""
  else
    C="-c $LFA4ULSCONF"
  fi
  if [ -z "$LFA4ULSLANG" ]
   then
    L=""
  else
    L="LANG=$LFA4ULSLANG"
  fi
  if [ -z "$LFA4ULSUSER" ]
   then
    eval $L $LFA4ULSBIN -D $C $LFA4ULSPARS
  else
    su -c "$L $LFA4ULSBIN -D $C $LFA4ULSPARS" $LFA4ULSUSER
  fi
}

stp()
{ echo
  echo "Config File: $1"
  unset LFA4ULSCONF LFA4ULSPARS
  . "$1"
  if [ -z "$LFA4ULSCONF" ]
   then
    C=""
  else
    C="-c $LFA4ULSCONF"
  fi
  PID=`/bin/ps -ef | /usr/bin/grep "lfa4uls -D $C *$LFA4ULSPARS"| \
       /usr/bin/grep -v grep | /usr/bin/awk '$3 == "1" { print $2 }'`
  if [ ! -z "$PID" ]
   then
    kill $PID
  fi
}

restart()
{ stp "$1"
  start "$1"
}

status()
{ echo -n "Config File: $1  "
  unset LFA4ULSCONF LFA4ULSPARS
  . "$1"
  if [ -z "$LFA4ULSCONF" ]
   then
    C=""
  else
    C="-c $LFA4ULSCONF"
  fi
  PID=`/bin/ps -ef | /usr/bin/grep "lfa4uls -D $C *$LFA4ULSPARS"| \
       /usr/bin/grep -v grep | /usr/bin/awk '$3 == "1" { print $2 }'`
  if [ ! -z "$PID" ]
   then
    echo " running"
    return 0
  else
    echo " dead"
    return 1
  fi
}

case "$1" in
  start)
        if [ -z "$2" ]
         then
          echo "lfa4uls: ..."
          for i in `ls $LFA4ULSCONFDIR/*.conf`
           do
            start "$i"
          done
          echo started
        else
          if [ -f "$2" ]
           then
            start "$2"
          elif [ -f "$LFA4ULSCONFDIR/$2.conf" ]
           then
            start "$LFA4ULSCONFDIR/$2.conf"
          else
            echo "Kann Konfigurationsdatei $2 nicht finden"
          fi
        fi
        ;;
  stop)
        if [ -z "$2" ]
         then
          echo "lfa4uls: ..."
          for i in `ls $LFA4ULSCONFDIR/*.conf`
           do
            stp "$i"
          done
          echo stopped
        else
          if [ -f "$2" ]
           then
            stp "$2"
          elif [ -f "$LFA4ULSCONFDIR/$2.conf" ]
           then
            stp "$LFA4ULSCONFDIR/$2.conf"
          else
            echo "Kann Konfigurationsdatei $2 nicht finden"
          fi
        fi
        ;;
  restart)
        if [ -z "$2" ]
         then
          echo "lfa4uls: ..."
          for i in `ls $LFA4ULSCONFDIR/*.conf`
           do
            restart "$i"
          done
          echo restarted
        else
          if [ -f "$2" ]
           then
            restart "$2"
          elif [ -f "$LFA4ULSCONFDIR/$2.conf" ]
           then
            restart "$LFA4ULSCONFDIR/$2.conf"
          else
            echo "Kann Konfigurationsdatei $2 nicht finden"
          fi
        fi
	;;
  status)
        rc_status=0
        if [ -z "$2" ]
         then
          for i in `ls $LFA4ULSCONFDIR/*.conf`
           do
            status "$i"
            RET=$?
            if [ $RET -gt 0 ]
             then
              rc_status=$RET
            fi
          done
        else
          if [ -f "$2" ]
           then
            status "$2"
            RET=$?
            if [ $RET -gt 0 ]
             then
              rc_status=$RET
            fi
          elif [ -f "$LFA4ULSCONFDIR/$2.conf" ]
           then
            status "$LFA4ULSCONFDIR/$2.conf"
            RET=$?
            if [ $RET -gt 0 ]
             then
              rc_status=$RET
            fi
          else
            echo "Kann Konfigurationsdatei $2 nicht finden"
            exit 3
          fi
        fi
        exit $rc_status
        ;;
   *)
        echo "Usage: $0 start | stop | restart | status"
        exit 1
        ;;
esac
