#!/bin/bash

### BEGIN INIT INFO
# Provides:          xavante
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts the xavante httpd daemon.
# Description:       Starts xavante, a lightweight web server
#                    written in lua
### END INIT INFO

# lsb functions, to use those ugly colors.. 
. /lib/lsb/init-functions

### some default values ###

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON=/usr/bin/lua5.1
PIDFILE=/var/run/xavante.pid

DESC="xavante web server"

### /etc/default/ loading ###

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

if [ -z "$RUN_XAVANTE" ] ; then
	exit 0	
fi

test -x $DAEMON || exit 0

set -e

sites=""
for X in /etc/xavante/sites-enabled/*.lua; do
	sites="$sites `basename $X .lua`"
done

### helpers ###

start_xavante () {
	log_daemon_msg "Starting $DESC" "$sites"
	start-stop-daemon --start -b --quiet -m -p $PIDFILE -c www-data:www-data\
		--exec $DAEMON -- /etc/xavante/xavante_start.lua
	log_end_msg $?
}

stop_xavante () {
	if [ -e $PIDFILE ]; then
		log_daemon_msg "Stopping $DESC" "$sites"
		start-stop-daemon --stop --quiet -p $PIDFILE || true
		log_end_msg $?
		rm $PIDFILE
	fi
}

status_xavante () {
	P=`cat $PIDFILE`
	N=`ps -e | grep "^ *$P " | grep $DAEMON | wc -l`
	if [ $N > 0 ]; then
		echo "xavante is running with pid $P."
	else
		echo "xavante is dead."
	fi
}

### real code ###

case "$1" in
  start)
	start_xavante
	;;
  stop)
	stop_xavante
	;;
  restart|force-reload)
	stop_xavante
	sleep 1
	start_xavante
	;;
  status)
  	status_xavante
  	;;
  *)
	N=/etc/init.d/xavante
	echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
	exit 1
	;;
esac

exit 0
