#!/bin/bash 
### BEGIN INIT INFO
# Provides:          kestrel-pre
# Required-Start:    $local_fs $network $named $time $syslog $postgresql
# Required-Stop:     $local_fs $network $named $time $syslog $postgresql
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       Script to run asp.net 5 application in background
### END INIT INFO

# Author: Ivan Derevianko aka druss <drussilla7@gmail.com>
# Modified by: Paul Schneider <redienhcs.luap@gmail.com>

. /lib/init/vars.sh
. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
CONFIGS="/etc/kestrel/*.prewebenv"

TMP_SAVE_runlevel_VAR=$runlevel
unset runlevel

running() {
  if [ -f $PIDFILE ]
  then
    PID=$(cat $PIDFILE)
    if kill -0 $PID 2>/dev/null
      then
	    return 0
    fi
  fi
  return 1
}


setdnxenv() {
    env=$1
    . $env
    # reset all except the name to default values
	export ASPNET_ENV=$NAME
	export WWW_USER=www-data
	YAVSCBIN=/usr/local/bin/yavscd-pre
	PROJECT=approot/Web
	CONFIGURATION=Release
	ROOT=/srv/www/yavscpre
    DESC="$NAME"
    PIDFILE=/var/run/kestrel-${NAME}.pid
    LOGDIR=/var/log
    # reset to specified values
    . $env
}

status() {
  for env in $CONFIGS
  do
    setdnxenv "$env"
	if running;
	then
		echo "Service running $DESC ($NAME; pid: $PID)"
	else
		echo "Service stopped $DESC ($NAME)"
	fi
  done
}


start() {
  for env in $CONFIGS
  do
    setdnxenv "$env"
	if running; then
		echo "Service already running $DESC" "$NAME"
		log_end_msg 0  
	else
		log_daemon_msg "Starting service $NAME for user $WWW_USER"
		if ! start-stop-daemon -SbmCv -u $WWW_USER -p $PIDFILE -d $ROOT -g www-data -x $YAVSCBIN -- --project $PROJECT --configuration $CONFIGURATION $NAME > "${LOGDIR}/kestrel-${NAME}.log"
        then 
			log_daemon_msg "Could not start $NAME : $?, see ${LOGDIR}/kestrel-${NAME}.log"
			log_end_msg 2
		else
			log_daemon_msg "Service $DESC started ($NAME), logs: ${LOGDIR}/kestrel-${NAME}.log"
			log_end_msg 0  
		fi
	fi
  done

}

stop() {
  for env in $CONFIGS
  do
    setdnxenv "$env"
	if running
	then
		log_daemon_msg "Stopping service $NAME"
		start-stop-daemon -K -p "$PIDFILE"
		log_daemon_msg "$DESC stopped"
		log_end_msg 0  
	else
		log_daemon_msg "$DESC Service not running"
	    log_end_msg 1  
	fi
  done
}


case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
	sleep 1
    start
    ;;
  status)
    status
	;;

  *)
    echo "Usage: $0 {start|stop|restart}"
esac

export runlevel=$TMP_SAVE_runlevel_VAR


