#!/bin/sh
#
# ejabberd	XMPP server
#
# chkconfig: 	- 70 30
# description:	Fault-tolerant XMPP server.
#
# processname:	so many
# config: 	/etc/ejabberd/ejabberd.yml
# pidfile: 	nope

WITHOUT_RC_COMPAT=1

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

LOCKFILE=/var/lock/subsys/ejabberd
RETVAL=0

ejabberdctl()
{
    su -l -s /bin/sh -c "/usr/sbin/ejabberdctl --ctl-config /etc/sysconfig/ejabberd $1" ejabberd
}

start()
{
    STRING="Starting ejabberd service: "
    echo -n "$STRING"
    ejabberdctl start
    RETVAL=$?
    [ "$RETVAL" -eq 0 ] && success "$STRING" || failure "$STRING"
    echo
    [ "$RETVAL" -ne 0 ] || touch "$LOCKFILE"
    return "$RETVAL"
}

stop()
{
    [ -f "$LOCKFILE" ] || {
	echo "Service ejabberd is not running."
	return 0
    }

    STRING="Stopping ejabberd service: "
    echo -n "$STRING"
    ejabberdctl stop
    RETVAL=$?
    [ $RETVAL -eq 0 ] && success "$STRING" || failure "$STRING"
    echo
    [ $RETVAL -eq 0 ] || return
    sleep 3
    action "Stopping erlang portmapper: " epmd -kill
    RETVAL=$?
    [ "$RETVAL" -ne 0 ] || rm -f -- "$LOCKFILE"
    return "$RETVAL"
}

reload()
{
    ejabberdctl reload_config
}

restart()
{
    stop
    sleep 2
    start
}

status()
{
    ejabberdctl status
    RETVAL=$?
    return "$RETVAL"
}

case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    reload)
    reload
    ;;
    restart|reload)
    restart
    ;;
    condstop)
    if [ -e "$LOCKFILE" ]; then
	stop
    fi
    ;;
    condrestart|condreload)
    if [ -e "$LOCKFILE" ]; then
	restart
    fi
    ;;
    status)
    status
    ;;
    *)
    msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}"
    RETVAL=1
    ;;
esac

exit "$RETVAL"
