#! /bin/sh
### BEGIN INIT INFO
# Provides:          carbon-relay-ng
# Required-Start:    $remote_fs $syslog $network
# Required-Stop:     $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: carbon-relay-ng
# Description:       Relay daemon for carbon-cache, a component of Graphite.
### END INIT INFO

# Author: Torbjörn Norinder <torbjorn@genunix.se>. 
# Based on a script by Jonas Genannt <jonas.genannt@capi2name.de>.

PATH=/sbin:/usr/sbin:/bin:/usr/bin
NAME=carbon-relay-ng
DAEMON=/usr/local/bin/$NAME
PIDFILE=/var/run/carbon-relay-ng/$NAME.pid
CONFFILE=/etc/carbon-relay-ng.ini
DAEMON_ARGS=$CONFFILE
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/${NAME} ] && . /etc/default/${NAME}

[ -z "$RELAY_USER" ] && RELAY_USER="carbon-relay-ng"
[ -z "$RELAY_GROUP" ] && RELAY_GROUP="carbon-relay-ng"
[ -z "$LOG_DIR" ] && LOG_DIR="/var/log/carbon-relay-ng"

. /lib/init/vars.sh

. /lib/lsb/init-functions

if [ ! -r $CONFFILE ]; then
	[ "$VERBOSE" != no ] && echo "Missing ${CONFFILE} - not starting."
	exit 0
fi

do_start()
{
	start-stop-daemon --no-close -c $RELAY_USER -d /var/lib/carbon-relay-ng --background --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
		$DAEMON_ARGS >${LOG_DIR}/carbon-relay-ng.log 2>&1 \
		|| return 2
}

do_stop()
{
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2

	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2

	rm -f $PIDFILE
	return "$RETVAL"
}

do_reload() {
	start-stop-daemon --stop --quiet --pidfile $PIDFILE --signal USR2 --name $NAME
}

case "$1" in
	start)
	log_daemon_msg "Starting $NAME"
	do_start
	case "$?" in
		0|1) log_end_msg 0 ;;
		2) log_end_msg 1 ;;
	esac
	;;
	stop)
	log_daemon_msg "Stopping $NAME"
	do_stop
	case "$?" in
		0|1) log_end_msg 0 ;;
		2) log_end_msg 1 ;;
	esac
	;;
	status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
	restart|force-reload)
	log_daemon_msg "Reloading $NAME"
	do_reload
	;;
	*)
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
	exit 3
	;;
esac

:
