#!/bin/sh

### BEGIN INIT INFO
# Provides: TaniumClient
# Required-Start:	$local_fs $network $remote_fs $syslog
# Required-Stop:	$local_fs $network $remote_fs $syslog
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description: Tanium Client
### END INIT INFO

set -e

prog="TaniumClient"
instdir="opt/Tanium/TaniumClient"
key="tanium.pub"

test -x /$instdir/$prog || exit 0

. /lib/lsb/init-functions

check_for_key() {
	if [ ! -e /$instdir/$key ]; then
		log_action_msg "No deployment key installed"
		exit 1
	fi
}

case "$1" in
	start)
		check_for_key
		log_daemon_msg "Starting $prog" "$prog"
		if start-stop-daemon --start --quiet --oknodo --exec /$instdir/$prog; then
			log_end_msg 0
		else
			log_end_msg 1
		fi
		;;

	stop)
		log_daemon_msg "Stopping $prog" "$prog"
		if start-stop-daemon --stop --signal TERM --quiet --oknodo --name $prog; then
			log_end_msg 0
		else
			log_end_msg 1
		fi
		;;

	reload|force-reload)
		log_daemon_msg "Reloading $prog" "$prog"
		if start-stop-daemon --stop --signal 1 --quiet --oknodo --name $prog; then
			log_end_msg 0
		else
			log_end_msg 1
		fi
		;;

	restart)
		check_for_key
		log_daemon_msg "Restarting $prog" "$prog"
		start-stop-daemon --stop --signal TERM --quiet --oknodo --retry 30 --name $prog
		if start-stop-daemon --start --quiet --oknodo --exec /$instdir/$prog; then
			log_end_msg 0
		else
			log_end_msg 1
		fi
		;;
	try-restart)
		log_daemon_msg "Restarting $prog" "$prog"
		set +e
		start-stop-daemon --stop --signal TERM --quiet --retry 30 --name $prog
		RET="$?"
		set -e
		case $RET in
			0)
				# old daemon stopped
				check_for_key log_end_msg
				if start-stop-daemon --start --quiet --oknodo --exec /$instdir/$prog; then
					log_end_msg 0
				else
					log_end_msg 1
				fi
				;;
			1)
				# daemon not running
				log_progress_msg "(not running)"
				log_end_msg 0
				;;
			*)
				# failed to stop
				log_progress_msg "(failed to stop)"
				log_end_msg 1
				;;
		esac
		;;

	status)
		status_of_proc /$instdir/$prog $prog
		;;

	*)
		log_action_msg "Usage: /etc/init.d/taniumclient {start|stop|restart|condrestart|status}"
		exit=1
esac

exit 0
