#!/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 [ "X$kdcpid" = "X" ]; 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 [ "X$kdmpid" = "X" ]; 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 [ "X$kpwpid" = "X" ]; 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 [ "X$kdcpid" != "X" ]; then
			/bin/kill $kdcpid
			echo "$0: $kdcdaemon has been killed."
		else
			echo "$0: $kdcdaemon is NOT running."
		fi
	fi

	if [ -f $KADMIND ]; then
		if [ "X$kdmpid" != "X" ]; then
			/bin/kill $kdmpid
			echo "$0: $kdmdaemon has been killed."
		else
			echo "$0: $kdmdaemon is NOT running."
		fi
	fi

	if [ -f $KPASSWDD ]; then
		if [ "X$kpwpid" != "X" ]; then
			/bin/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 [ "X$kdcpid" != "X" ]; then
		echo "$0: $kdcdaemon is ALREADY running(PID = $kdcpid)."
	else
		echo "$0: $kdcdaemon is NOT running."
	fi

	# check kadmind
	if [ "X$kdmpid" != "X" ]; then
		echo "$0: $kdmdaemon is ALREADY running(PID = $kdmpid)."
	else
		echo "$0: $kdmdaemon is NOT running."
	fi

	# check kpasswdd
	if [ "X$kpwpid" != "X" ]; then
		echo "$0: $kpwdaemon is ALREADY running(PID = $kpwpid)."
	else
		echo "$0: $kpwdaemon is NOT running."
	fi
	exit 1
	;;
esac
exit 0
