#!/bin/sh
#
# $Header: opsm/utl/rhphelper /st_has_12.2.0.1.0/1 2016/08/07 15:48:00 chchatte Exp $
#
# rhphelper
#
# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      rhphelper - Helper tool to execute commands on the remote node
#
#    DESCRIPTION
#      This tool is a helper tool that is used by RHP to peformm CVU validations
#      as well as discovery on the remote node that is to be provisioned.
#
#      Version since - 12.2
#
#    NOTES

ECHO=/bin/echo

if [ $# -lt 3 ];
then
   $ECHO "<HLP_EMSG>RHPHELP_TOOL_error-01</HLP_EMSG><HLP_ERES>1</HLP_ERES>"
   #Usage: $0 <ORACLE_HOME> <version> <command> [<args>]
   #          <ORACLE_HOME>    Oracle home where rhphelper script and jar are located
   #          <version>        version of Oracle home
   exit 1
fi


ORACLE_HOME=$1
FIXUP=NO
SETUPSSH=NO
TRANSFERNOUSEREQ=NO
for i in "$@"
do
case $i in
    -setupSSH)
      SETUPSSH=YES
    ;;
    -fixup)
      FIXUP=YES
    ;;
    -transferNoUserEq)
      TRANSFERNOUSEREQ=YES
    ;;
    *) #skip all other options
    ;;
esac
done
 
SRVMJAR=$ORACLE_HOME/jlib/srvm.jar
SRVMHASJAR=$ORACLE_HOME/jlib/srvmhas.jar
SRVMASMJAR=$ORACLE_HOME/jlib/srvmasm.jar
GNSJAR=$ORACLE_HOME/jlib/gns.jar
#NetCa config jar
NETCFGJAR=$ORACLE_HOME/jlib/netcfg.jar
#LDAP jar to read listener.ora file on upgrade
LDAPJAR12C=$ORACLE_HOME/jlib/ldapjclnt12.jar
LDAPJAR112=$ORACLE_HOME/jlib/ldapjclnt11.jar

OUIJARS=$ORACLE_HOME/oui/jlib/OraInstaller.jar:$ORACLE_HOME/oui/jlib/OraPrereq.jar:$ORACLE_HOME/oui/jlib/prov_fixup.jar:$ORACLE_HOME/oui/jlib/xmlparserv2.jar:$ORACLE_HOME/oui/jlib/share.jar:$ORACLE_HOME/oui/jlib/orai18n-mapping.jar:$ORACLE_HOME/oui/jlib/jsch.jar
OPATCHJARS=$ORACLE_HOME/OPatch/jlib/opatch.jar:$ORACLE_HOME/OPatch/jlib/opatchext.jar:$ORACLE_HOME/OPatch/jlib/opatchprereq.jar:$ORACLE_HOME/OPatch/jlib/opatchactions.jar:$ORACLE_HOME/OPatch/jlib/opatchfmw.jar:$ORACLE_HOME/OPatch/jlib/opatchutil.jar

CVUJARS=$ORACLE_HOME/jlib/cvu.jar

if [ -d $ORACLE_HOME/jdk/jre ];
then
   JREDIR=$ORACLE_HOME/jdk/jre
else
   $ECHO "<HLP_EMSG>RHPHELP_TOOL_error-02</HLP_EMSG><HLP_ERES>1</HLP_ERES>"
   exit 1
fi

JRE=$JREDIR/bin/java
JREJAR=$JREDIR/lib/rt.jar

CLASSPATH=$JREJAR:$SRVMJAR:$SRVMJAR:$SRVMHASJAR:$GNSJAR:$SRVMASMJAR:$OUIJARS:$OPATCHJARS:$NETCFGJAR:$LDAPJAR12C:$CVUJARS:$LDAPJAR112
## TO DO::: Since this is a remotely executed script, we need to figure out a tracing paradigm here
# Or perhaps we can fix a temporary location where the traces will be stored.

TRACE="-DTRACING.ENABLED=false"
TRACEFILE=""
if [ -n "$SRVM_TRACE" ]
then
   if [ "$SRVM_TRACE" = "true" ]  || [ "$SRVM_TRACE" = "TRUE" ]
   then
       if [ "X${RHPHELPER_TRACEFILE}" != "X" ]
       then
           TRACE="-DTRACING.ENABLED=true -DTRACING.LEVEL=2"
           TRACEFILE="-Dsrvm.rhphelper.tracefile=${RHPHELPER_TRACEFILE}"
       fi
   fi
