#!/bin/sh -f
#++
#  emctl - control script for webapp operations
#
#  emctl is used to start and stop the oc4j servlet container
#  with the SMP Webapplications that provide monitoring and admin-
#  istration capabilities.
#--
#
# MODIFIED
#    prjaiswa   01/19/10 - bug 9292522
#    bkovuri    06/01/09 - Change PATH for jdk libraries in solaris x64
#    cvaishna   12/29/08 - Bug Fix : 7670922
#    sresrini   05/13/08 - 
#    bkovuri    02/22/08 - To set proper path of OUI Libraries
#    aptrived   18/03/07 - Give precedence PERL_BIN in PATH
#    cvaishna   06/24/07 - Bug Fix : 6139331
#    cvaishna   06/17/07 - Bug Fix : 6134078
#    aptrived   06/21/06 - Bug#5066096, unset ORA_NLS* 
#    vivsharm   09/05/06 - remove http client from oh lib in path
#    cvaishna   08/03/06 - Setting jre lib path in LD_LIBRARY_PATH for ppc64
#    ssalunke   06/05/06 - Exporting LIBPATH as LIBPATH_SNMO for bug 5246874 
#    jaysmith   08/04/06 - Backport kduvvuri_bug-4595924 from main
#    kduvvuri   08/02/06 - fix 4595924. remove cd to $EMDROOT.
#    qding      07/27/06 - bug 5173504, save a copy of LD_LIBRARY_PATH into 
#                          LD_LIBRARY_PATH_SNMO 
#    qding      07/31/06 - Backport qding_bug-5173504 from main
#    sunagarw   04/18/06 - Migrating Security code to LDAP vob 
#    vivsharm   07/18/06 - for 5220430 
#    cvaishna   04/06/06 - Adding /lib & /network/lib for LIBPATH 
#    smodh      02/20/06 - XbranchMerge smodh_jdbc_emagent from main 
#    shianand   08/01/05 - fix bug 4522682 
#    vnukal     07/13/05 - desupporting /net base deploys 
#    rzkrishn   06/24/05 - unset ORA_NLS_33 
#    rzazueta   03/23/05 - Fix 4234740 
#    qding      03/01/05 - remove unset LANG 
#    aaitghez   02/21/05 - remove EMDW_EXTDIR 
#    cchriste   01/27/05 - 
#    sksaha     01/05/05 - Fix bug-3958424 multi-word argument 
#    rdabbott   12/15/04 - use EMCTL_DEBUG 
#    sreddy     11/12/04 - add PERL_BIN to PATH 
#    afontana   11/02/04 - add libnet to perl5lib 
#    kduvvuri   09/30/04 - fix 3127659. 
#    rzazueta   08/30/04 - Add PLE changes 
#    njagathe   08/18/04 - Adding elements to PERL5LIB 
#    njagathe   08/16/04 - Fix hardcoded 561 refs 
#    aime       07/28/04 - temporary fix for resolving libcxa.so.3 
#    nsharma    06/22/04 - Mac OSX changes
#    skumar     06/07/04 - LD_LIBRARY_PATH for ISL
#    rzkrishn   06/03/04 - restore_perl_env
#    rzkrishn   06/01/04 - PERL5LIB change 
#    skumar     06/01/04 - PERL5LIB for MAC OS X and ISL
#    rlal       05/26/04 - Changes for Linux 390 
#    djoly      05/14/04 - Update core reference 
#    mbhoopat   05/01/04 - temporary fix for resolving libcprts.so.5 lib 
#    rzkrishn   03/18/04 - removing use of instant client 
#    mbhoopat   03/10/04 - linux port 
#    rzkrishn   03/03/04 - using instant client for OCI 
#    rlal       03/03/04 - Use server for jvm on ia64linux
#    nsharma    02/27/04 - ia64 changes 
#    rlal       02/25/04 - using LIBPATH for Aix 
#    rlal       02/25/04 - Setting TZ for AIX
#    skumar     02/05/04 - JRE_LIB_DIR for Tru64 and AIX
#    rlal       02/04/04 - Fix for bug 3419192 
#    aaitghez   12/29/03 - bug 3339329. cd to EMDROOT before executing 
#    rzazueta   12/02/03 - use classes12.jar instead of classes12.zip 
#    vnukal     11/14/03 - change instantiation delimiter
#    skumar     11/03/03 - add EMDROOT/bin to PERL5LIB for OSF1 and AIX 
#    njagathe   10/29/03 - Allowing for REMOTE_EMDROOT override 
#    njagathe   10/29/03 - Do not allow overriding EMDROOT via env setting 
#    njagathe   10/14/03 - Expand value list for HOST_SID_OFFSET_ENABLED 
#    dmshah     09/15/03 - 
#    dmshah     09/15/03 - Integration testing changes 
#    dmshah     09/11/03 - Check for stack dump during stop 
#    dmshah     09/09/03 - 
#    caroy      08/15/03 - replace phaos.jar with ojpse_2_1_5.jar 
#    dmshah     07/08/03 - Bug fixes from 401 branch
#    dmshah     06/19/03 - Obsoleting .emrc
#    dmshah     06/09/03 - Reworking emctl code
#    pspearma   06/05/03 - Add EMDROOT/lib32 and OH/network/lib32 to LD_LIBRARY_PATH
#    dmshah     05/30/03 - Uncomment DISPLAY
#    gachen     05/29/03 - use T2
#    dmshah     05/28/03 - check wether the DISPLAY variable is set
#    vsekuboy   05/21/03 - Changes for Platforms
#    dmshah     05/16/03 - grabtrans 'dmshah_fix_emagentdeploy_beta1'
#    dmshah     05/14/03 - CRS_HOME for CFS Installs
#    jsutton    04/25/03 - Fix up OUILOC
#    dkapoor    05/06/03 - add network lib
#    njagathe   05/02/03 - 64 bit shiphome changes
#    dkapoor    04/25/03 - impl dynamic deploy
#    gachen     04/25/03 - use server instead of client
#    jmcdonal   04/14/03 - Bug 2737518: OUI dir changes
#    dmshah     04/07/03 - Exporting PERL_BIN
#    lyang      04/10/03 - add OH/network/lib to LD_LIBRARY_PATH for ias infr asso
#    dmshah     03/13/03 - Bug fix 2849086 and moving PERL BIN
#    dmshah     03/03/03 - Adding the POSIX library in the PERL5LIB path
#    aaitghez   03/10/03 - change PERL5LIB path. remove scripts unix and add sysmand/admin/scripts
#    rlal       01/25/03 - fix for bug 2769541
#    jsutton    01/21/03 - -native not a supported VM option
#    itarashc   12/10/02 - fix config
#    njagathe   01/03/03 - Only set EMDROOT if not set in environment
#    njagathe   12/19/02 - Add JRE_HOME variable and use in LD_LIBRARY_PATH etc
#    vnukal     12/05/02 - ensuring encryption when agent down
#    dmshah     12/06/02 - Cutting over to emctl.pl
#

