#!/bin/bash
### BEGIN INIT INFO
# Provides: tids
# Default-Start: 2 3 4 5
# Default-Stop: 0 1  6
# Required-Start: $local_fs $remote_fs $network
# Required-Stop:local_fs $remote_fs $network
# Should-Start: freeradius
# Short-Description: Starts Moonshot TIDS
# Description: Starts the Moonshot Temporary ID Service
### END INIT INFO

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

. /lib/lsb/init-functions

[ -z "$HOME" ] && export HOME=/

usage() {
    echo "Usage: $0 {start|stop|status}"
}

# Load the configuration
[ -f /etc/default/trust_router ] || exit 0
. /etc/default/trust_router
TIDS_PIDDIR=/var/run/trust_router
TIDS_LOGDIR=/var/log/trust_router

# Create the PID and LOG directories
[ -d "$TIDS_PIDDIR" ] || mkdir -p $TIDS_PIDDIR && chown $TIDS_USER:$TIDS_GROUP $TIDS_PIDDIR
[ -d "$TIDS_LOGDIR" ] || mkdir -p $TIDS_LOGDIR && chown $TIDS_USER:$TIDS_GROUP $TIDS_LOGDIR

# Some variables
prog=/usr/lib/trust_router/tids-wrapper
PIDFILE="$TIDS_PIDDIR/tids.pid"
LOGFILE="$TIDS_LOGDIR/tids.log"

# Does the trust router and wrapper exist
[ -x /usr/bin/tids ] || exit 5
[ -x $prog ] || exit 5

[ -f "$LOGFILE" ] || touch $LOGFILE && chown $TIDS_USER:$TIDS_GROUP $LOGFILE

OPTIONS="$PIDFILE $LOGFILE --ip ${ipaddr:-auto} --hostname ${hostname:-auto} --port ${port:-auto} $gssname"


case $1 in
    start)
        if [ -f ${PIDFILE} ] ;
        then
                OLD_PID=$(cat "$PIDFILE")

                if [ -d "/proc/$OLD_PID" ] ;
                then
                        echo "Error: TIDS already running" ; exit 1
                else
                        rm $PIDFILE
                fi
        fi

        timestamp=$(date)
        echo "$timestamp Starting TIDS..." >> $LOGFILE
        log_daemon_msg "Starting TIDS" "tids"
        start-stop-daemon --start --chuid $TIDS_USER --pidfile $PIDFILE --oknodo -x $prog -- $OPTIONS
        status=$?
        log_end_msg $status
        ;;
    stop)
        timestamp=$(date)
        echo "$timestamp Stopping TIDS..." >> $LOGFILE
        log_daemon_msg "Stopping TIDS" "tids"
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
        status=$?
        log_end_msg $status
        rm -f $PIDFILE
        ;;
    status)
        if [ -f $PIDFILE ] ;
        then
                PID=$(cat "$PIDFILE")

                if [ -d "/proc/$PID" ] ;
                then
                        echo "TIDS is running (pid $PID)"
                else
                        if [ -e $PIDFILE ] ; then
                                echo "TIDS appears to be dead but its PID file exists"
                        else
                                echo "TIDS appears to be stopped"
                        fi
                fi
        else
                echo "TIDS appears to be stopped"
        fi
        exit 0
        ;;
    reload | force-reload | condrestart | try-restart)
        usage
        exit 3
        ;;
    *)
        usage
        exit 2
        ;;
esac
