#!/bin/sh


#####################################
# 1. remove unwanted stuff
#####################################
umask 77             # only user can read the wallet
unset ORA_SEC_WLT

#####################################
# 2. identify where this script lives
#####################################
TOOLNAME=$0
mypwd="`pwd`"
case ${TOOLNAME} in
  /*)  TOOLDIR=`dirname "${TOOLNAME}"` ;;
   *)  TOOLDIR=`dirname "${mypwd}/${TOOLNAME}"` ;;
esac

TOOLHOME=`cd "${TOOLDIR}/.." ; pwd`
TOOLROOT=`cd "${TOOLHOME}/.." ; pwd`

#####################################
# 3. locate JRE
#####################################
if [ ! -z "$ORACLE_HOME" -a -f "$ORACLE_HOME/jdk/bin/java" ]; then
    JAVA_HOME=$ORACLE_HOME/jdk
    export JAVA_HOME
elif [ -z "$JAVA_HOME" ]; then
  if [ -f "$TOOLHOME/jdk/bin/java" ]; then
    JAVA_HOME=$TOOLHOME/jdk
    export JAVA_HOME
  elif [ -f "$TOOLHOME/jdk/jre/bin/java" ]; then
    JAVA_HOME=$TOOLHOME/jdk/jre
    export JAVA_HOME
  else
    echo "ERROR: No Java"
    echo "\$ORACLE_HOME/jdk or $TOOLHOME/jdk or $TOOLHOME/jdk/jre or \$JAVA_HOME should point to valid Java runtime"
    exit 1
  fi
elif [ ! -f "$JAVA_HOME/bin/java" ]; then
    echo "ERROR: No Java"
    echo "$JAVA_HOME should point to valid Java runtime"
    exit 1
fi

#####################################
# 3. locate Jars
#####################################
if [ -d "$TOOLROOT/oracle_common" ]; then
  MW_MOD=$TOOLROOT/oracle_common/modules
  PKILOC=${MW_MOD}/oracle.pki
  RSALOC=${MW_MOD}/oracle.rsa
  OSDTLOC=${MW_MOD}/oracle.osdt
  MISCLOC=${MW_MOD}/oracle.ldap
  OJLIB=$TOOLROOT/jlib
elif [ ! -z "$SRCHOME" ]; then
  PROD_DIST=$SRCHOME/entsec/dist
  PKILOC=$PROD_DIST/oracle.pki/modules/oracle.pki
  RSALOC=$PROD_DIST/oracle.rsa.crypto/modules/oracle.rsa
  OSDTLOC=$PROD_DIST/oracle.osdt.core/modules/oracle.osdt
  MISCLOC=$PROD_DIST/oracle.pki/modules/oracle.ldap
  EMMA_JAR=$SRCHOME/ldap/test/lib/emma.jar
elif [ ! -z "$ORACLE_HOME" -a -d "$ORACLE_HOME" ]; then
  OJLIB=$ORACLE_HOME/jlib
  PKILOC=$OJLIB
  RSALOC=$OJLIB
  OSDTLOC=$OJLIB
  MISCLOC=$OJLIB
else
  OJLIB=$TOOLHOME/jlib
  PKILOC=$OJLIB
  RSALOC=$OJLIB
  OSDTLOC=$OJLIB
  MISCLOC=$OJLIB
fi

PKI=$PKILOC/oraclepki.jar
RSA=$RSALOC/cryptoj.jar
OSDT_CORE=$OSDTLOC/osdt_core.jar
OSDT_CERT=$OSDTLOC/osdt_cert.jar
OJMISC=$MISCLOC/ojmisc.jar

# Get the platform
PLATFORM=`uname`

# Some platforms may need other JVM environment variables set
# or unset as appropriate.
case $PLATFORM in "AIX")
   JAVA_COMPILER=NONE
   export JAVA_COMPILER
esac

# Linux platform uses native threads.
SET_DEFAULT=YES
case $PLATFORM in "Linux")
   SET_DEFAULT=NO
   THREADS_FLAG=native 
   export THREADS_FLAG
esac
case $SET_DEFAULT in "YES")
#  we only use green threads for the other platforms
   THREADS_TYPE=green_threads
   export THREADS_TYPE
esac

# Set the shared library path for JNI shared libraries
# A few platforms use an environment variable other than LD_LIBRARY_PATH
SET_DEFAULT_VAR=YES
SLLIBDIRNAME=lib
# for Sparc64, HP-PA, HPI invoke java with -d64 option to run in 64-bit mode.
JAVAMODE=
# for specific platforms reset variables and set others as needed.
case $PLATFORM in "HP-UX")
   JAVAMODE=-d64
esac

case $PLATFORM in "AIX")
   SET_DEFAULT_VAR=NO
   LIBPATH=$TOOLHOME/$SLLIBDIRNAME:$TOOLHOME/network/$SLLIBDIRNAME:$LIBPATH
   export LIBPATH
esac
case $PLATFORM in "SunOS")
   PLATFORM_ARCH=`uname -p`
   case $PLATFORM_ARCH in "sparc")
       JAVAMODE=-d64
   esac
   case $PLATFORM_ARCH in "i386")
      JAVAMODE=-d64
   esac
esac

# if still selected, set the default variable name:LD_LIBRARY_PATH.
case $SET_DEFAULT_VAR in "YES")
   LD_LIBRARY_PATH=$TOOLHOME/$SLLIBDIRNAME:$TOOLHOME/network/$SLLIBDIRNAME:$LD_LIBRARY_PATH
   export LD_LIBRARY_PATH
esac

FIPS_MODE_FLAG=FALSE
for i in `eval "echo $*"`
do
    if [ $i = -fips_mode ]; then
        FIPS_MODE_FLAG=TRUE
    fi
done

if [ "$CODECOV" = TRUE ]; then
  if [ "$FIPS_MODE_FLAG" = TRUE ]; then
      $JAVA_HOME/bin/java $JAVAMODE -Xms64m -Xmx512m -cp $PKI:$RSA:$EMMA_JAR:$OJMISC:$OSDT_CORE:$OSDT_CERT -DFIPS_140_2_MODE=true oracle.security.pki.textui.OraclePKITextUI "$@"
  else $JAVA_HOME/bin/java $JAVAMODE -Xms64m -Xmx512m -cp $PKI:$RSA:$EMMA_JAR:$OJMISC:$OSDT_CORE:$OSDT_CERT oracle.security.pki.textui.OraclePKITextUI "$@"
  fi
else
  if [ "$FIPS_MODE_FLAG" = TRUE ]; then
      $JAVA_HOME/bin/java $JAVAMODE -Xms64m -Xmx512m -cp $PKI:$RSA:$OJMISC:$OSDT_CORE:$OSDT_CERT -DFIPS_140_2_MODE=true oracle.security.pki.textui.OraclePKITextUI "$@"
  else $JAVA_HOME/bin/java $JAVAMODE -Xms64m -Xmx512m -cp $PKI:$RSA:$OJMISC:$OSDT_CORE:$OSDT_CERT oracle.security.pki.textui.OraclePKITextUI "$@"
  fi
fi
