#!/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
