#!/bin/bash

### BEGIN INIT INFO
# Provides:          airtime-liquidsoap
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Liquidsoap daemon
### END INIT INFO

USERID=pypo
GROUPID=pypo
NAME="Liquidsoap Playout Engine"

DAEMON=/usr/lib/airtime/pypo/bin/airtime-liquidsoap
PIDFILE=/var/run/airtime-liquidsoap.pid

start () {
        start_no_monit
        monit monitor airtime-liquidsoap >/dev/null 2>&1
}

stop () {
        monit unmonitor airtime-liquidsoap >/dev/null 2>&1
        #send term signal after 10 seconds
        timeout 10 /usr/lib/airtime/airtime_virtualenv/bin/python /usr/lib/airtime/pypo/bin/liquidsoap_scripts/liquidsoap_prepare_terminate.py        
        # Send TERM after 5 seconds, wait at most 30 seconds.
        start-stop-daemon --stop --oknodo --retry=TERM/10/KILL/5 --quiet --pidfile $PIDFILE
        rm -f $PIDFILE
}

start_no_monit() {
        chown pypo:pypo /var/log/airtime/pypo
        chown pypo:pypo /var/log/airtime/pypo-liquidsoap

        touch /var/run/airtime-liquidsoap.pid
        chown pypo:pypo /var/run/airtime-liquidsoap.pid

        start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \
            --pidfile /var/run/airtime-liquidsoap.pid --nicelevel -15 --startas $DAEMON
}


case "${1:-''}" in
  'stop')
           echo -n "Stopping Liquidsoap: "
           stop
           echo "Done."
        ;;
  'start')
           echo -n "Starting Liquidsoap: "
           start
           echo "Done."
        ;;
  'restart')
           # restart commands here
           echo -n "Restarting Liquidsoap: "
           stop
           start
           echo "Done."
        ;;

  'status')
        if [ -f "/var/run/airtime-liquidsoap.pid" ]; then
            pid=`cat /var/run/airtime-liquidsoap.pid`
            if [ -d "/proc/$pid" ]; then
                echo "Liquidsoap is running"
                exit 0
            fi
        fi
        echo "Liquidsoap is not running"
        exit 1
        ;;
  'start-no-monit')
           # restart commands here
           echo -n "Starting $NAME: "
           start_no_monit
           echo "Done."
        ;;

  *)      # no parameter specified
        echo "Usage: $SELF start|stop|restart"
        exit 1
        ;;

esac
