#! /bin/sh
# chkconfig: - 86 14
# description: Copper PDF
# processname: copperd

### BEGIN INIT INFO
# Provides:             copperd
# Required-Start:       $local_fs $network $time
# Required-Stop:        $local_fs $network $time
# Should-Start:         $syslog $remote_fs
# Should-Stop:          $syslog $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Copper PDF
### END INIT INFO

CMD_DIR=`dirname $0`
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
fi

if [ -z "$JAVA_OPTS" ]; then
	JAVA_OPTS="-Xmx2048m"
fi

if [ -z "$COPPER_HOME" ]; then
	COPPER_HOME=$CMD_DIR
fi

JAVA_CMD=$JAVA_HOME/bin/java
COPPER_VAR=$COPPER_HOME
COPPER_SHARE=$COPPER_HOME
if [ ! -d $COPPER_VAR/conf/profiles ]; then
	COPPER_VAR=/var/lib/copper-pdf
fi
if [ ! -d $COPPER_SHARE/lib ]; then
	COPPER_SHARE=/usr/share/copper-pdf
fi

if [ ! -f $JAVA_CMD ]; then
	JAVA_CMD=$COPPER_VAR/extras/redhat/runtime/bin/java
fi
if [ ! -f $JAVA_CMD ]; then
	JAVA_CMD=`which java`
fi

COPPER_LIB=$COPPER_SHARE/lib:$COPPER_VAR/jetty/lib
COPPER_CONFIG=$COPPER_VAR/conf
COPPER_DEFAULT=$COPPER_VAR/conf/profiles/default.properties

JAVA_ARGS="\
	$JAVA_OPTS \
	-Duser.home=$COPPER_VAR \
	-Djava.net.preferIPv4Stack=true \
	-Djp.cssj.boot.lib=$COPPER_LIB \
	-Djp.cssj.plugin.lib=$COPPER_SHARE/plugins \
	-Djp.cssj.boot.main=jp.cssj.copper.Main \
	-Djp.cssj.driver.default=$COPPER_DEFAULT \
	-Djp.cssj.copper.config=$COPPER_CONFIG \
	-cp $COPPER_SHARE/lib/boot.jar \
	jp.cssj.boot.Main \
"

start() {(
	cd $COPPER_VAR
	echo -n "Starting Copper PDF service..."
	$JAVA_CMD $JAVA_ARGS -ping $2 $3 $4 $5 $6 $7 > /dev/null 2>&1
	if [ $? -eq 0 ]; then
		echo "Already running"
		return 1;
	fi
	if [ -f /usr/bin/systemctl ]; then
		$JAVA_CMD -Djava.util.logging.config.file=$COPPER_CONFIG/logging.properties $JAVA_ARGS -start $2 $3 $4 $5 $6 $7 > /dev/null 2>&1 &
	else
		if [ -f /etc/init.d/functions ]; then
			daemon --user copper $JAVA_CMD -Djava.util.logging.config.file=$COPPER_CONFIG/logging.properties $JAVA_ARGS -start $2 $3 $4 $5 $6 $7 > /dev/null 2>&1 &
		else
			if [ -f /sbin/start-stop-daemon ]; then
				/sbin/start-stop-daemon --start -c copper -u copper -b -x $JAVA_CMD -- -Djava.util.logging.config.file=$COPPER_CONFIG/logging.properties $JAVA_ARGS -start $2 $3 $4 $5 $6 $7
			fi
		fi
	fi
	sleep 1
	$JAVA_CMD $JAVA_ARGS -status $2 $3 $4 $5 $6 $7 > /dev/null
	if [ $? -eq 0 ]; then
		echo "OK"
	else
		echo "failure"
	fi
	return $?
)}
stop() {(
	cd $COPPER_VAR
	echo -n "Stopping Copper PDF service..."
	$JAVA_CMD $JAVA_ARGS -stop $2 $3 $4 $5 $6 $7
	if [ $? -eq 0 ]; then
		echo "OK"
	else
		echo "failure"
	fi
	return $?
)}

case "$1" in
start)
	start $*;
	exit $?
	;;
stop)
	stop $*;
	exit $?
	;;
restart)
	stop $*;
	start $*;
	exit $?
	;;
esac
echo "Usage: $0 {start|stop|restart} [-p <port>] [-cp <control port>] [-cc <control command>]"
exit 0
