#!/bin/sh
### BEGIN INIT INFO
# Provides: shadow-api
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Shadow API mqtt forwarder
### END INIT INFO

SIA_HOME=/opt/SIA

SCRIPT=$SIA_HOME/tools/shadow-api/main
RUNAS=mmtec #mmtec is used to run the scripts on SIA HW v1 as this is required in order to execute python which is installed in mmtec local folder
NAME=shadow-api

PIDFILE=/var/run/$NAME.pid
LOGFILE=$SIA_HOME/log/$NAME.log

start() {
	if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then
		echo 'Service already running' >&2
   		return 1
 	fi
	echo 'Starting SIA Connect Shadow API service…' >&2

	#If the user exists run it as the user	
	if id "$RUNAS" >/dev/null 2>&1; then
    	su -l $RUNAS -c $SCRIPT >> $LOGFILE 2>&1 &
		chown $RUNAS:$RUNAS $LOGFILE
  	else
    	$SCRIPT >> $LOGFILE 2>&1 &
  	fi

	echo $!> "$PIDFILE" & #Write the new PID to the PID file

	sleep 2
	PID=$(cat $PIDFILE)
}

stop() {
	if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then
		echo 'Service not running' >&2
		return 1
 	fi
	echo 'Stopping service…' >&2
	kill -15 $(cat $PIDFILE) 2> /dev/null
	rm -f $PIDFILE
	echo 'Service stopped' >&2
}

status() {
	printf "%-50s" "Checking $NAME..."
	if [ -f $PIDFILE ]; then
		PID=$(cat $PIDFILE)
        if [ -z "$(ps axf | grep ${PID} | grep -v grep)" ]; then
        	printf "%s\n" "The process appears to be dead but pidfile still exists"
        else
        	echo "Running, the PID is $PID"
       	fi
   	else
    	printf "%s\n" "Service not running"
   	fi
}


case "$1" in
	start)
   		start
   	;;
 	stop)
   		stop
   	;;
 	status)
   		status
   	;;
 	restart)
   		stop
   		start
   	;;
 	*)
   	echo "Usage: $0 {start|stop|status|restart}"
esac

