#!/bin/sh
#
# HAD - High Aviability Daemon
#
# chkconfig: 345 75 05
# description:	HAD - High Aviability Daemon
# processname: had
# config: /etc/had/had.conf
# pidfile: /var/run/had.pid

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

# Source function library.
. /etc/init.d/functions

DAEMON=had
CONFIG=/etc/had/had.conf
PIDFILE=/var/run/had.pid
STATEFILE=/var/run/had.state
LOCKFILE=/var/lock/subsys/had
RETVAL=0

[ -f $CONFIG ] || exit 1

. $CONFIG

[[ $ENABLE != "yes" ]] && exit 1

[ $DEBUG == "yes" ] && PARAMS="$PARAMS -d"

PARAMS="$PARAMS ${IP1:+-a $IP1}"
PARAMS="$PARAMS ${IP2:+-b $IP2}"
PARAMS="$PARAMS ${IP3:+-c $IP3}"

PARAMS="$PARAMS ${NET1:+-A $NET1}"
PARAMS="$PARAMS ${NET2:+-B $NET2}"
PARAMS="$PARAMS ${NET3:+-C $NET3}"

PARAMS="$PARAMS ${PORT:+-p $PORT}"

PARAMS="$PARAMS ${NODES:+-n $NODES}"
PARAMS="$PARAMS ${MONITORING:+-M $MONITORING}"
PARAMS="$PARAMS ${TIMEOUT:+-T $TIMEOUT}"

PARAMS="$PARAMS -l $STATEFILE -P $PIDFILE -s /etc/had/hasrv"

start()
{
    start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root -- $DAEMON $PARAMS
    RETVAL=$?
    return $RETVAL
}

stop()
{
    # pidfile exists -- may be had running
    if [ -f "$PIDFILE" ]; then
        msg_stopping had
    	if kill -TERM `cat $PIDFILE` ; then
	    [ -f "$LOCKFILE" ] && rm "$LOCKFILE"
    	    echo_success
        else
    	    echo_failure
	fi
    else
        msg_not_running had
        echo_passed
    fi
    echo
}

# See how we were called.
case "$1" in
    start)
	start
	;;
    start-force-main)
	PARAMS="$PARAMS -m"
	start
	;;
    maintenance)
	kill -INT `cat $PIDFILE`
	RETVAL=$?
	;;
    standby)
	kill -HUP `cat $PIDFILE`
	RETVAL=$?
	;;
    clear)
	kill -USR1 `cat $PIDFILE`
	RETVAL=$?
	;;
    clear-standby)
	kill -USR2 `cat $PIDFILE`
	RETVAL=$?
	;;
    stop)
	stop
	;;
    restart|reload)
	stop
	sleep 3
	start
	;;
    condstop)
	if [ -e "$LOCKFILE" ]; then
	    stop
	fi
	;;
    condrestart)
	if [ -e "$LOCKFILE" ]; then
	    stop
	    start
	fi
	;;																			
    status)
	if [ -f $PIDFILE ]; then
	    echo "HAD running. Node status:"
	    cat $STATEFILE
	fi
	RETVAL=$?
	;;
    *)
	msg_usage "${0##*/} {start|start-force-main|maintenance|standby|clear|clear-standby|stop|restart|status}"
	RETVAL=1
esac

exit $RETVAL
