#!/bin/ksh

AWK=/usr/bin/awk
CHMOD=/usr/bin/chmod
CP=/usr/bin/cp
ECHO=/usr/bin/echo
GREP=/usr/bin/grep
ID=/usr/bin/id
INSTALLF=/usr/sbin/installf
LN=/usr/bin/ln
MKDIR=/usr/bin/mkdir
RM=/usr/bin/rm
SED=/usr/bin/sed
UNIQ=/usr/bin/uniq
CUT=/usr/bin/cut
GETTEXT=/usr/bin/gettext
STTY=/usr/bin/stty
LINE=/usr/bin/line
READ=/usr/bin/read

OSTYPE=`/bin/uname -s`
if [ "$OSTYPE" = "Linux" ]; then
  CHMOD=/bin/chmod
  CP=/bin/cp
  ECHO=/bin/echo
  GREP=/bin/grep
  LN=/bin/ln
  MKDIR=/bin/mkdir
  RM=/bin/rm
  SED=/bin/sed
  STTY=/bin/stty
  READ=read
fi

BELL_CHAR='\a'

PS_HOME=${BASE_DIR}/${PRODUCT_DIR}
IS_HOME=${IDSAME_BASE_DIR}/SUNWam
IS_CONFIG_FILE="/etc/opt/SUNWam/config/AMConfig.properties"


GW_STATE_FILE="/etc/opt/SUNWps/GWConfig.properties"


JSS_NSS_NSPR_LIBPATH=/usr/lib/mps/secv1
JSS_JAR=/usr/share/lib/mps/secv1/jss3.jar


TEXTDOMAIN=gwscripts
TEXTDOMAINDIR=${BASE_DIR}/${PRODUCT_DIR}/locale
export TEXTDOMAIN
export TEXTDOMAINDIR
export LANG


################################################################
# Get configuration from specified file
################################################################

GrabConfig() {

    GRABCONFIG_FILE=$1
    GRABCONFIG_KEY=$2
    GRABCONFIG_SEPARATOR=$3

    ANSWER=`$GREP "^$GRABCONFIG_KEY$GRABCONFIG_SEPARATOR" $GRABCONFIG_FILE | $UNIQ | $SED -e "s/$GRABCONFIG_KEY$GRABCONFIG_SEPARATOR//"`

}



################################################################
# Initializes some of the required variables
################################################################

Initialize() {

    ETC_DIR=/etc/opt/SUNWps
    LIB_DIR=$PS_HOME/lib
    PLATFORM_CONF=$ETC_DIR/platform.conf.$GW_GATEWAY_PROFILE

    CERT_DIR=$ETC_DIR/cert/$GW_GATEWAY_PROFILE
    KEY3_DB_FILE="$CERT_DIR/key3.db"
    CERT7_DB_FILE="$CERT_DIR/cert7.db"
    SECMOD_DB_FILE="$CERT_DIR/secmod.db"
    NICKNAME="server-cert"

    # JDK base directory
    GrabConfig "$IS_CONFIG_FILE" "com.iplanet.am.jdk.path" "="
    if [ "$ANSWER" != "" ]; then
        JDK_DIR=$ANSWER
    else
        $ECHO "`$GETTEXT 'Error: Cannot determine JDK_DIR. $BELL_CHAR'`"
        exit 1
    fi

}



CreateLogUserPassword() {

    $MKDIR -p $CERT_DIR
    $CHMOD 755 $CERT_DIR

    #To workaround JDK JNI bug on Linux
    if [ "$OSTYPE" = "Linux" ]; then
        EXTRA_LIBS="$JDK_DIR/jre/lib/i386/native_threads"
    else
        EXTRA_LIBS=""
    fi

    if [ -z "${LD_LIBRARY_PATH}" ]; then
        LD_LIBRARY_PATH="$JSS_NSS_NSPR_LIBPATH:$LIB_DIR/solaris/sparc"
    else
        LD_LIBRARY_PATH="$JSS_NSS_NSPR_LIBPATH:$LIB_DIR/solaris/sparc:${LD_LIBRARY_PATH}"
    fi

    JCE_CLASSPATH="$IS_HOME/lib/jce1_2_1.jar:$IS_HOME/lib/local_policy.jar:$IS_HOME/lib/US_export_policy.jar:$
IS_HOME/lib/sunjce_provider.jar"
    CLASSPATH=$LIB_DIR/certadmin.jar:$JSS_JAR:$JCE_CLASSPATH:$PS_HOME/locale

    export LD_LIBRARY_PATH
    export CLASSPATH

    $CP $JSS_NSS_NSPR_LIBPATH/libnssckbi.so $CERT_DIR

    $JDK_DIR/bin/java com.sun.portal.cli.cert.CertUtil -option=createloguserpassword "${PLATFORM_CONF}" "${CERT_DIR}" "${SRA_LOG_USER_PASSWORD}"

}


GetPassword() {

    $ECHO "`$GETTEXT 'Enter the Log users password for profile '`" "($GW_GATEWAY_PROFILE) :"
    $STTY -echo
    if [ "$OSTYPE" = "Linux" ]; then
      $READ ANSWER
    else
      $LINE | while $READ -r var; do ANSWER=$var; done
    fi
    stty echo
}

# Main

GW_GATEWAY_PROFILE=$1

if [ -z "$GW_GATEWAY_PROFILE" ]; then
	$ECHO "`$GETTEXT 'Gateway profile not specified'`"
	exit -1
fi

Initialize

if [ ! -f $PLATFORM_CONF ]; then
	$ECHO "`$GETTEXT 'Gateway profile instance does not exist : '`" "$GW_GATEWAY_PROFILE"
	exit -1
fi

# Get the password
GetPassword

SRA_LOG_USER_PASSWORD=$ANSWER

CreateLogUserPassword

