#! /bin/sh
#Tag 0x00000f00
#
#	Cadmin System Management
#
#	$Revision: 1.6 $
#

IS_ON=/etc/chkconfig
CADMIN_DIR=/usr/Cadmin/bin
CADMIN_DATA=/var/Cadmin/data
CADMIN_DATA_OLD=/var/Cadmin/data.O
CONFIG_DIR=/etc/config
RM=/bin/rm

if ${IS_ON} verbose ; then
    ECHO=echo
    VERBOSE=-v
else            # For a quiet startup and shutdown
    ECHO=:
    VERBOSE=
fi

if test `whoami` != "root" ; then
    echo "/etc/init.d/cadmin: error: must be root to run."
    exit 1
fi

case $1 in
    'start')
	# Convert object server database
	if test ! -f ${CADMIN_DATA}/database && test -f ${CADMIN_DATA}/index ;
	then
	    ${ECHO} "Converting Cadmin object server database: \c"
	    if test ! -d ${CADMIN_DATA_OLD} ;
	    then
		mkdir ${CADMIN_DATA_OLD}
	    fi
	    mv ${CADMIN_DATA}/index ${CADMIN_DATA}/59* ${CADMIN_DATA_OLD}
	    if ${CADMIN_DIR}/convert ;
	    then
		${ECHO} "done."
	    else
		${ECHO} "error."
	    fi
	fi

	# Convert directory server database
	if test ! -f ${CADMIN_DATA}/directory/database \
	   && test -f ${CADMIN_DATA}/directory/index ;
	then
	    ${ECHO} "Converting Cadmin directory server database: \c"
	    if test ! -d ${CADMIN_DATA_OLD} ;
	    then
		mkdir ${CADMIN_DATA_OLD}
	    fi
	    mv ${CADMIN_DATA}/directory ${CADMIN_DATA_OLD}
	    if ${CADMIN_DIR}/convert -d ;
	    then
		${ECHO} "done."
	    else
		${ECHO} "error."
	    fi
	fi

	# Start objectserver and/or directoryserver
	if ${IS_ON} objectserver && test -x ${CADMIN_DIR}/objectserver ;
	then
	    ${CADMIN_DIR}/parseclasses > /dev/null 2>&1
	    ${ECHO} "Cadmin daemons: \c"
	    ${CADMIN_DIR}/objectserver \
		`cat ${CONFIG_DIR}/objectserver.options 2> /dev/null`
	    ${ECHO} "objectserver\c"
	    if ${IS_ON} directoryserver && test -x ${CADMIN_DIR}/directoryserver ;
	    then
		${CADMIN_DIR}/directoryserver \
		    `cat ${CONFIG_DIR}/directoryserver.options 2> /dev/null`
		$ECHO " directoryserver\c"
	    fi
	    ${ECHO} "."
	elif ${IS_ON} directoryserver && test -x ${CADMIN_DIR}/directoryserver ;
	then
	    ${CADMIN_DIR}/parseclasses > /dev/null 2>&1
	    ${ECHO} "Cadmin daemons: \c"
	    ${CADMIN_DIR}/directoryserver \
		`cat ${CONFIG_DIR}/directoryserver.options 2> /dev/null`
	    ${ECHO} "directoryserver."
	fi
	;;

    'stop')
	killall -TERM objectserver directoryserver
	;;

    'clean')
	killall -TERM objectserver directoryserver
	${ECHO} "Cleaning Cadmin database: \c"
	${RM} -rf ${CADMIN_DATA}
	${CADMIN_DIR}/parseclasses > /dev/null 2>&1
	${ECHO} "done."
	;;

    *)
	echo "usage: /etc/init.d/cadmin {start|stop|clean}"
	;;
esac
