#!/bin/sh
### BEGIN INIT INFO
# Provides:		bongo mail-transport-agent
# Required-Start:	$local_fs $remote_fs $syslog $named $network $time
# Required-Stop:	$local_fs $remote_fs $syslog $named $network
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Should-Start:		slapd
# Should-Stop:		slapd
# Short-Description: 	Start and stops Bongo
# Description: 		Bongo collaboration system, visit: 
#			http://www.bongo-project.com
### END INIT INFO

#
# Author: Igor Morgado <igor@gnutech.inf.br>
#

# set -e

# Default VARS
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Bongo Colaborative Suite"
NAME=bongo-manager
SCRIPTNAME=/etc/init.d/$NAME
BONGO_DIR=@prefix@
BONGO_BIN=@prefix@/sbin
BONGO_PROCLIST="bongomanager bongodmc bongostore bongoqueue bongosmtp bongoimap bongopop3 bongoantispam bongoavirus bongocalagent bongomailprox bongorules bongopluspack bongoconnmgr"
PIDFILE="$BONGO_DIR/var/bongo/work/bongomanager.pid"
DAEMON=$BONGO_BIN/$NAME
DAEMON_ARGS="-d -k"

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
#. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

function do_start() {
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started

        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \
                || return 2
}

function do_stop() {
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
	#   2 if daemon could not be stopped
        #   other if a failure occurred

        start-stop-daemon --verbose --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME

        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2

        return "$RETVAL"
}

function do_reload() {
        #
        # If the daemon can reload its configuration without
        # restarting (for example, when it is sent a SIGHUP),
        # then implement that here.
        #
        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME

        return 0
}

case "$1" in
	start)

	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"

        do_start

        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2)   [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac

	;;

	stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"   
    	do_stop
    	case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2)   [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
	;;

	restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
        	0|1)  
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0