fi

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH


# Set the shared library path for JNI shared libraries
# A few platforms use an environment variable other than LD_LIBRARY_PATH
PLATFORM=`/bin/uname`
case $PLATFORM in
  HP-UX) arch=`/bin/uname -m`
       # bugfix 5404049
       if [ -z "$JAVA_HOME" ];
       then
         JAVA_HOME=$JREDIR/..
         export JAVA_HOME
       fi
       SHLIB_PATH=$LD_LIBRARY_PATH
       export SHLIB_PATH
       JRE_OPTS=-d64
       SED=/usr/bin/sed
       ;;
  AIX)
       LIBPATH=$LD_LIBRARY_PATH
       export LIBPATH
       JRE_OPTS=-d64
       SED=/usr/bin/sed
     ;;
  Linux) arch=`/bin/uname -m`
       if [ "$arch" = "ppc64" -o "$arch" = "x86_64" -o "$arch" = "s390x" ]
       then
         JRE_OPTS=-d64
       fi
       SED=/bin/sed
       ;;
  SunOS)
       # Bug 4620768. Unset LD_LIBRARY_PATH_64
       unset LD_LIBRARY_PATH_64
       SED=/bin/sed
       JRE_OPTS=-d64
       ;;
esac

# Trim the trailing slashes in home path. 
# ORACLE_HOME=/u01/app/grid and ORACLE_HOME=/u01/app/grid/ are considered
# different by the database and ASM
ORACLE_HOME=`$ECHO $ORACLE_HOME | $SED 's/[ /]*$//'`
export ORACLE_HOME

case $2 in
    11.2.0.3*)
        RHPHELPERJAR=$ORACLE_HOME/crs/install/rhpdata/helper/rhphelper112.jar
        JAVAMAIN=oracle.cluster.gridhome.giprov112.RHPHelper112    
        #11.2 release required CV_HOME variable to be set
        CV_HOME=$ORACLE_HOME
        export CV_HOME
    ;;
    11.2.0.4*)
        RHPHELPERJAR=$ORACLE_HOME/crs/install/rhpdata/helper/rhphelper112.jar
        JAVAMAIN=oracle.cluster.gridhome.giprov112.RHPHelper112
        #11.2 release required CV_HOME variable to be set
        CV_HOME=$ORACLE_HOME
        export CV_HOME
    ;;
    12.1.0.2*)
        RHPHELPERJAR=$ORACLE_HOME/crs/install/rhpdata/helper/rhphelper12102.jar
        JAVAMAIN=oracle.cluster.gridhome.giprov12102.RHPHelper12102 
        #set ORACLE_BASE to ORACLE_HOME as without this CLSBInit would core dump
        # Bug number: 20444192
	ORACLE_BASE=$ORACLE_HOME
	export ORACLE_BASE
    ;;
    12.2.0.[0-4]*)
        JDBCJAR=$ORACLE_HOME/jdbc/lib/ojdbc8.jar
        CLASSPATH=${CLASSPATH}:$JDBCJAR
        RHPHELPERJAR=$ORACLE_HOME/crs/install/rhpdata/helper/rhphelper122.jar
        JAVAMAIN=oracle.cluster.gridhome.giprov122.RHPHelper122 
        #set ORACLE_BASE to ORACLE_HOME as without this CLSBInit would core dump
        # Bug number: 20444192
	ORACLE_BASE=$ORACLE_HOME
	export ORACLE_BASE
    ;;
    *)
       $ECHO "<HLP_EMSG>RHPHELP_TOOL_error-03</HLP_EMSG><HLP_ERES>1</HLP_ERES>"
       #version should be 11.2.0.3.0, or 11.2.0.4.0, or 12.1.0.2.0, or 12.2.0.0.0
       exit 1
esac

CLASSPATH=${CLASSPATH}:$RHPHELPERJAR

shift 2 #to avoid passing home and version args to Java main

if [[ $FIXUP = "YES" || $TRANSFERNOUSEREQ = "YES" ]]
then
    stty -echo
    read pass
    stty echo
    echo $pass | $JRE $JRE_OPTS -classpath $CLASSPATH $TRACE $TRACEFILE $JAVAMAIN "$@"
else
    $JRE $JRE_OPTS -classpath $CLASSPATH $TRACE $TRACEFILE $JAVAMAIN "$@"
fi
exit $?
