#!/bin/sh
#ident "@(#)S86sdsadm	1.12 07/23/97 SMI"
#
#
# Copyright 07/23/97 Sun Microsystems, Inc. All Rights Reserved
#
#
# Start/Stop Slapd administrative framework
#
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" ]	
then
	BASEDIR=/opt
fi
ARCH=`uname -p`
JAVACMD="java"

#

startRMI() {
        echo "Starting Java registry service..."
	
	${JAVACMD} sun.rmi.registry.RegistryImpl &

        pid=$!
        echo ${pid} > ${RMIPID}
        /bin/chmod 0440 ${RMIPID}
        sleep 3
}

startAdminServer() {
        echo "Starting LDAP administrative server..."
         
        ${JAVACMD} -mx64m -ms16m -ss1m -oss1m \
                -Ddirectoryhost=${LOCALHOST} \
                -Dconsole.domain=${LOCALHOST} \
                $ADMINSERVER &
        pid=$!
        echo ${pid} > ${SERVERPID}
        /bin/chmod 0440 ${SERVERPID}
}

stopAdminServer() {
	if [ -f ${SERVERPID} ]; then
        	pid=`cat ${SERVERPID}`
        	/bin/rm -f ${SERVERPID}
        	count=`/bin/ps -e| /bin/awk '{print $1}' | grep -c ${pid}`
        	if [ ${count} -eq "1" ]; then
        		echo "Stopping LDAP administrative server..."
                	kill -TERM ${pid}
        	fi
	else
		pid=`ps -fe | grep "$ADMINSERVER" | grep -v grep|awk '{print $2}'`
		if [ "$pid" != "" ]
		then
			echo "Stopping LDAP administrative server..."
			kill -TERM ${pid}
		fi
	fi
}

stopRMI() {
# We only stop RMI if WE launched it. ie if the $RMIPID file exists
	if [ -f ${RMIPID} ]; then
        	pid=`cat ${RMIPID}`
        	/bin/rm -f ${RMIPID}
        	count=`/bin/ps -e| /bin/awk '{print $1}' | grep -c ${pid}`
        	if [ ${count} -eq "1" ]; then
        		echo "Stopping JAVA registry service..."
                	kill -TERM ${pid}
        	fi
	fi
}

setJavaPath() {
  if [ -z "$JAVA_HOME" ]
  then 
    JVOK=0
    JVBASEDIR=`/bin/pkginfo -r SUNWjvrt 2>/dev/null`
    if [ -z "$JVBASEDIR" ]
    then
      JVBASEDIR=""
    else
      JVOK=`pkgparam SUNWjvrt VERSION | cut -c3-3`
    fi
    if [ $JVOK -gt 0 -a -d "${JVBASEDIR}/usr/java" ]
    then
      JAVA_HOME=${JVBASEDIR}/usr/java
      JAVAPATH=${JVBASEDIR}/usr/java/bin
      JAVALIBS=${JVBASEDIR}/usr/java/lib
      if [ -x "${JAVAPATH}/jre" ]
      then
	JAVACMD="jre"
      fi
    else
      JVBASEDIR=`/bin/pkginfo -r SUNWdthj 2>/dev/null`
      if [ -z "$JVBASEDIR" ]
      then
	JVBASEDIR=/usr
      fi
      if [ -d "${JVBASEDIR}/dt/appconfig/hotjava/runtime" ]
      then
	JAVA_HOME=${JVBASEDIR}/dt/appconfig/hotjava/runtime
	JAVAPATH=${JVBASEDIR}/dt/appconfig/hotjava/runtime/bin
	JAVALIBS=${JVBASEDIR}/dt/appconfig/hotjava/runtime/lib/${ARCH}/green_threads
	if [ -x "${JAVAPATH}/jre" ]
	then
	  JAVACMD="jre"
	fi
      else
	if [ -z "$JAVAPATH" ]
	then
	  echo "Can't locate Java runtime"
	  echo "Install Java runtime or Set JAVA_HOME to its location"
	  exit 1
	fi
      fi
    fi
  else 
    JAVAPATH=${JAVA_HOME}/bin
    JAVALIBS=${JAVA_HOME}/lib
    if [ -x "${JAVAPATH}/jre" ]
    then
      JAVACMD="jre"
    fi
  fi
  PATH=${PATH}:${JAVAPATH}:$OLDPATH
  LD_LIBRARY_PATH=${JAVALIBS}:${BASEDIR}/SUNWconn/lib:${LD_LIBRARY_PATH}
  export PATH
  export LD_LIBRARY_PATH
# jre doesn't update CLASSPATH if a CLASSPATH is set !
  if [ "${JAVACMD}" = "jre" ]
  then
    CLASSPATH=${JAVA_HOME}/lib/rt.jar:${JAVA_HOME}/lib/i18n.jar:${CLASSPATH}
    CLASSPATH=${JAVA_HOME}/classes:${JAVA_HOME}/lib/classes.zip:${CLASSPATH}
    export CLASSPATH
  fi
}
  
OLDPATH=$PATH
PATH=/usr/sbin:/sbin:/usr/bin:${BASEDIR}/SUNWconn/sbin:${BASEDIR}/SUNWconn/lib

RMIPID=/var/opt/SUNWconn/ldap/log/rmi.pid
SERVERPID=/var/opt/SUNWconn/ldap/log/adminserver.pid
 
ADMINSERVER=COM.Sun.sunsoft.sims.admin.console.DirAdminServerImpl
HOSTNAME=`uname -n`
LOCALHOST=${HOSTNAME}

LD_LIBRARY_PATH=${BASEDIR}/SUNWconn/lib:${LD_LIBRARY_PATH}
CLASSPATH=${BASEDIR}/SUNWconn/html/lib

export PATH
export LD_LIBRARY_PATH
export CLASSPATH

# 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, exit
	#
	echo "No license is installed for Slapd. Cannot start administrative framework."
 	exit 1
fi

case "$1" in
'start')

#
# Check for standalone mode
#

if pkginfo -q SUNWimadm
then
	exit 0
fi

setJavaPath

# start RMI registry if needed
 
pid=`ps -fe | grep "rmi.registry" | grep -v grep|awk '{print $2}'`
if [ "$pid" != "" ]
then
	echo "JAVA registry service is already running"
else
	if [ -f ${RMIPID} ]; then
        	pid=`cat ${RMIPID}`
        	count=`/bin/ps -e| /bin/awk '{print $1}' | grep -c ${pid}`
        	if [ ${count} -ge "1" ]; then
        		echo "JAVA registry service is already running"
		else
			startRMI
			stopAdminServer
        	fi
	else
		startRMI
        	stopAdminServer
	fi
fi

# start admin server
 
pid=`ps -fe | grep "$ADMINSERVER" | grep -v grep|awk '{print $2}'`
if [ "$pid" != "" ]
then
	echo "LDAP administrative server is already running"
else
	if [ -f ${SERVERPID} ]; then
        	pid=`cat ${SERVERPID}`
        	count=`/bin/ps -e| /bin/awk '{print $1}' | grep -c ${pid}`
        	if [ ${count} -ge "1" ]; then
			echo "LDAP administrative server is already running"
        	else
			startAdminServer
		fi
	else
		startAdminServer
	fi
fi
;;   

'stop')

if pkginfo -q SUNWimadm
then
	exit 0
else
	stopAdminServer
	stopRMI
fi
;;


*)
	echo ${USAGE}

	exit 1
	;;
esac

exit 0