#No more overriding of EMDROOT through the environment - see bug 3217672
#Instead, allow overriding through REMOTE_EMDROOT variable for state only
#installs
if [ "$REMOTE_EMDROOT" = "" ];
then
  ORACLE_HOME=#ORACLE_HOME#
  EMDROOT=$ORACLE_HOME
else
  ORACLE_HOME=$REMOTE_EMDROOT
  EMDROOT=$ORACLE_HOME
  export REMOTE_EMDROOT
fi

#
# Make sure certain environment variables are set 
#
JAVA_HOME=$ORACLE_HOME/jdk
JRE_HOME=$ORACLE_HOME#JRE_EXTDIR#
PERL_BIN=$ORACLE_HOME/perl/bin
PERL_HOME=$ORACLE_HOME/perl
NET_LIB_DIR=$ORACLE_HOME/network/lib
NET_LIB32_DIR=$ORACLE_HOME/network/lib32
EM_STANDALONE=#EM_STANDALONE#
CRS_HOME=#CRS_HOME#

#Values for HOST_SID_OFFSET_ENABLED : "" (unset), "host_sid", "host_only"
HOST_SID_OFFSET_ENABLED=#HOST_SID_OFFSET_ENABLED#

#Unset ORA_NLS*
ALL_ORA_NLS_ENV=`env | grep ORA_NLS`
for oranlsenv in ${ALL_ORA_NLS_ENV}
do
 unset `echo $oranlsenv | cut -d= -f1`
done

# Allow environment setting of CONSOLE_CFG to be used if already set
CONSOLE_CFG=#CONSOLE_CFG#

export JAVA_HOME
export JRE_HOME
export ORACLE_HOME
export EMDROOT
export CONSOLE_CFG
export PERL_BIN
export PERL_HOME
export EM_STANDALONE
export CRS_HOME
export HOST_SID_OFFSET_ENABLED

