#!/bin/sh
#ident "@(#)S86sdsadm	1.34 07/13/00 SMI"
#
#
# Copyright 07/13/00 Sun Microsystems, Inc. All Rights Reserved
#
#
# Start/Stop Slapd administrative framework
#
trap 'echo "$0: Interrupted "; exit 1' INT QUIT
unset ENV

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"
SUNDSHOME=$BASEDIR/SUNWconn/ldap/html/lib
SUNDSHOME2=$BASEDIR/SUNWconn/html/lib
GETFREEPORT=$BASEDIR/SUNWconn/ldap/lib/dsgfp

#
# Fully DNS qualified host name. Default value if ${LOCALHOST}
#
SERVER_NAME=""
#
#

getFreeRMIPortNumber()
{
        if [ -f $SUNDSHOME/sunds_port.html ]
        then
                REGISTRYPORTNUMBER=`cat $SUNDSHOME/sunds_port.html`
                REGISTRYPORTNUMBER=`$GETFREEPORT $REGISTRYPORTNUMBER`
        else
                REGISTRYPORTNUMBER=`$GETFREEPORT`
        fi
        echo $REGISTRYPORTNUMBER > $SUNDSHOME/sunds_port.html
        echo $REGISTRYPORTNUMBER > $SUNDSHOME2/sunds_port.html
}

startAdminServer() {
         
        getFreeRMIPortNumber

        echo "Starting Sun DS administrative server (port $REGISTRYPORTNUMBER) ..."

	umask 066
 
        ${JAVACMD} \
                -Ddirectoryhost=${LOCALHOST} \
                -Dconsole.domain=${LOCALHOST} \
                -Dstartregistry=true \
                -Dregistryport=${REGISTRYPORTNUMBER} \
                -Djava.rmi.server.hostname=${SERVER_NAME}\
                -Djava.rmi.server.codebase=file:$SUNDSHOME\
                $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 Sun DS administrative server..."
                	kill -TERM ${pid}
        	fi
	else
		pid=`ps -fe | grep "$ADMINSERVER" | grep -v grep|awk '{print $2}'`
		if [ "$pid" != "" ]
		then
			echo "Stopping Sun DS administrative server..."
			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
      if [ "$JVBASEDIR" = "/" ] ; then
	JVBASEDIR=""
      fi
      JVOK=`pkgparam SUNWjvrt VERSION | cut -c3-3`
    fi
# NPCTE fix for bug 4350806, SD, 06 Jul 00
# Sun DS 3.1 needs JDK 1.1.x, not JDK 1.2
    if [ $JVOK -gt 0 -a -d "${JVBASEDIR}/usr/java1.1" ]
    then
      JAVA_HOME=${JVBASEDIR}/usr/java1.1
      JAVAPATH=${JVBASEDIR}/usr/java1.1/bin
      JAVALIBS=${JVBASEDIR}/usr/java1.1/lib
# End NPCTE fix for bug 4350806
      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=${JAVAPATH}:${PATH}:$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
	#
	# set JAVA_COMPILER to none on intel. bug in the JIT compiler
	#
	if [ `/bin/uname -p` = i386 ]
	then
		JAVA_COMPILER=none
		export JAVA_COMPILER
	fi
}
  
OLDPATH=$PATH
PATH=/usr/sbin:/sbin:/usr/bin:${BASEDIR}/SUNWconn/sbin:${BASEDIR}/SUNWconn/lib

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

case "$1" in
'start')

#
# Check for standalone mode
#

if pkginfo -q SUNWimadm
then
	exit 0
fi

setJavaPath

# start admin server
 
pid=`ps -fe | grep "$ADMINSERVER" | grep -v grep|awk '{print $2}'`
if [ "$pid" != "" ]
then
	echo "Sun DS 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 "Sun DS administrative server is already running"
        	else
			startAdminServer
		fi
	else
		startAdminServer
	fi
fi
;;   

'stop')

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


*)
	echo ${USAGE}

	exit 1
	;;
esac

exit 0
