#!/bin/sh -f
#
# description: The Heimdal Kerberos5 KDC Master server and its administration
#              daemons.
# processname: heimdal
# chkconfig: 2345 11 89
#
# Creation:	1997-04-10
# Auther:	JuK
# HISTORY
# 2006-01-02	JuK	port to Heimdal on Plamo Linux
# 2001-10-01	JuK	port to RH7.1
#
KDC=/usr/heimdal/libexec/kdc
kdcdaemon="heimdal (Kerberos 5 KDC)"
KADMIND=/usr/heimdal/libexec/kadmind
kdmdaemon="kadmind (Kerberos DB admin. daemon)"
KPASSWDD=/usr/heimdal/libexec/kpasswdd
kpwdaemon="kpasswdd (Kerberos password daemon)"

kdcpid=`ps ax | grep $KDC | grep -v grep | sed -e 's/^  *//' -e 's/ .*//'`
kdmpid=`ps ax | grep $KADMIND | grep -v grep | sed -e 's/^  *//' -e 's/ .*//'`
kpwpid=`ps ax | grep $KPASSWDD | grep -v grep | sed -e 's/^  *//' -e 's/ .*//'`

#
# start or stop kdc (KDC)
# start or stop kadmind (Kerberos DB admin. daemon)
# start or stop kpasswdd (Kerberos password daemon)
#
case $1 in
start)
  if [ -f $KDC ] ; then
    if [ -z "$kdcpid" ] ; then
      $KDC &
      echo "$0: $kdcdaemon started."
      kdcpid=`ps ax | grep $KDC | grep -v grep | sed -e 's/^  *//' -e 's/ .*//'`
      echo "$0: Proccess ID = $kdcpid"
    else
      echo "$0: $kdcdaemon is ALREADY running (PID = $kdcpid)."
    fi
  else
    echo "$0: $KDC does NOT exist."
    exit 1
  fi
  if [ -f $KADMIND ] ; then
    if [ -z "$kdmpid" ] ; then
      $KADMIND &
      echo "$0: $kdmdaemon started."
      kdmpid=`ps ax | grep $KADMIND | grep -v grep | sed -e 's/^  *//' -e 's/ .*//'`
      echo "$0: Proccess ID = $kdmpid"
    else
      echo "$0: $kdmdaemon is ALREADY running (PID = $kdmpid)."
    fi
  else
    echo "$0: $KADMIND does NOT exist."
    exit 1
  fi
  if [ -f $KPASSWDD ] ; then
    if [ -z "$kpwpid" ] ; then
      $KPASSWDD &
      echo "$0: $kpwdaemon started."
      kpwpid=`ps ax | grep $KPASSWDD | grep -v grep | sed -e 's/^  *//' -e 's/ .*//'`
      echo "$0: Proccess ID = $kpwpid"
    else
      echo "$0: $kpwdaemon is ALREADY running (PID = $kpwpid)."
    fi
  else
    echo "$0: $KPASSWDD does NOT exist."
    exit 1
  fi
  ;;
stop)
  if [ -f $KDC ] ; then
    if [ -n "$kdcpid" ] ; then
      kill $kdcpid
      echo "$0: $kdcdaemon has been killed."
    else
      echo "$0: $kdcdaemon is NOT running."
    fi
  fi
  if [ -f $KADMIND ] ; then
    if [ -n "$kdmpid" ] ; then
      kill $kdmpid
      echo "$0: $kdmdaemon has been killed."
    else
      echo "$0: $kdmdaemon is NOT running."
    fi
  fi
  if [ -f $KPASSWDD ] ; then
    if [ -n "$kpwpid" ] ; then
      kill $kpwpid
      echo "$0: $kpwdaemon has been killed."
    else
      echo "$0: $kpwdaemon is NOT running."
    fi
  fi
  ;;
*)
  echo "usage: $0 {start|stop}"
  # check kdc
  if [ -n "$kdcpid" ] ; then
    echo "$0: $kdcdaemon is ALREADY running (PID = $kdcpid)."
  else
    echo "$0: $kdcdaemon is NOT running."
  fi
  # check kadmind
  if [ -n "$kdmpid" ] ; then
    echo "$0: $kdmdaemon is ALREADY running (PID = $kdmpid)."
  else
    echo "$0: $kdmdaemon is NOT running."
  fi
  # check kpasswdd
  if [ -n "$kpwpid" ] ; then
    echo "$0: $kpwdaemon is ALREADY running (PID = $kpwpid)."
  else
    echo "$0: $kpwdaemon is NOT running."
  fi
  exit 1
  ;;
esac
exit 0