#Source commonenv settings
if [ -f $ORACLE_HOME/bin/commonenv ]; then
. $ORACLE_HOME/bin/commonenv
fi

EM_OC4J_HOME=#EM_OC4J_HOME#
export EM_OC4J_HOME

OUILOC=$ORACLE_HOME/oui
OUIPLATFORM=hpunix

# these variables - PERL5LIB and LD_LIBRARY_PATH - are set so that
# osfetchlets can run correctly

uname=`uname`
hardware=`uname -m`
if [ "$uname" = "SunOS" ];
then

# Set up TZ if not already set, this is done as a workaround
# for bug in JDK 1.3.1
  if [ "$TZ" = "" ]
  then
    TMPFILE=/tmp/setTZ.sh.$$
    grep -v "^#" /etc/TIMEZONE | grep TZ > $TMPFILE
    . $TMPFILE
    rm $TMPFILE
  fi
  export TZ 

elif [ "$uname" = "HP-UX" ]; then
 
# Set up TZ if not already set, this is done as a workaround
# for bug in JDK 1.3.1
  if [ "$TZ" = "" ]
  then
    TMPFILE=/tmp/setTZ.sh.$$
    grep -v "^#" /etc/TIMEZONE | grep TZ > $TMPFILE
    . $TMPFILE
    rm $TMPFILE
  fi
  export TZ

elif [ "$uname" = "Linux" ] ; then

# Set up TZ if not already set, this is done as a workaround
# for bug in JDK 1.3.1
  if [ "$TZ" = "" ]
  then
    if [ -f $EMDROOT/sysman/admin/supportedtzs.lst ]
    then 
	    tzfile=$EMDROOT/sysman/admin/supportedtzs.lst
    elif [ -f $EMDROOT/sysman/emd/supportedtzs.lst ]
    then
	    tzfile=$EMDROOT/sysman/emd/supportedtzs.lst
    else
	    tzfile=""
    fi
    if [ ! "$tzfile" = "" ]
    then
      for i in `/bin/cat $tzfile` ; do
       if [ -f /usr/share/zoneinfo/${i} ] ; then
          if [ "`/usr/bin/diff /etc/localtime /usr/share/zoneinfo/${i}`" = "" ] ; then
             TZ="${i}"
          fi
       fi
      done
    fi
    if [ ! "$TZ" = "" ] ; then
       export TZ
    fi
  fi

elif [ "$uname" = "AIX" ]; then

# Set up TZ if not already set, this is done as a workaround
# for bug in JDK 1.3.1
  if [ "$TZ" = "" ]
  then
    TMPFILE=/tmp/setTZ.sh.$$
    grep -v "^#" /etc/environment | grep TZ > $TMPFILE
    . $TMPFILE
    rm $TMPFILE
  fi
  export TZ

fi

PERL5LIB_NATIVE=$ORACLE_HOME/perl/lib:$ORACLE_HOME/perl/lib/site_perl
PERL5LIB_TMP=${PERL5LIB_NATIVE}:$ORACLE_HOME/perl/libwww-perl/lib:$ORACLE_HOME/perl/ext/POSIX:$ORACLE_HOME/perl/URI:$ORACLE_HOME/perl/HTML_Parser:$ORACLE_HOME/perl/HTML-Parser/lib:$EMDROOT/sysman/admin/scripts:$EMDROOT/bin:$EMDROOT/sysman/admin/scripts/Net-DNS-0.48/lib/:$EMDROOT/sysman/admin/scripts/libnet-1.19/

if [ "$PERL5LIB" = "" ] ;
then 
   PERL5LIB=${PERL5LIB_TMP}
else
   PERL5LIB=${PERL5LIB_TMP}:${PERL5LIB}
fi

if [ "$LD_LIBRARY_PATH" = "" ] ; then
   LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$OUILOC/lib/#PLATFORM#:$OUILOC/lib/$OUIPLATFORM
else
   LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$OUILOC/lib/#PLATFORM#:$LD_LIBRARY_PATH:$OUILOC/lib/$OUIPLATFORM
fi

