#!/bin/bash

### BEGIN INIT INFO
# Provides:          djrandom
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: DJ:Random services
### END INIT INFO

BASE_DAEMONS="
	index_server
	storage_server
	djfe
	djproc
	"

MASTER_DAEMONS="
	db_server
	task_server
	"

USER=djrandom
DAEMONS="${BASE_DAEMONS}"
DJRANDOM_ROOT=/home/$USER/go

# Default options for the 'djfe' binary.
djfe_OPTIONS="--static-dir=/etc/djrandom/static --templates-dir=/etc/djrandom/templates"

test -e /etc/default/djrandom && source /etc/default/djrandom

log_dir=/var/log/djrandom
run_dir=/var/run/djrandom
bin_dir=${DJRANDOM_ROOT}/bin


start() {
  test -e ${log_dir} || mkdir ${log_dir}
  test -n "${USER}" && chown ${USER}:adm ${log_dir}
  test -e ${run_dir} || mkdir ${run_dir}
  test -n "${USER}" && chown ${USER} ${run_dir}

  ulimit -n 16384

  echo -n "Starting DJRandom: "
  for daemon in ${DAEMONS} ; do
    echo -n "${daemon} "
    pidfile=${run_dir}/${daemon}.pid
    logfile=${log_dir}/${daemon}.log
    bin=${bin_dir}/${daemon}
    opts=$(eval "echo \${${daemon}_OPTIONS}")
    start-stop-daemon --start --background --oknodo \
	${USER:+--chuid ${USER}} \
	--pidfile ${pidfile} \
	--exec ${bin} -- \
	--pid-file ${pidfile} --log-file ${logfile} ${opts}
  done
  echo
}

stop() {
  echo -n "Stopping DJRandom: "
  for daemon in ${DAEMONS} ; do
    pidfile=${run_dir}/${daemon}.pid
    bin=${bin_dir}/${daemon}
    echo -n "${daemon} "
    start-stop-daemon --stop --oknodo \
	${USER:+--user ${USER}} \
	--pidfile ${pidfile} \
	--exec ${bin}
    rm -f ${pidfile}
  done
  echo
}


case "$1" in
start)
	start
	;;
stop)
	stop
	;;
restart)
	"$0" stop
	sleep 1
	"$0" start
	;;
*)
	echo "Usage: $0 {start|stop|restart}" 1>&2
	;;
esac

exit 0