#!/bin/ksh
#############################################################################
#
# Licensed Materials - Property of IBM
#
# 5648-A30
# (C) COPYRIGHT International Business Machines Corp. 1993, 1998
#
# 5648-A32
# (C) COPYRIGHT International Business Machines Corp. 1993, 1998
#
# 5648-A29
# (C) COPYRIGHT International Business Machines Corp. 1993, 1998
#
# 5648-A34
# (C) COPYRIGHT International Business Machines Corp. 1993, 1998
#
# All Rights Reserved
# US Government Users Restricted Rights - Use, duplication or
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
#
#############################################################################
#
# NAME: db2nqadm
#
# FUNCTION: db2nqadm - starts and stops NetQ servers and deamons
#
# USAGE: db2nqadm [start|stop]
#
#############################################################################

#############################################################
##        Start of definitions of local variables          ##
#############################################################

# Default run option
setopts="+x"

PROGNAME=$(/bin/basename $0)       # Program name                           
                                                                            
OSN=$(/bin/uname | /usr/bin/awk '{print $1}' )      # Operating system name 
                                                                            
setopts="+x"                                                                
                                                                            
# set variables for NetQ                             
case ${OSN?} in                                                             
    "AIX")                                                                  
        IMNINSTPATH="/usr/IMNSearch"                                        
        CMD_CHK_INS="lslpp -l"                               
        CMD_IMNSEARCH="aix_IMNSearch"      ;;
    "HP-UX")                                                                
        IMNINSTPATH="/opt/IMNSearch"                                        
        CMD_CHK_INS="swlist -l product"                                     
        CMD_IMNSEARCH="${IMNINSTPATH?}/bin/S990IMNSearch" ;;                
    "SunOS")                                                                
        IMNINSTPATH="/opt/IMNSearch"                                        
        CMD_CHK_INS="pkginfo"                                               
        CMD_IMNSEARCH="${IMNINSTPATH?}/bin/S90IMNSearch" ;;                 
esac                                                                        

CMD_IMNSS="${IMNINSTPATH?}/bin/imnss"
CMD_IMQSS="${IMNINSTPATH?}/bin/imqss"
CMD_HTTPD="${IMNINSTPATH?}/httpdlite/httpdlite"

IMQ_ENV_FILE="${IMNINSTPATH?}/bin/imq_env"
HTTPDLCON_FILE="/etc/IMNSearch/httpdlite/httpdlite.conf"

#############################################################
##         End of definitions of global variables          ##
#############################################################

#############################################################
##              Start of function definition               ##
#############################################################

# To display the command syntax
syntax ()
{
    echo ""
    echo "${PROGNAME?} [start|stop]"
    echo "start : start all NetQ services and daemon"
    echo "stop  : stop  all NetQ services and daemon"
    echo ""
    echo "NOTE: At least one flag MUST be specified."
    exit 0
}

# check to see if NetQ has been installed
chk_install ()
{
    ${CMD_CHK_INS?} | grep -i imn 1>/dev/null 2>/dev/null
    if [ $? -ne '0' ]; then
        echo "NetQ product has not been installed, exiting...."
        exit
    fi
}

# check return code
chk_return ()
{
    rc=$1
    cmd_text=$2
    if [ $rc -ne 0 ]; then
        echo "Command ${cmd_text?} failed with rc ${rc?}"
    fi
}

aix_IMNSearch ()
{
    mode=$1
    if [ "$LANG" = "" ]; then
        LANG=C
        export LANG
    fi
    if [ "$NLSPATH" = "" ]; then
        NLSPATH="/usr/lib/nls/message/%L/%N"
        export NLSPATH
    fi
    if [ -x ${IMQ_ENV_FILE?} ]; then
	. ${IMQ_ENV_FILE?}
        # IMQCONFIGSRV=/etc/IMNSearch
        # IMQCONFIGCL=/etc/IMNSearch/dbcshelp
        # DIAGLEVEL=0
        # LIBPATH=:/usr/lib:/lib:/etc:/usr/IMNSearch/lib
        # export IMQCONFIGSRV IMQCONFIGCL DIAGLEVEL LIBPATH
    fi
    case ${mode?} in
        "start") 
            if [ -x ${CMD_IMNSS?} ]; then
                ${CMD_IMNSS?} -start imnhelp 1> /dev/null 2> /dev/null
                chk_return $? "${CMD_IMNSS?} -start imnhelp"
            fi
            if [ -x ${CMD_IMQSS?} ]; then
                ${CMD_IMQSS?} -start dbcshelp 1> /dev/null 2> /dev/null
                chk_return $? "${CMD_IMNSS?} -start dbcshelp"
            fi
            if [ -x ${CMD_HTTPD?} ]; then
                kill_httpd
                NLSPATH=${NLSPATH?}:${IMNINSTPATH?}/httpdlite/%N
                export NLSPATH
                ${CMD_HTTPD?} -r ${HTTPDLCON_FILE?}
                nohup ${CMD_HTTPD?} -r ${HTTPDLCON_FILE?} 1> /dev/null 2> /dev/null &
            fi
            exit ;;
        "stop")
            if [ -x ${CMD_HTTPD?} ]; then
                kill_httpd
            fi
            if [ -x ${CMD_IMNSS?} ]; then
                ${CMD_IMNSS?} -stop imnhelp 1> /dev/null 2> /dev/null
                chk_return $? "${CMD_IMNSS?} -stop imnhelp"
            fi
            if [ -x ${CMD_IMQSS?} ]; then
                ${CMD_IMQSS?} -stop dbcshelp 1> /dev/null 2> /dev/null
                chk_return $? "${CMD_IMNSS?} -stop dbcshelp"
            fi
            exit ;;
    esac
}

kill_httpd ()
{
    for proc_id in `ps -ef | grep imnadm | grep -v 'grep imnadm' | awk '{print $2}'`
    do
    # echo "killing process $proc_id"
        kill -9 $proc_id
    done
}

#############################################################
##               End of function definition                ##
#############################################################


#############################################################
##               Start of main program                     ##
#############################################################

set ${setopts?}
SCRNAME="db2nqadm"         # Name of this script file

if [ $# -ne 1 ]; then
    syntax
else
    OPT=$1
fi

if [ ${OPT?} != "stop" -a ${OPT?} != "start" ]; then
    syntax
    exit
fi

chk_install

if [ ${OPT?} = "stop" ]; then
    echo "Running ${CMD_IMNSEARCH?} stop"
    ${CMD_IMNSEARCH?} stop
    chk_return $? "${CMD_IMNSEARCH?} stop"
else
    echo "Running ${CMD_IMNSEARCH?} start"
    ${CMD_IMNSEARCH?} start
    chk_return $? "${CMD_IMNSEARCH?} start"
fi

exit 0