if [ "$CONSOLE_CFG" = "dbconsole" ] ; then
if [  "$uname" = "Linux" -o "$uname" = "OSF1" -o "$uname" = "SunOS" ] ; then
  if [ "$hardware" = "ppc64" -o "$hardware" = "x86_64"  -o "$hardware" = "s390x" -o "$hardware" = "ia64" ] ; then
   LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NET_LIB_DIR:$NET_LIB32_DIR
  else
   LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NET_LIB32_DIR:$NET_LIB_DIR
  fi   
fi
fi

if [ "$LD_LIBRARY_PATH_64" = "" ] ; then
   LD_LIBRARY_PATH_64=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$OUILOC/lib/#PLATFORM#
else
   LD_LIBRARY_PATH_64=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$OUILOC/lib/#PLATFORM#:$LD_LIBRARY_PATH_64
fi

if [ "$CONSOLE_CFG" = "dbconsole" ] ; then
   LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64:$NET_LIB_DIR
fi

if [ "$SHLIB_PATH" = "" ] ; then
   SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$OUILOC/lib/#PLATFORM#:$OUILOC/lib/$OUIPLATFORM
else
   SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$OUILOC/lib/#PLATFORM#:$SHLIB_PATH:$OUILOC/lib/$OUIPLATFORM
fi


if [ "$CONSOLE_CFG" = "dbconsole" -a "$uname" = "HP-UX" ] ; then
  if [ "$hardware" = "ia64" ]; then
    SHLIB_PATH=$SHLIB_PATH:$NET_LIB_DIR:$NET_LIB32_DIR
  else
    SHLIB_PATH=$SHLIB_PATH:$NET_LIB32_DIR:$NET_LIB_DIR
  fi
fi

if [ "$LIBPATH" = "" ] ; then
   LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$ORACLE_HOME/lib32:$OUILOC/lib/#PLATFORM#:$OUILOC/lib/$OUIPLATFORM
else
   LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$ORACLE_HOME/lib32:$OUILOC/lib/#PLATFORM#:$LIBPATH:$OUILOC/lib/$OUIPLATFORM
fi


if [ "$CONSOLE_CFG" = "dbconsole" -a "$uname" = "AIX" ] ; then
   LIBPATH=$LIBPATH:$NET_LIB_DIR
fi

if [ "$DYLD_LIBRARY_PATH" = "" ] ; then
   DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$OUILOC/lib/#PLATFORM#:$OUILOC/lib/$OUIPLATFORM
else
   DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:$OUILOC/lib/#PLATFORM#:$DYLD_LIBRARY_PATH:$OUILOC/lib/$OUIPLATFORM
fi


if [ "$CONSOLE_CFG" = "dbconsole" ] ; then
   DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$NET_LIB_DIR
fi


# add java lib to LD_LIBRARY_PATH.
if [ "$uname" = "SunOS" ];
then
  if [ "$hardware" = "i86pc" ]; then
	LD_LIBRARY_PATH=$JRE_HOME/lib/amd64/server:$JRE_HOME/lib/i386:$LD_LIBRARY_PATH
  else
	LD_LIBRARY_PATH=$JRE_HOME/lib/sparcv9/server:$JRE_HOME/lib/sparcv9:$LD_LIBRARY_PATH
  fi
elif [ "$uname" = "HP-UX" ]; then
	SHLIB_PATH=$JRE_HOME/lib/PA_RISC2.0W/hotspot:$JRE_HOME/lib/PA_RISC2.0W:$SHLIB_PATH
	if [ "$hardware" = "ia64" ]; then
	  SHLIB_PATH=$JRE_HOME/lib/IA64W/hotspot:$JRE_HOME/lib/IA64W:$SHLIB_PATH
	fi
elif [ "$uname" = "Linux" ] ; then
    LD_LIBRARY_PATH=$JRE_HOME/lib/i386/client:$JRE_HOME/lib/i386:$LD_LIBRARY_PATH
    if [ "$hardware" = "x86_64" ]; then
      LD_LIBRARY_PATH=$JRE_HOME/lib/amd64/server:$JRE_HOME/lib/amd64:$LD_LIBRARY_PATH
    elif [ "$hardware" = "ia64" ]; then
      LD_LIBRARY_PATH=$JRE_HOME/lib/ia64/jrockit:$JRE_HOME/lib/ia64/server:$JRE_HOME/lib/ia64:$LD_LIBRARY_PATH
    elif [ "$hardware" = "s390x" ]; then
      LD_LIBRARY_PATH=$JRE_HOME/bin/classic:$JRE_HOME/bin:$LD_LIBRARY_PATH
    elif [ "$hardware" = "ppc64" ]; then
      LD_LIBRARY_PATH=$JRE_HOME/bin/classic:$JRE_HOME/bin:$LD_LIBRARY_PATH
    fi
