#! /bin/sh
### BEGIN INIT INFO
# Provides:       sessiond
# Required-Start: $remote_fs
# Required-Stop:
# Default-Start:  3 5
# Default-Stop:
# Description:    start the Open-Xchange session daemon
### END INIT INFO
. /etc/rc.status

# First reset status of this service
rc_reset


OX_SESSIOND_PORT=33333
OX_SESSIOND_BIN=/usr/bin/openexchange-sessiond
LOGFILE=/var/lib/open-xchange/log/sessiond.log
PROG_NAME="SESSIOND"
USER=tomcat

# get a list of PIDs
java_pslist() {
    unset COLUMNS
    # ORG, works with linux great
    # ps xao "%p %a" | grep -E 'sessiond.jar' | grep -v grep | awk '{print $1}'

    # for solaris, bug ID: 37
    # ps eafo "pid,args" | grep -E 'sessiond.jar' | grep -v grep | awk '{print $1}'

    # next try to make all happy
    ps axwww | grep -E '*-DappName=sessiondApp' | grep -v grep | awk '{print$1}'

}

java_killproc() {
    is_running=0
    for i in $(java_pslist); do
	is_running=1
	kill -KILL $i > /dev/null 2>&1
    done
#    if [ "$(java_pslist)" = "" ]; then
#        return 0
#    fi
    if [ $is_running -eq 0 ]; then
	return 7
    fi
    return 0
}

java_startproc() {
    if [ -n "$(java_pslist)" ]; then
	return 0
    fi
    #sudo -u $USER $OX_SESSIOND_BIN >> $LOGFILE 2>&1 &
    su $USER -s /bin/bash $OX_SESSIOND_BIN >> $LOGFILE 2>&1 &
    return 0
}

java_checkproc() {
    if [ -n "$(java_pslist)" ]; then
	return 0
    else
	return 3
    fi
}

start() {
    echo -n "Starting $PROG_NAME"
    java_startproc
    rc_status -v
}

stop() {
    echo -n "Shutting down $PROG_NAME"
    java_killproc
    rc_status -v
}

case "$1" in
    start)
        start
	;;
    stop)
        stop
	;;
    restart)
        stop
	sleep 2
        start
	;;
    status)
	echo -n "Checking for $PROG_NAME: "
	java_checkproc
        rc_status -v
	;;
    *)
	echo "Usage: $0 {start|stop|status|restart}"
	exit 1
	;;
esac
