#!/bin/sh
### BEGIN INIT INFO
# Provides: siashadowapi
# 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=siashadowapi

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 otherwise run as the user owner of systemd
	#Start process and write pid to pidfile
	if id "$RUNAS" >/dev/null 2>&1; then
		su -s /bin/sh -c "$SCRIPT >> $LOGFILE 2>&1 & echo \$!" $RUNAS > "$PIDFILE"
		chown $RUNAS:$RUNAS "$LOGFILE"
	else
		sh -c "$SCRIPT >> $LOGFILE 2>&1 & echo \$!" > "$PIDFILE"
	fi
	echo "SIA Connect Shadow API is now running"
}

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

