#!/bin/bash
# Copyright (c) 2014-2023 Pandora FMS 
#
# /etc/init.d/satellite_serverd
#
# System startup script for Satellite Server
#
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 90 90
# description: Satellite Server startup script
#
# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides:       satellite_server
# Required-Start: $network
# Should-Start:   $syslog
# Required-Stop:  $network
# Should-Stop:    $network
# Default-Start:  2 3 5
# Default-Stop:   0 1 6
# Short-Description: Satellite Server startup script
# Description:    Satellite Server startup script
### END INIT INFO

echo "This init.d script is deprecated."
echo "Use systemctl to start service."
exit -1

# Check for SUSE status scripts
if [ -f /etc/rc.status ]
then
	. /etc/rc.status
	rc_reset
else
	# Define rc functions for non-suse systems, "void" functions.
	function rc_status () { VOID=1; }
	function rc_exit () { exit; }
	function rc_failed () { VOID=1; }

fi

function get_pid {
	# This sets COLUMNS to XXX chars, because if command is run 
	# in a "strech" term, ps aux don't report more than COLUMNS
	# characters and this will not work. 
	COLUMNS=300
	SATELLITE_PID=`ps -Af | grep "$SATELLITE_PATH$SATELLITE_DAEMON" | grep -v grep | tail -1 | awk '{ print $2 }'`
	echo $SATELLITE_PID
}

# Satellite server settings
SATELLITE_DAEMON="satellite_server"
SATELLITE_PATH="/usr/bin"

# Set umask to 0002, because group MUST have access to write files to
# use remote file management on Pandora FMS Enterprise.

umask 0007

# Main script
SATELLITE_OPTS="/etc/pandora/satellite_server.conf"

# Fix SATELLITE_PATH
case "$SATELLITE_PATH" in
	*\/)
	;;
	*)
		SATELLITE_PATH="${SATELLITE_PATH}/"
	;;
esac

if [ ! -f "${SATELLITE_PATH}$SATELLITE_DAEMON" ]; then
	echo "Satellite Server not found in ${SATELLITE_PATH}$SATELLITE_DAEMON"
	rc_failed 1
	rc_exit
fi

case "$1" in
	start)
		SATELLITE_PID=`get_pid`
		if [ ! -z "$SATELLITE_PID" ]; then
			echo "Satellite Server is already running with PID $SATELLITE_PID"
			rc_failed 2
			rc_exit	
		fi
	
		${SATELLITE_PATH}$SATELLITE_DAEMON $SATELLITE_OPTS
		sleep 1

		SATELLITE_PID=`get_pid`
		if [ ! -z "$SATELLITE_PID" ]; then
			echo "Satellite Server is now running with PID $SATELLITE_PID"
			rc_status -v
		else
			echo "Satellite Server could not be started."
			rc_status -v
		fi

	;;
	
	stop)
		SATELLITE_PID=`get_pid`
		if [ -z "$SATELLITE_PID" ]; then
			echo "Satellite Server does not seem to be running"
			rc_failed 2
		else
			kill $SATELLITE_PID
			sleep 1
			_PID=`get_pid`

			if [ "$_PID" = "$SATELLITE_PID" ]; then
				echo "Satellite Server could not be stopped"
				rc_status -s
			fi

			echo "Stopping Satellite Server"
			rc_status -v
		fi

	;;

	force-reload|restart)
		$0 stop
		sleep 1
		$0 start
		rc_status
	;;

	status)
		SATELLITE_PID=`get_pid`
		if [ -z "$SATELLITE_PID" ]; then
			echo "Satellite Server is not running."
			rc_status 
		else
			echo "Satellite Server is running with PID $SATELLITE_PID."
			rc_status 
		fi
		
	;;

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

rc_exit
