#!/bin/sh

### BEGIN INIT INFO
# Provides:          schleuder-api-daemon
# 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: Schleuder API daemon
# Description:       Schleuder API daemon — provides access for schleuder-cli and schleuder-web
### END INIT INFO

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

. /lib/init/vars.sh

. /lib/lsb/init-functions

NAME=schleuder-api-daemon
DAEMON=/usr/local/bin/schleuder-api-daemon
DESC="Schleuder API daemon"
PIDFILE=/var/run/$NAME.pid
USER=schleuder
GROUP=schleuder

test -x $DAEMON || exit 5

start_schleuder_api_daemon() {
    if [ -f "$PIDFILE" ]; then
        echo ""
        log_failure_msg "$DESC is running already, please stop it first"
        exit 1
    fi
    
    if ! id $USER >/dev/null 2>&1; then
        log_failure_msg "User \"$USER\" does not exist"
        exit 1
    fi
    
    if ! getent group $GROUP >/dev/null 2>&1; then
        log_failure_msg "Group \"$GROUP\" does not exist"
        exit 1
    fi
    
    start-stop-daemon --chuid "$USER":"$GROUP" --start --pidfile $PIDFILE  --make-pidfile --background --startas $DAEMON -- $NAME
}

stop_schleuder_api_daemon() {
    if [ -f "$PIDFILE" ]; then
        start-stop-daemon --stop --retry TERM/10/KILL/5 --pidfile $PIDFILE --quiet --oknodo --pidfile "$PIDFILE"
        rm -f $PIDFILE
    fi
}

status_schleuder_api_daemon() {
    if [ ! -e $PIDFILE ]; then
        status_of_proc "${DAEMON}" "${DESC}"
    else
        status_of_proc -p "${PIDFILE}" "${DAEMON}" "${DESC}"
    fi
}

case "$1" in
    start)
        log_begin_msg "Starting $DESC"
        start_schleuder_api_daemon
        log_end_msg $?
        ;;
    stop)
        log_begin_msg "Stopping $DESC"
        stop_schleuder_api_daemon
        log_end_msg $?
        ;;
    status)
        status_schleuder_api_daemon
        ;;
    restart|reload|force-reload)
        log_begin_msg "Restarting $DESC"
        stop_schleuder_api_daemon
        start_schleuder_api_daemon
        log_end_msg $?
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart|reload|force-reload}"
        exit 1
        ;;
esac
