#!/bin/sh
#ident "@(#)S86web500gw	1.16 08/06/97 SMI"
#
#
# Copyright 08/06/97 Sun Microsystems, Inc. All Rights Reserved
#
#
# Start/Stop LDAP/HTTP Gateway
#
 
ECHO=/bin/echo
GREP=/bin/grep
PS=/bin/ps
KILL=/bin/kill
CAT=/bin/cat
AWK=/bin/awk

#
# Variables 
#

USAGE="Usage: `basename $0` {start | stop }"
PKG=SUNWsds
BASEDIR=`/bin/pkgparam $PKG 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


case "$1" in
'start')
	#
	# 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 [ -n "$WebGwPort" ]
	then
		WebGwPort="-p $WebGwPort"
	fi
	if [ -n "$LdapPort" ]
	then
		LdapPort="-P $LdapPort"
	fi
	if [ ! -x $BASEDIR/SUNWconn/ldap/lib/web500gw ]
	then
		$ECHO "$BASEDIR/SUNWconn/ldap/lib/web500gw not found"
		exit 1
	fi
	pid=`$PS -fe | $GREP lib/web500gw | $GREP -v grep|$AWK '{print $2}'`
	if [ "$pid" != "" ]
	then
		$ECHO "Another web500gw process is already running"
		exit 1
	fi

	$ECHO "Starting LDAP/HTTP Gateway \c"
	cd /var/opt/SUNWconn/ldap/log
	test -f web500gw.log.8 && mv web500gw.log.8  web500gw.log.9
	test -f web500gw.log.7 && mv web500gw.log.7  web500gw.log.8
	test -f web500gw.log.6 && mv web500gw.log.6  web500gw.log.7
	test -f web500gw.log.5 && mv web500gw.log.5  web500gw.log.6
	test -f web500gw.log.4 && mv web500gw.log.4  web500gw.log.5
	test -f web500gw.log.3 && mv web500gw.log.3  web500gw.log.4
	test -f web500gw.log.2 && mv web500gw.log.2  web500gw.log.3
	test -f web500gw.log.1 && mv web500gw.log.1  web500gw.log.2
	test -f web500gw.log   && mv web500gw.log    web500gw.log.1
	touch web500gw.log
	$BASEDIR/SUNWconn/ldap/lib/web500gw $WebGwPort $LdapPort
	count=0
	if [ $? -eq 0 ]
	then
	  until [ -n "`$GREP 'Gateway started' /var/opt/SUNWconn/ldap/log/web500gw.log`" ]
	  do
	    $ECHO ".\c"
	    count=`expr $count + 1`
	    pid=`$PS -ef | $GREP lib/web500gw | $GREP -v grep |$AWK '{print $2}'`
	    if [ "$pid" = "" ]
	    then
	      $ECHO " Not started"
	      $CAT /var/opt/SUNWconn/ldap/log/web500gw.log
	      exit 1
	    fi
	    if [ $count -gt 45 ]
	    then
	      kill -TERM $pid
	      $ECHO " Not started - timeout expired"
	      $ECHO "Check that slapd is running"
	      exit 1
	    fi
	    sleep 1
	  done
	  $ECHO "...Started"
	else
	  $ECHO " Not started"
	fi
	;;   

'stop')

	if [ -f /var/opt/SUNWconn/ldap/log/web500gw.pid ]
	then
		$ECHO "Stopping LDAP/HTTP Gateway"
		pid=`$CAT /var/opt/SUNWconn/ldap/log/web500gw.pid`
		$KILL -TERM $pid >/dev/null 2>&1
		rm -f /var/opt/SUNWconn/ldap/log/web500gw.pid
	else
	  pid=`$PS -ef | $GREP lib/web500gw | $GREP -v grep |$AWK '{print $2}'`
	  if [ -n "$pid" ]
	  then
	    $ECHO "Stopping LDAP/HTTP Gateway"
	    $KILL -TERM $pid
	  fi
	fi
	# Check that the process is stopped
	if [ -n "$pid" ]
	then
	  pid=`$PS -ef | $GREP lib/web500gw | $GREP -v grep |$AWK '{print $2}'`
	  if [ -n "$pid" ]
	  then 
	    sleep 2
	    pid=`$PS -ef | $GREP lib/web500gw | $GREP -v grep |$AWK '{print $2}'`
	    if [ -n "$pid" ]
	    then
	      $KILL -9 $pid
	      echo "LDAP/HTTP Gateway killed"
	    else
	      echo "LDAP/HTTP Gateway stopped"
	    fi
	  else
	    echo "LDAP/HTTP Gateway stopped"
	  fi
	fi
	;;


*)
	$ECHO ${USAGE}


	exit 1
	;;
esac

exit 0
