#! /bin/sh

### BEGIN INIT INFO
# Provides:             prosody
# Required-Start:       $network $local_fs $remote_fs
# Required-Stop:        $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Prosody XMPP Server
### END INIT INFO

set -e

# /etc/init.d/prosody: start and stop Prosody XMPP server

DAEMON=/usr/bin/prosody
PIDPATH=/var/run/prosody
PIDFILE="$PIDPATH"/prosody.pid
RUNTIME=/usr/bin/lua5.1

NICE=
MAXFDS=
CPUSCHED=
IOSCHED=

test -x "$DAEMON" || exit 0

if [ -f /etc/default/prosody ] ; then
    . /etc/default/prosody
fi

if [ ! -d "$PIDPATH" ]; then
	mkdir "$PIDPATH";
	chown prosody:adm "$PIDPATH";
fi

# Check that user 'prosody' exists
check_user() {
	if ! getent passwd prosody >/dev/null; then
		exit 1;
	fi
}

start_opts() {
	test -z "$NICE"     || echo -n " --nicelevel $NICE"
	test -z "$CPUSCHED" || echo -n " --procsched $CPUSCHED"
	test -z "$IOSCHED"  || echo -n " --iosched $IOSCHED"
}

. /lib/lsb/init-functions

test -z "$MAXFDS" || ulimit -n "$MAXFDS"

case "$1" in
  start)
  	check_user
	log_daemon_msg "Starting Prosody XMPP Server" "prosody"

	if start-stop-daemon --start --quiet --oknodo --pidfile "$PIDFILE" --chuid prosody $(start_opts) --exec "$RUNTIME" -- "$DAEMON"; then
		log_end_msg 0
	else
		log_end_msg 1
	fi
	;;
  stop)
  	log_daemon_msg "Stopping Prosody XMPP Server" "prosody"
  	if start-stop-daemon --stop --retry 30 --quiet --oknodo --pidfile "$PIDFILE"; then
  		log_end_msg 0
  	else
  		log_end_msg 1
  	fi
	;;
  force-reload|restart)
  	log_daemon_msg "Restarting Prosody XMPP Server" "prosody"
  	
  	start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile "$PIDFILE"
  	
  	check_user log_end_msg
  	
  	if start-stop-daemon --start --quiet --oknodo --pidfile "$PIDFILE" --chuid prosody $(start_opts) --exec "$RUNTIME" -- "$DAEMON"; then
  		log_end_msg 0
  	else
  		log_end_msg 1
  	fi
  	;;
  reload)
  	log_daemon_msg "Reloading Prosody XMPP Server" "prosody"
  	
  	if start-stop-daemon --stop --quiet --pidfile "$PIDFILE" --signal 1; then
  		log_end_msg 0
  	else
  		log_end_msg 1
  	fi
  	;;
  *)
  	log_action_msg "Usage: /etc/init.d/prosody {start|stop|restart|reload}"
  	exit 1
esac

exit 0
