#! /bin/sh
#
# OPENDJ SERVICE SCRIPT
#

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License").  You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at
# trunk/opendj3/legal-notices/CDDLv1_0.txt
# or http://forgerock.org/license/CDDLv1.0.html.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at
# trunk/opendj3/legal-notices/CDDLv1_0.txt.  If applicable,
# add the following below this CDDL HEADER, with the fields enclosed
# by brackets "[]" replaced with your own identifying information:
#      Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#      Copyright 2013 ForgeRock AS
#


# chkconfig: 2345 80 05
# description: Starts and stops opendj LDAPv3 service.
#
### BEGIN INIT INFO
# Provides:          opendj
# Required-Start:    
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: This is the opendj daemon
# Description:       OpenDJ is an LDAPv3 compliant directory service, developed for the Java
#                    platform, providing a high performance, highly available and secure store
#                    for the identities managed by enterprises. Its easy installation process,
#                    combined with the power of the Java platform makes OpenDJ one of the
#                    simplest and fastest directory servers to deploy and manage.
### END INIT INFO

# Set up source function library depending on the distribution
if [ -f /etc/redhat-release ]
then
    # Redhat
    . /etc/init.d/functions
elif [ -f /etc/SuSE-release ]
then
    # SuSE
    . /etc/rc.status
elif [ -f /etc/lsb-release ]
then
    # Debian
    . /lib/lsb/init-functions
else
    # Other dist.
    if [ -f /etc/init.d/functions.sh ]
    then
        . /etc/init.d/functions.sh
    fi
fi


# Sets the script vars
INSTALL_ROOT="/opt/opendj/"
export INSTALL_ROOT
DAEMON=opendj
# Original PID file
ORIGINPIDFILE=/opt/opendj/logs/server.pid
# Pid file is a symlink to /opt/opendj/log/server.pid
PIDFILE=/var/run/opendj.pid
RETVAL=0

# If the daemon is not there, then exit / LSB return code.
test -x "$INSTALL_ROOT/bin/start-ds" || exit 5

# /var/run is deleted after reboot (eg. debian)
# recreates the symlink if needed.
test -h "$PIDFILE" || ln -s $ORIGINPIDFILE $PIDFILE

#Starts the server and creates pid file.
start() {
    echo -n $"Starting $DAEMON: "
    # Server is running
    if [ -e $PIDFILE ]
    then    
        echo "> Already running."
        return 0
    else 
        "$INSTALL_ROOT"/bin/start-ds --quiet
        RETVAL=$?
        if [ $RETVAL = 0 ]
        then
            echo "> SUCCESS."
        else
            echo "> FAILURE."
        fi
        echo ""
        return $RETVAL
    fi
}

#Stops the server and removes pid file.
stop() {
    echo -n $"Stopping $DAEMON: "
    # Server is running
    if [ -e $PIDFILE ]
    then
        "$INSTALL_ROOT"/bin/stop-ds --quiet
        RETVAL=$?
        if [ $RETVAL = 0 ]
        then
            echo "> SUCCESS."
        else
            echo "> FAILURE."
        fi
        echo ""
        return $RETVAL
    else         
        echo "> Already stopped."
        echo ""
        return 3
    fi    
}

# Displays the service status
status() {
    echo -n $"$DAEMON status: "
    if [ -e $PIDFILE ]
    then
        echo "> Running."
        return 0
    else             
        echo "> Stopped."
        return 3
    fi
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
        sleep 5
        start
    ;;
    force-reload)
        # Not implemented.
    ;;
    status)
        status
    ;;
    *)
        echo $"Usage: /etc/init.d/$DAEMON {start|restart|stop|force-reload|status}"
        exit 1
    ;;
esac

exit $RETVAL
