#!/bin/sh

### BEGIN INIT INFO
# Provides:          cdaserver
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     3 4 5
# Short-Description: The Credential Distribution Authority Server
# Description:       The Credential Distribution Authority Server
#                    http://www.xtreemos.eu/
### END INIT INFO


# Source function library.
. /lib/lsb/init-functions

LOCKFILE=/var/lock/subsys/cdaserver

CDA_USER=cdauser
PID=/var/run/cdaserver.pid

DATE=`date '+20%y%m%d%H%M'`
LOG_CDASERVER=/var/log/cdaserver/cdaserver.log

if [ -f "$LOG_CDASERVER" ];then
	cp ${LOG_CDASERVER} ${LOG_CDASERVER}.$DATE
	> ${LOG_CDASERVER}
fi

lib=/usr/share/java

#
# Don't read configuration from /etc/sysconfig/cdaserver any more.
#
# Put all configuration in /etc/xos/config/cdaserver/cdaserver.properties
#

# Put log4j.properties in a directory on the CLASSPATH

confdir=/etc/xos/config/cdaserver

jvmopts="-ea -server "

# If your site firewall doesn't allow IPv6 traffic, force binding to an IPv4 address

jvmopts="${jvmopts} -Djava.net.preferIPv4Stack=true"

jars=\
${lib}/commons-lang.jar:\
${lib}/security-commons.jar:\
${lib}/CdaXvomsUtil.jar:\
${lib}/antlr.jar:\
${lib}/asm/asm-attrs.jar:\
${lib}/asm/asm.jar:\
${lib}/bcprov.jar:\
${lib}/c3p0.jar:\
${lib}/cglib.jar:\
${lib}/commons-collections.jar:\
${lib}/commons-logging.jar:\
${lib}/dom4j.jar:\
${lib}/hibernate3.jar:\
${lib}/javassist.jar:\
${lib}/jta.jar:\
${lib}/junit4.jar:\
${lib}/log4j.jar:\
${lib}/mail.jar:\
${lib}/mysql-connector-java.jar:\
${lib}/xvoms.jar:\
${lib}/cdaserver.jar

if [ ! -d /etc/xos/truststore/ ]; then
	echo "Exiting! CDA server can't find the /etc/xos/truststore/ directory"
	exit 1
fi

DAEMONIZE=/usr/sbin/daemonize
#
# Don't pass port number as an argument to the program - instead, read it from cdaserver.properties
#

#
# Look for hibernate.cfg.xml and Mappings.hbm.xml in /etc/xos/config/xvoms (first in CLASSPATH)
# NB config/xvoms doesn't provide a log4j.properties, so no conflict...
#

CMD="/usr/bin/java ${jvmopts} -cp /etc/xos/config/xvoms:${confdir}:${jars} eu.xtreemos.security.cda.server.CdaServer"

start() {
        gprintf "Starting %s: " "CDA server"
	
	touch ${LOG_CDASERVER}
	chown ${CDA_USER}.${CDA_USER} ${LOG_CDASERVER}

	daemon --pidfile=$PID $DAEMONIZE -u ${CDA_USER} -p $PID \
       		-a -e $LOG_CDASERVER -o $LOG_CDASERVER \
		$CMD 



#
# Need to delay next check until the server has started up
#
#

        sleep 4 # Sleep until CDA server has tried reading keys and certificates etc. 

  	if [ -f $PID ]; then

		PROCPID=`cat $PID`
		if [ ! -e /proc/$PROCPID ]; then

		        echo_failure 
			rm -f $LOCKFILE
		        cmd_stat=1
		else
			echo_success
			cmd_stat=0

		fi
    	else

		echo_failure
		rm -f $LOCKFILE
		cmd_stat=1
	fi


        gprintf "\n"
	return $cmd_stat

}

stop() {
        gprintf "Stopping %s: " "$prog"
	killproc -p $PID java
        gprintf "\n"
        rm -f $LOCKFILE
        return 0
}


#
# Status-checking: borrowed from XtreemFS start-up scripts
#

status() {
	if [ -f $PID ] ; then
		PROCPID=`cat $PID`
		if [ ! -e /proc/$PROCPID ] ; then
			gprintf "CDA server has terminated - check $LOG_CDASERVER\n"
			rm -f $LOCKFILE
			return 1
		else
			gprintf "CDA server is running\n"
			return 0
		fi
	else
		gprintf "CDA server is not running\n"
		return 3
	fi
}

restart() {
        stop
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  status)
        status
        ;;
  condrestart)
        [ -f $LOCKFILE ] && restart || :
        ;;
  *)
        gprintf "Usage: %s {start|stop|status|restart|condrestart}\n" "$0"
        exit 1
esac

exit $?

