#! /bin/sh
### BEGIN INIT INFO
# Provides:          resiprocate-turn-server
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: reTurn Server
# Description:       STUN and TURN Relay for VoIP media streams
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=reTurnServer
BIN=reTurnServer
DESC="TURN relay"
DAEMON=/usr/sbin/$BIN
USER=return
GROUP=return
PIDFILE="/var/run/$BIN/$NAME.pid"
PIDFILE_DIR=`dirname $PIDFILE`
LOG_DIR=/var/log/reTurnServer

. /lib/lsb/init-functions

test -x $DAEMON || exit 1
umask 002

# Include defaults if available
if [ -f /etc/default/$NAME ] ; then
	. /etc/default/$NAME
fi

DAEMON_OPTS="/etc/reTurn/reTurnServer.config --Daemonize=true --PidFile=${PIDFILE}"

if [ ! -d "$PIDFILE_DIR" ];then
	mkdir -p "$PIDFILE_DIR"
    chown $USER:$GROUP "$PIDFILE_DIR"
fi

if [ ! -d "$LOG_DIR" ];then
        mkdir -p "$LOG_DIR"
    chown $USER:$GROUP "$LOG_DIR"
fi

set -e

case "$1" in
  start)
	log_daemon_msg "Starting $DESC ($NAME)" $BIN
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
	;;
  stop)
	log_daemon_msg "Stopping $DESC ($NAME)" $BIN
	start-stop-daemon --stop --quiet --oknodo --user $USER --pidfile $PIDFILE --exec $DAEMON
	;;
  status)
	echo -n "Status $DESC: "
	PID=$(cat $PIDFILE)
	kill -0 $PID
	rc=$?
	# Check exit code
	if [ "$rc" -ne 0 ]
	then
		echo "$NAME is NOT running."
		exit 7
	else
		echo "$NAME is running with PID: $PID"
	fi
	;;
  reload|force-reload)
	log_daemon_msg "Reloading $DESC ($NAME)" $BIN
	if [ -f "$PIDFILE" ] ; then
		start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE || rc=$?
	fi
	;;
  restart)
	log_daemon_msg "Restarting $DESC ($NAME)" $BIN
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
	sleep 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|status|restart|reload|force-reload}" >&2
	exit 1
	;;
esac

exit 0
