#!/bin/sh
PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:/bin:/sbin
UNIX95=YES; export UNIX95

DATE_CMD=/usr/bin/date

AGENT_PATH=/home/NGFAgent
export AGENT_PATH

AGENT_NAME="$AGENT_PATH/bin/NGFAgent.exe"
WATCHDOG_NAME="$AGENT_PATH/bin/INWatchDog.exe"
MODE=$1

AGENT_CONF_FILE=$AGENT_PATH/conf/agent.conf
export AGENT_CONF_FILE
LD_LIBRARY_PATH=$AGENT_PATH/modules:$AGENT_PATH/watch_lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

export LIBPATH=$LD_LIBRARY_PATH:$LIBPATH

if [ "$MODE" = "-v" ]
then
	$AGENT_PATH/bin/NGFAgent.exe -v
	exit
fi

if [ "$MODE" = "-update" ]
then
        UPCNT=1
        STOP_MODE=0
        ICMP_MODE=0
        VCNT=`ps -ef | grep $WATCHDOG_NAME | egrep -v "grep|stop|cron|update" | wc -l | awk '{print $1}'`
        if [ "$VCNT" = "1" ]
        then
                PID=`ps -ef | grep $WATCHDOG_NAME | egrep -v "grep|update|stop|cron" | awk '{ print $2 }'`
                kill $PID
                $AGENT_PATH/bin/INWatchDog.exe stop
                STOP_MODE=1
        fi

        ICMPCNT=`ps -ef | grep "$AGENT_PATH/bin/OnmIcmp" | egrep -v "grep" | wc -l | awk '{print $1}'`
        if [ "$ICMPCNT" = "1" ]
        then
                PID=`ps -ef | grep "$AGENT_PATH/bin/OnmIcmp" | egrep -v "grep" | awk '{ print $2 }'`
                ICMP_MODE=1
                $AGENT_PATH/bin/INWatchDog.exe update $PID
        else
                $AGENT_PATH/bin/INWatchDog.exe update -1
        fi

        while [ "$UPCNT" = "1" ]
        do
                sleep 5
                UPCNT=`ps -ef | grep "$WATCHDOG_NAME update" | egrep -v "grep" | wc -l | awk '{ print $1 }'`
        done

        if [ "$STOP_MODE" = "1" ]
        then
                VCNT=`ps -ef | grep "$WATCHDOG_NAME stop" | egrep -v "grep|cron|update" | wc -l | awk '{print $1}'`
                if [ "$VCNT" = "1" ]
                then
                        PID=`ps -ef | grep $WATCHDOG_NAME | egrep -v "grep" | awk '{ print $2 }'`
                        kill $PID
                        nohup $AGENT_PATH/bin/INWatchDog.exe 1> /dev/null 2>&1 &
                fi
        fi

        if [ "$ICMP_MODE" = "1" ]
        then
                ICMPCNT=`ps -ef | grep "$AGENT_PATH/bin/OnmIcmp" | egrep -v "grep" | wc -l | awk '{print $1}'`
                if [ "$ICMPCNT" = "0" ]
                then
                        $AGENT_PATH/bin/chkIcmp.sh 1> /dev/null
                fi
        fi
        exit
fi

CNT=`ps -ef | grep $WATCHDOG_NAME | egrep -v "grep" | wc -l | awk '{print $1}'`

if [ "$CNT" = "0" ]
then
	echo "---------------------"
	$DATE_CMD
	echo " INWatchDog started!!"
	echo "---------------------"
	echo
	$AGENT_PATH/bin/INWatchDog.exe
elif [ "$CNT" = "1" ]
then
	CNT=`ps -ef | grep $AGENT_NAME | egrep -v "grep" | wc -l | awk '{print $1}'`
	CHK_MODE=`ps -ef | grep $WATCHDOG_NAME | egrep -v "grep" | awk '{print $9}'`
	if [ "$MODE" = "cron" ]
	then
		if [ "$CHK_MODE" = "stop" ]
		then
			exit
		fi
	fi

	if [ "$CNT" = "0" ]
	then
		PID=`ps -ef | grep $WATCHDOG_NAME | egrep -v "grep" | awk '{ print $2 }'`
		kill $PID

	echo "---------------------"
	$DATE_CMD
	echo " INWatchDog Restart!!"
	echo "---------------------"
	echo
	$AGENT_PATH/bin/INWatchDog.exe
	fi
fi