#!/bin/sh
#
# ejabberd	Start/stop ejabberd server
#
# chkconfig: - 70 30
# description: JABBER  is an instant messaging System.  \
#
# processname: ejabberd
# config: /etc/ejabberd/ejabberd.cfg
# pidfile: /var/run/ejabberd/jabberd.pid

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

PATH=/sbin:/bin:/usr/sbin:/usr/bin
EJABBERD=/usr/sbin/ejabberd
EJABBERDCTL=/usr/sbin/ejabberdctl
EJABBERD_USER=ejabberd
PIDFILE=/var/run/ejabberd/jabberd.pid
LOCKFILE=/var/lock/subsys/ejabberd

test -f $EJABBERD || exit 0
test -f $EJABBERDCTL || exit 0

start()
{
	start_daemon \
		--lockfile "$LOCKFILE" \
		--user "$EJABBERD_USER" \
		--pidfile "$PIDFILE" \
		-- "$EJABBERD" -heart -noshell -detached
	RETVAL=$?
}

stop()
{
#	stop_daemon \
#	    --lockfile "$LOCKFILE" \
#	    --pidfile "$PIDFILE" \
#	    --expect-user "$EJABBERD_USER" \
#	    -- "$EJABBERD"

	msg_stopping "${0##*/}"
	RET=`su -c "$EJABBERDCTL stop" -s '/bin/sh' "$EJABBERD_USER"`
	if [ -z "$RET" ]; then
		success "${0##*/} startup"
		RETVAL=0
	else
		failure "$RET"
		RETVAL=1
	fi
	echo
}

reload()
{
	msg_reloading "${0##*/}"
	RET=`su -c "$EJABBERDCTL restart" -s '/bin/sh' "$EJABBERD_USER"`
	if [ -z "$RET" ]; then
		success "${0##*/} reload"
		RETVAL=0
	else
		failure "$RET"
		RETVAL=1
	fi
	echo
}

status()
{
	su -c "$EJABBERDCTL status" -s '/bin/sh' "$EJABBERD_USER"
	RETVAL=$?
	return $RETVAL
}

case "$1" in
start)
	start
        ;;
stop)
	stop
        ;;
restart)
	stop
	start
	;;
reload)
	reload
	;;
status)
	status
	;;
*)
	msg_usage "${0##*/} {start|stop|status|restart|reload}"
	RETVAL=1
	;;
esac

exit $RETVAL
