#!/bin/sh
#ident "@(#)S86slapd	1.22 08/26/97 SMI"
#
#
# Copyright 08/26/97 Sun Microsystems, Inc. All Rights Reserved
#
#
# Start/Stop Simple Ldap Daemon
#
trap 'echo "$0: Interrupted "; exit 1' INT QUIT

USAGE="Usage: `basename $0` {start | stop }"
BASEDIR=`/bin/pkgparam SUNWsds BASEDIR 2>/dev/null`
if [ -z "$BASEDIR" ]	# pkg not installed
then
	BASEDIR=/opt	# set defaul. Maybe the dir is nfs mounted
fi
PATH=/usr/sbin:/usr/bin:$BASEDIR/SUNWconn/ldap/lib:$BASEDIR/SUNWconn/ldap/sbin:$BASEDIR/SUNWconn/ldap/bin
export PATH
#
# Set NLSPATH for I18N
#
NLSPATH=${NLSPATH}:${BASEDIR}/SUNWconn/lib/locale/%L/%N.cat
export NSLPATH

#
# test if licensing file exists, if it doesn't, don't start the process
#
if [ ! -r $BASEDIR/SUNWconn/license_dir/slapd* ]
then
		#
		# No license installed for that process, work in non license mode
		#
		NOLIC="-l"
fi
#
# set the global variables as set by the admin tool
#
if [ -f /etc/opt/SUNWconn/ldap/current/sdserver.ini ]
then
	. /etc/opt/SUNWconn/ldap/current/sdserver.ini
fi
if [ -z "$logfile" ]
then
	logfile=/var/opt/SUNWconn/ldap/log/slapd.log
fi
logdir=`dirname $logfile`
case "$1" in
'start')

	if [ -n "$LdapPort" ]
	then
		LdapPort="-p $LdapPort"
	fi
	if [ -n "$MaxCnx" ]
	then
		MaxCnx="-n $MaxCnx"
	fi
	pid=`ps -fe | grep lib/slapd | grep -v grep|awk '{print $2}'`
	if [ -n "$pid" ]
	then
		echo "Another slapd process is already running"
		exit 1
	fi
	echo "Starting Slapd daemon \c"
	test -f $logfile.8 && mv $logfile.8  $logfile.9
	test -f $logfile.7 && mv $logfile.7  $logfile.8
	test -f $logfile.6 && mv $logfile.6  $logfile.7
	test -f $logfile.5 && mv $logfile.5  $logfile.6
	test -f $logfile.4 && mv $logfile.4  $logfile.5
	test -f $logfile.3 && mv $logfile.3  $logfile.4
	test -f $logfile.2 && mv $logfile.2  $logfile.3
	test -f $logfile.1 && mv $logfile.1  $logfile.2
	test -f $logfile   && mv $logfile    $logfile.1
	touch $logfile
	$BASEDIR/SUNWconn/ldap/lib/slapd $LdapPort $MaxCnx $NOLIC >/dev/null 2>&1
	until [ -s $logfile ]
	do
		echo ".\c"
		pid=`ps -fe | grep lib/slapd | grep -v grep|awk '{print $2}'`
		if [ -z "$pid" ]
		then
			echo "Slapd not started"
			cat $logfile
			exit 1
		fi
		sleep 1
	done
	echo
	cat $logfile
	#
	# slurpd daemon if needed to be started
	#
	if [ "$StartSlurpd" = "true" ]
	then
		cd /var/opt/SUNWconn/ldap/log
		test -f slurpd.log.8 && mv slurpd.log.8  slurpd.log.9
		test -f slurpd.log.7 && mv slurpd.log.7  slurpd.log.8
		test -f slurpd.log.6 && mv slurpd.log.6  slurpd.log.7
		test -f slurpd.log.5 && mv slurpd.log.5  slurpd.log.6
		test -f slurpd.log.4 && mv slurpd.log.4  slurpd.log.5
		test -f slurpd.log.3 && mv slurpd.log.3  slurpd.log.4
		test -f slurpd.log.2 && mv slurpd.log.2  slurpd.log.3
		test -f slurpd.log.1 && mv slurpd.log.1  slurpd.log.2
		test -f slurpd.log   && mv slurpd.log    slurpd.log.1
		echo "Starting Slurpd daemon"
		$BASEDIR/SUNWconn/ldap/lib/slurpd
	fi
	;;   

'stop')

	pidslap=`ps -fe | grep lib/slapd | grep -v grep|awk '{print $2}'`
	if [ -n "$pidslap" ]
	then
		echo "Stopping Slapd daemon"
		kill -TERM $pidslap
	fi
	#
	# stop the slurpd daemon
	#
	pidslurp=`ps -fe | grep lib/slurpd | grep -v grep|awk '{print $2}'`
	if [ -n "$pidslurp" ]
	then
		kill -TERM $pidslurp
		echo "Stopping Slurpd daemon"
	fi
	#
	#  check that processes stopped
	#
	if [ -z "$pidslap" -a -z "$pidslurp" ]
	then
		exit 0
	fi
	sleep 1
	pidslapd=`ps -fe | grep lib/slapd | grep -v grep|awk '{print $2}'`
	pidslurpd=`ps -fe | grep lib/slurpd | grep -v grep|awk '{print $2}'`
	if [ -n "$pidslapd" -o -n "$pidslurpd" ]
	then
		sleep 2
		if [ -n "$pidslap" ]
		then
			pid=`ps -fe | grep lib/slapd | grep -v grep|awk '{print $2}'`
			if [ -n "$pid" ]
			then
				kill -9 $pid
				echo "Slapd daemon killed"
			else
				echo "Slapd daemon stopped"
			fi
		fi
	  rm -f /var/opt/SUNWconn/ldap/log/slapd.pid
		if [ -n "$pidslurp" ]
		then
			pid=`ps -fe | grep lib/slurpd | grep -v grep|awk '{print $2}'`
			if [ -n "$pid" ]
			then
				kill -9 $pid
				echo "Slurpd daemon killed"
			else
				echo "Slurpd daemon stopped"
			fi
		fi
	else
		if [ -n "$pidslap" ]
		then
			echo "Slapd daemon stopped"
		fi
		if [ -n "$pidslurp" ]
		then
			echo "Slurpd daemon stopped"
		fi
	fi

	;;


*)
	echo ${USAGE}


	exit 1
	;;
esac

exit 0
