#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop Tomcat
# Description:       Controls the main Tomcat servlet container
### END INIT INFO
# ---
# Change permissions:
#   chmod 755 /etc/init.d/tomcat
# Debian pre 6.0:
#   update-rc.d    tomcat defaults                         -- add
#   update-rc.d foobar start 20 2 3 4 5 . stop 20 0 1 6 .  -- add at specified runlevels
#   update-rc.d -f tomcat remove                           -- remove
#   update-rc.d -n tomcat defaults                         -- show
# Debian post 6.0:
#   insserv tomcat
# ---
# References:
#   http://proj.ri.mu/javainitscript
#
#set -e   # <-- exit script if anything returns non-true
set -u
${DEBIAN_SCRIPT_DEBUG:+ set -v -x}
RETVAL=0

# -- GTS installation directory
GTS_INSTALL_DIR="/usr/local"

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

# -- Load GTS_HOME, CATALINA_HOME, JAVA_HOME, ANT_HOME environment vars
GTS_VARS_ENV="${GTS_INSTALL_DIR}/gts_vars.env"
if [ ! -f "${GTS_VARS_ENV}" ]; then
    log_failure_msg "Tomcat: missing env file '${GTS_VARS_ENV}': "
    exit 1
fi
. ${GTS_VARS_ENV}

# -- check TOMCAT_USER
if [ "${TOMCAT_USER}" = "" ]; then
    log_failure_msg "Tomcat: TOMCAT_USER undefined: "
    exit 1
fi

# -- check CATALINA_HOME
if [ "${CATALINA_HOME}" = "" ]; then
    log_failure_msg "Tomcat: CATALINA_HOME undefined: "
    exit 1
fi

# --
start() {
    echo "Starting Tomcat ..."
    /bin/su ${TOMCAT_USER} -c ${CATALINA_HOME}/bin/startup.sh
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        log_success_msg "Started Tomcat " 
    else
        log_failure_msg "Tomcat failed to start " 
    fi
}

# --
stop() {
    echo "Stopping Tomcat ..."
    /bin/su ${TOMCAT_USER} -c ${CATALINA_HOME}/bin/shutdown.sh
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        log_success_msg "Stopped Tomcat "
    else
        log_failure_msg "Tomcat failed to stop "
    fi
}

# -- check command-line args
case "$1" in

    start )
        start
        ;;

    stop )
        stop
        ;;

    status )
        log_warning_msg "Usage: $0 {start|stop|restart}"
        ;;

    restart )
        stop
        sleep 5
        start
        ;;

    *)
        log_failure_msg "Usage: $0 {start|stop|restart}"
        exit 1

esac
exit $RETVAL

# ---