elif [ "$uname" = "OSF1" ] ; then
	 LD_LIBRARY_PATH=$JRE_HOME/lib/alpha/classic:$JRE_HOME/lib/alpha:$LD_LIBRARY_PATH
elif [ "$uname" = "Darwin" ] ; then
	 DYLD_LIBRARY_PATH=/System/Library/Frameworks/JavaVM.framework/Libraries:$DYLD_LIBRARY_PATH
elif [ "$uname" = "AIX" ] ; then
         LIBPATH=$JRE_HOME/bin/classic:$JRE_HOME/bin:$LIBPATH
fi

# to workaround Solaris2.8 Java thr_suspend hang, use alternate libthread.
# Since this directory doesn't exist on other versions, this is a noop there.
#
if [ "$uname" = "SunOS" ];
then
	LD_LIBRARY_PATH=/usr/lib/lwp:$LD_LIBRARY_PATH
fi

#exporting LIBPATH as LIBPATH_SNMO for bug LIBPATH_SNMO
LIBPATH_SNMO=${LIBPATH}
export LIBPATH_SNMO
#exporting LD_LIBRARY_PATH as LD_LIBRARY_PATH_SNMO for bug 5173504
LD_LIBRARY_PATH_SNMO=${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH_SNMO

export PERL5LIB 
export LD_LIBRARY_PATH
export SHLIB_PATH
export LIBPATH
export DYLD_LIBRARY_PATH

# Add the var for HP
if [ "$uname" = "HP-UX" ] ; then
   UNIX95=XPG4;
   export UNIX95
   # fix for emctl stop issue on HP.
   EM_OC4J_OPTS="-d64 -XX:MaxPermSize=1024m -XdoCloseWithReadPending $EM_OC4J_OPTS"
   export EM_OC4J_OPTS
fi

#
# Set path so that our native executables can be found when run from java
#
if [ "$uname" = "SunOS" ] ; then 
   if [ "$hardware" = "i86pc" ] ; then
      PATH=$EMDROOT/bin:$ORACLE_HOME/jdk/bin/amd64:$PERL_BIN:$PATH
   else 
      PATH=$EMDROOT/bin:$ORACLE_HOME/jdk/bin:$PERL_BIN:$PATH
   fi
fi
export PATH

#
# Set up DEFAULT_CLASSPATH, needed by the Secure perl modules to locate
# dependent jars for command line calls to java
#
DEFAULT_CLASSPATH=$ORACLE_HOME/oc4j/jdbc/lib/ojdbc5dms.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-mapping.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-translation.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-net-ee.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-utility.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-collation.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-net.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-internal.jar:$ORACLE_HOMEoc4j/jdbc/lib/orai18n-servlet.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n-tools.jar:$ORACLE_HOME/oc4j/lib/dms.jar:$ORACLE_HOME/oc4j/jdbc/lib/orai18n.jar:$ORACLE_HOME/jlib/uix2.jar:$EMDROOT/sysman/jlib/emCORE.jar:$EMDROOT/sysman/jlib/emagentSDK.jar:$ORACLE_HOME/xdk/lib/xmlparserv2.jar:$EMDROOT/sysman/jlib/log4j-core.jar:$ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/lib/ojpse_2_1_5.jar:$ORACLE_HOME/oc4j/j2ee/home/lib/http_client.jar:$ORACLE_HOME/sysman/webapps/emd/WEB-INF/lib/ojpse_2_1_5.jar
export DEFAULT_CLASSPATH

# use ulimit to make sure we have enough descriptors

if [ "$EM_DESCRIPTORS" = "" ]
then
   EM_DESCRIPTORS=1024
fi

CURRENT_LIMIT=`ulimit -n`

if [ "$CURRENT_LIMIT" != "unlimited" ]
then
   if [ $CURRENT_LIMIT -lt $EM_DESCRIPTORS ]
   then
      ulimit -n $EM_DESCRIPTORS
   fi
fi

if [ "$EMCTL_DEBUG" != "" ] ; then
    echo emctl: launching $PERL_BIN/perl $EMDROOT/bin/emctl.pl "$@"
fi

# Execute the emctl.pl
$PERL_BIN/perl $EMDROOT/bin/emctl.pl "$@"

