#!/bin/sh
#
# ident "@(#)S86slapd	1.62 02/02/12 SMI"
#
# Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
#
#
# Start/Stop Sun Ray Data Store daemon
#
trap 'echo "$0: Interrupted "; exit 1' INT QUIT

USAGE="Usage: `basename $0` { start | stop | restart }"
BASEDIR=`/bin/pkgparam SUNWutds 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/SUNWut/srds/lib:$BASEDIR/SUNWut/srds/sbin:$BASEDIR/SUNWut/srds/bin
LD_LIBRARY_PATH=$BASEDIR/SUNWut/srds/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
#
# Set NLSPATH for I18N
#
# NLSPATH=${NLSPATH}:${BASEDIR}/SUNWut/srds/locale/%L/%N.cat
# export NSLPATH

ExitCode=0

#
# check if SRDS is configured
#
if [ ! -f /etc/opt/SUNWut/srds/current/utdsd.run ]
then
	exit 0
fi

#
# set the global variables as set by the admin tool
#
if [ -f /etc/opt/SUNWut/srds/current/utdsd.ini ]
then
	. /etc/opt/SUNWut/srds/current/utdsd.ini
fi

logfile=`cat /etc/opt/SUNWut/srds/current/utdsd.conf|grep "^logfile" | awk '{print $2}'`
if [ "$logfile" = "" ]
then
	logfile=/var/opt/SUNWut/srds/log/utdsd.log
fi


logdir=`dirname $logfile`

case "$1" in
'start')

	if [ -n "$LdapPort" ]
	then
		LdapPort="-p $LdapPort"
	fi
	pid=`ps -fe | grep lib/utdsd | grep -v grep|awk '{print $2}'`
	if [ -n "$pid" ]
	then
		echo "Another Sun Ray Data Store daemon is already running"
		exit 1
	fi
	echo "Starting Sun Ray Data Store daemon \c"
	cd $logdir
	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
	#
	# Start utdsd 
	#
	$BASEDIR/SUNWut/srds/lib/utdsd $LdapPort >/dev/null 2>&1
	until [ -s $logfile ]
	do
		echo ".\c"
		pid=`ps -fe | grep lib/utdsd | grep -v grep|awk '{print $2}'`
		if [ -z "$pid" ]
		then
			echo "Sun Ray Data Store daemon not started"
			cat $logfile
			exit 1
		fi
		sleep 1
	done
	echo
	cat $logfile
	#
	# utpushd daemon if needed to be started
	#

	pushlog=$logdir"/utpushd.log"

	if [ "$StartDspushd" = "true" ]
	then
		cd $logdir
		test -f $pushlog.8 && mv $pushlog.8  $pushlog.9
		test -f $pushlog.7 && mv $pushlog.7  $pushlog.8
		test -f $pushlog.6 && mv $pushlog.6  $pushlog.7
		test -f $pushlog.5 && mv $pushlog.5  $pushlog.6
		test -f $pushlog.4 && mv $pushlog.4  $pushlog.5
		test -f $pushlog.3 && mv $pushlog.3  $pushlog.4
		test -f $pushlog.2 && mv $pushlog.2  $pushlog.3
		test -f $pushlog.1 && mv $pushlog.1  $pushlog.2
		test -f $pushlog   && mv $pushlog    $pushlog.1
		echo "Starting utpushd daemon"
		$BASEDIR/SUNWut/srds/lib/utpushd
	fi
	;;   

'stop')

	pidserv=`ps -fe | grep lib/utdsd | grep -v grep|awk '{print $2}'`
	if [ -n "$pidserv" ]
	then
		echo "Stopping Sun Ray Data Store daemon"
		kill -TERM $pidserv
		rm -f /var/opt/SUNWut/srds/log/utdsd.pid
	fi

	#
	# stop the utpushd daemon
	#
	pidpush=`ps -fe | grep lib/utpushd | grep -v grep|awk '{print $2}'`
	if [ -n "$pidpush" ]
	then
		kill -TERM $pidpush
		echo "Stopping utpushd daemon"
	fi
	#
	#  check that processes stopped
	#
	if [ -z "$pidserv" -a -z "$pidpush" ]
	then
		exit 0
	fi
	for x in 1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16 17 18 19 20
	do
		pidserv2=`ps -fe | grep lib/utdsd | grep -v grep|awk '{print $2}'`
		pidpush2=`ps -fe | grep lib/utpushd | grep -v grep|awk '{print $2}'`
		if [ -n "$pidserv2" -o "$pidpush2" ]
		then
			echo ".\c"
			sleep 1
		else
			break
		fi
	done

	if [ -n "$pidserv2" ]
	then
		echo "Sun Ray Data Store stopped failed"
		ExitCode=1
	else
		echo "Sun Ray Data Store daemon stopped"
	fi

	if [ -n "$pidpush" ]
	then
	if [ -n "$pidpush2" ]
	then
		kill -9 $pidpush2
		echo "utpushd daemon stopped"
	else
		echo "utpushd daemon stopped"
	fi
	fi

	rm -f /var/opt/SUNWut/srds/log/utdsd.pid

	;;


'restart')
 
        pidserv=`ps -fe | grep lib/utdsd | grep -v grep|awk '{print $2}'`
        if [ -n "$pidserv" ]
        then
                echo "Restarting utdsd..."
                kill -HUP $pidserv

                if [ "$StartDspushd" = "true" ]
                then
                        pidpush=`ps -fe | grep lib/utpushd | grep -v grep|awk '{print $2}'`
                        if [ -n "$pidpush" ]
                        then
                                sleep 2
                                pid=`ps -fe | grep lib/utpushd | grep -v grep|awk '{print $2}'`
                                if [ -n "$pid" ]
                                then
                                        kill -9 $pid
                                        echo "utpushd daemon killed"
                                else
                                        echo "utpushd daemon stopped"
                                fi
                        fi
 
                	pushlog=$logdir"/utpushd.log"
 
                        cd $logdir
                        test -f $pushlog.8 && mv $pushlog.8  $pushlog.9
                        test -f $pushlog.7 && mv $pushlog.7  $pushlog.8
                        test -f $pushlog.6 && mv $pushlog.6  $pushlog.7
                        test -f $pushlog.5 && mv $pushlog.5  $pushlog.6
                        test -f $pushlog.4 && mv $pushlog.4  $pushlog.5
                        test -f $pushlog.3 && mv $pushlog.3  $pushlog.4
                        test -f $pushlog.2 && mv $pushlog.2  $pushlog.3
                        test -f $pushlog.1 && mv $pushlog.1  $pushlog.2
                        test -f $pushlog   && mv $pushlog    $pushlog.1
                        echo "Starting utpushd daemon"
                        $BASEDIR/SUNWut/srds/lib/utpushd
                fi

        fi
        ;;

 
*)
	echo ${USAGE}


	exit 1
	;;
esac

exit $ExitCode
