#!/bin/bash

### BEGIN INIT INFO
# Provides:          fdtsms
# Required-Start:    autossh mosquitto
# Required-Stop:     autossh mosquitto
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: fdtsms
# Description:       fdtsms
### END INIT INFO

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - misc error
# 2 - invalid or excess args
# 3 - unimplemented feature (e.g. reload)
# 4 - insufficient privilege
# 5 - program not installed
# 6 - program not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.

# Config-Datei einlesen
source /usr/local/smi/sub/etc/sdsfrpoc.conf

myname=$(echo $0 | $awk -F/ '{ print $NF }')

start_daemon()
{
	# Prüfen ob Daemon bereits läuft
	if [ ! -e "${rundir}/${myname}.pid" ]; then
		echo -n "Starting ${myname}... "
		# Start des Skripts im Logfile vermerken
		log "$myname" "-------------------------"
		log "$myname" "Start ${myname} begonnen"

		# Prüfen ob benötigte Binaries vorhanden sind
		missedfiles=0
		log "$myname" "prüfe Existenz nötiger Programme"
		test_if_exist=()
		test_if_exist+=($php)
		test_if_exist+=($awk)
		test_if_exist+=($jq)
		test_if_exist+=($base64)
		test_if_exist+=($mosquitto_pub)	
		test_if_exist+=($mosquitto_sub)
		test_if_exist+=($programdir/$skriptname)
		for i in "${!test_if_exist[@]}"; do
			if [ -e "${test_if_exist[$i]}" ]; then
				log "$myname" "  found: \"${test_if_exist[$i]}\""
			else
				log "$myname" "  missed: \"${test_if_exist[$i]}\""
				((missedfiles++))
			fi
		done
		if (( $missedfiles > 0 )); then
			log "$myname" "failed"
			echo "failed!"
			exit 5
		fi
		log "$myname" "done"
		
		# starting script
		log "$myname" "starte $myname"
		start-stop-daemon --start --quiet --pidfile "${rundir}/${myname}.pid" --make-pidfile --background --exec  "$program"
		log "$myname" "done"
		
		log "$myname" "Start ${myname} abgeschlossen"
		log "$myname" "-------------------------"
		echo "done!"
	else
		echo "Daemon is still running! Nothing to do."
	fi
}

stop_deamon()
{
    echo -n "Stopping ${myname}... "
	log "$myname" "-------------------------"
	log "$myname" "Stop ${myname} begonnen"

	
	# script beenden
	if [ -e "${rundir}/${myname}.pid" ]; then
		pid=$(cat "${rundir}/${myname}.pid")
		log "$myname" "beende $myname mit PID \"$pid\""
		for k in $(pstree -p $(echo $pid) | sed 's/(/\n(/g' | grep '(' | sed 's/(\(.*\)).*/\1/' | tr "\n" " "); do
			kill $k > /dev/null 2>&1
		done
		rm -f "${rundir}/${myname}.pid"
		log "$myname" "done"
	fi
	
	log "$myname" "Stop ${myname} abgeschlossen"
    log "$myname" "-------------------------"
    echo "done!"
	
 }

 status_daemon(){
	# Prüfen ob Daemon bereits läuft
	if [ -e "${rundir}/${myname}.pid" ]; then
		echo "Daemon is running"
	else
		echo "Daemon is not running"
	fi
 }

case "$1" in
  start)
    start_daemon
    ;;
  stop)
    stop_deamon
    ;;
  restart)
     stop_deamon
     start_daemon
     ;;
  status)
     status_daemon
     ;;
  *)
     echo "Usage: $0 {start|stop|restart|status}" >&2
     exit 2
esac
exit 0

		