#!/bin/sh
#
# ejabberd	Fault-tolerant distributed Jabber/XMPP server
#
# chkconfig:	345 99 01
#
# description:	Fault-tolerant distributed Jabber/XMPP server
#


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

# Get service config - may override defaults
[ -f /etc/sysconfig/ejabberd ] && . /etc/sysconfig/ejabberd

EJABBERD_DOC_PATH="/usr/share/doc/ejabberd-23.10/doc"
EJABBERD_PID_PATH=/var/run/jabber/ejabberd.pid
export EJABBERD_DOC_PATH EJABBERD_PID_PATH

start() {
	# Check if the service is already running?
	if [ ! -f /var/lock/subsys/ejabberd ]; then
		msg_starting ejabberd
		daemon --user jabber /usr/sbin/ejabberdctl start
		RETVAL=$?
		if [ $RETVAL -eq 0 ]; then
			msg_starting "ejabberd start confirmation"
			daemon --user jabber /usr/sbin/ejabberdctl started
			RETVAL=$?
		fi
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/ejabberd
	else
		msg_already_running ejabberd
	fi
}

stop() {
	# Stop daemons.
	if [ -f /var/lock/subsys/ejabberd ]; then
		msg_stopping ejabberd ; busy
		out=$(/bin/su - jabber -s /bin/sh -c "/usr/sbin/ejabberdctl stop" 2>&1)
		RETVAL=$?
		if [ $RETVAL -eq 0 ]; then
			out2=$(/bin/su - jabber -s /bin/sh -c "/usr/sbin/ejabberdctl stopped" 2>&1)
			RETVAL=$?
		fi
		if [ $RETVAL -eq 0 ]; then
			ok
		else
			fail
			[ -n "$out" ] && echo $out
			[ -n "$out2" ] && echo $out2
		fi
		rm -f /var/lock/subsys/ejabberd
	else
		msg_not_running ejabberd
	fi
}

reload() {
	# Reload configuration
	if [ ! -f /var/lock/subsys/ejabberd ]; then
		msg_not_running ejabberd
		RETVAL=7
		return
	fi
	msg_reloading ejabberd
	daemon --user jabber /usr/sbin/ejabberdctl reload_config
	RETVAL=$?
}

# See how we were called.
case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
	stop
	start
	;;
  reload|force-reload)
	reload
	;;
  status)
	status --pidfile $EJABBERD_PID_PATH ejabberd
	RETVAL=$?
	;;
  *)
	msg_usage "$0 {start|stop|status|restart|reload|force-reload}"
	exit 3
esac

exit $RETVAL
