#!/bin/sh
#  
# Startup script for neccapd
# 
# This should be customized for distribution standards
# (using rc_status etc.)
# The paths are hardcoded and are not automatically adjusted
# for different prefix
#
### BEGIN INIT INFO
# Provides:		neccapd 
# chkconfig: - 40 62
# Default-Start:	3 5
# Default-Stop:		0 1 2 6
# Short-Description:	
# Description:           
### END INIT INFO
# pull in settings
[ -f /etc/sysconfig/neccapinitd ] && . /etc/sysconfig/neccapinitd
NECCAPD_MODE=daemon

# Source function library.
. /opt/nec/mcemonitor/init.d/functions

# private settings
NECCAPD=${NECCAPD:-/opt/nec/neccapd/neccapd}
NECCAPDLOCKFILE="/var/opt/nec/neccapd_lock"
NECLOGDIR="/var/opt/nec"
SELINUX=`getenforce`
NECCAPDPIDDIR="/var/opt/nec/run"
NECCAPDPID="/var/opt/nec/run/neccapd.pid"

local_killproc() {
	pid=`cat $1`
	if checkpid $pid ; then
		kill -TERM $pid
		usleep 100000
		try=0
		while [ $try -lt 30 ] ; do
			checkpid $pid || break
			sleep 1
			let try+=1
		done
		if checkpid $pid ; then
			kill -KILL $pid >/dev/null 2>&1
			usleep 100000
		fi
	fi
	checkpid $pid
	RC=$?
	if [ "$RC" -eq 0 ]; then
		echo_failure
	else
		echo_success
	fi
}

case "$NECCAPD_MODE" in
daemon)
	;;
*)
	echo "Unknown neccapd mode $NECCAPD_MODE. Valid daemon"
	exit 1
esac

case "$1" in
start)

	if RET=`pgrep -f /opt/nec/neccapd/neccapd`
	then
		echo "neccapd already running."
		exit 0
	fi

    mkdir -p $NECCAPDPIDDIR
    exec 9>>$NECCAPDLOCKFILE
    flock -n 9
    if [ $? -ne 0 ] ; then
            echo "neccapd is already starting."
            exit 0
    fi
	if [ "$SELINUX" != "Disabled" ]; then
		chcon -t var_log_t $NECLOGDIR -R
		chcon -t var_log_t $NECCAPDLOCKFILE -R
	fi
	if [ ! -e $NECCAPD ] ; then
		echo -n $NECCAPD " was not found." 
		echo_failure
		echo
		flock -u 9
		rm -f $NECCAPDLOCKFILE
		exit 1
	fi
	if [ ! -d $NECLOGDIR ] ; then
		echo -n $NECLOGDIR " was not found." 
		echo_failure
		echo
		flock -u 9
		rm -f $NECCAPDLOCKFILE
		exit 1
	fi

	if [ "$NECCAPD_MODE" = "daemon" ] ; then
		echo -n "Starting neccapd daemon"
		daemon $NECCAPD
		if [ "$SELINUX" != "Disabled" ]; then
			chcon -t var_log_t /var/opt/nec/neccapd -R
		fi
	else
		echo "No capacity neccapd capability" 
	fi
	echo
	flock -u 9
	;;
stop)
	if ! RET=`pgrep -f /opt/nec/neccapd/neccapd`
	then
		echo "neccapd stopped."
		exit 0
	fi

    exec 9>>$NECCAPDLOCKFILE
    flock -n 9
    if [ $? -ne 0 ] ; then
            echo "neccapd is already stopping."
            exit 0
    fi
	if [ "$SELINUX" != "Disabled" ]; then
		chcon -t var_log_t $NECCAPDLOCKFILE -R
	fi

	if [ "$NECCAPD_MODE" = "daemon" ] ; then
		echo -n "Stopping neccapd"
		local_killproc $NECCAPDPID
	else
		echo neccapd not running
	fi
	flock -u 9
	rm -f $NECCAPDLOCKFILE
	echo
	;;
try-restart)
	$0 status > /dev/null && $0 restart
	;;
restart)
	$0 stop
	$0 start
	;;
reload)
	$0 try-restart
	;;
force-reload)
	$0 try-restart
	;;
status)
	if [ "$NECCAPD_MODE" = "daemon" ] ; then
		echo "Checking for neccapd"
		status $NECCAPD
	fi
	;;
*)
	echo "Usage: $0 {start|stop|try-restart|restart|status|force-reload|reload}"
	exit 1
esac


