#!/bin/sh

###############################################
# Sourcing macros
###############################################
DIRNAME=/usr/bin/dirname
. `$DIRNAME $0`/../lib/psmacros

###############################################

PS_STATE_FILE="$PS_CONFIG_DIR/PSConfig.properties"
SRA_STATE_FILE="$PS_CONFIG_DIR/SRAConfig.properties"
GW_STATE_FILE="$PS_CONFIG_DIR/GWConfig.properties"
NLP_STATE_FILE="$PS_CONFIG_DIR/NLPConfig.properties"
RWP_STATE_FILE="$PS_CONFIG_DIR/RWPConfig.properties"

if [ "$OSTYPE" = "Linux" ]; then
  OMIT_CHAR=''
  BELL_CHAR=''
else
  OMIT_CHAR='\c'
  BELL_CHAR='\a'
fi

MYECHO=$ECHO


#################################################################################
#Check JAVA_HOME is set or not
#################################################################################

CheckJavaHome(){
	
if [ -n "$JAVA_HOME" ]; then
  if [ -x "$JAVA_HOME"/bin/java ]; then
     	$ECHO "`$GETTEXT 'Using Java '$JAVA_HOME'/bin/java'`"
  else
	$ECHO "`$GETTEXT 'Could not find java.'` $BELL_CHAR"
	$ECHO "`$GETTEXT 'Please set JAVA_HOME to a valid JDK installed on this machine.'`"
  exit 1
  fi
else
	$ECHO "`$GETTEXT 'Please set JAVA_HOME to a JDK installed on this machine.'`"
   exit 1
fi

}


################################################################################
# Show Installation/Uninstall options - for interactive mode.
################################################################################

ShowConfigureOptions() {

  PROMPT="`$GETTEXT 'Select the component(s) for Installation or Uninstallation:'`"	

  MENU_ITEMS="`$GETTEXT 'Portal Server'`,"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'Secure Remote Access Core'`,"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'Gateway'`,"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'Netlet Proxy'`,"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'Rewriter Proxy'`"

  RETURNS="PS,SRA,GW,NLP,RWP"

  ORIG_IFS=$IFS
  IFS=","

  DEFAULT=1

  $ECHO ""
  $ECHO "$PROMPT"
  $ECHO ""

  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    ITEM_COUNT=0

    # Display the menu items.
    for MENU_ITEM in $MENU_ITEMS; do
      ITEM_COUNT=`$EXPR $ITEM_COUNT + 1`
      $ECHO "${ITEM_COUNT}. $MENU_ITEM"
    done

    # Read the user's choice.
    $ECHO ""
    $ECHO "`$GETTEXT 'Choice?'` [$DEFAULT] $OMIT_CHAR"
    read MENU_ANSWER

    if [ "$MENU_ANSWER" = "" ]; then
        MENU_ANSWER=$DEFAULT
	DONE="y"
    fi
    
    for MENU_ANS in $MENU_ANSWER; do
     if [ $MENU_ANS != "," ]; then
        if [ $MENU_ANS -ge 1 ] && [ $MENU_ANS -le $ITEM_COUNT ]; then
  	   DONE="y"
        else
           $ECHO ""
	   $ECHO "`$GETTEXT 'Invalid response!'` $BELL_CHAR"
	   $ECHO ""
	   exit 1
        fi
     fi
    done
  done
  
 for ANS in $MENU_ANSWER; do
  INDEX=0
  for RETURN in $RETURNS; do
    INDEX=`$EXPR $INDEX + 1`
    if [ "$ANS" = "$INDEX" ]; then
      COMPONENTS_TO_CONFIGURE="$COMPONENTS_TO_CONFIGURE $RETURN"
    fi
   done
 done
  IFS="$ORIG_IFS"
  DONE=$ORIG_DONE

}

################################################################################
# Get the list of components to be configured from the silent state file.
################################################################################

GetConfigOptionsFromStatefile() {

 ORIG_IFS=$IFS
 IFS=","

  RETURNS="PS,SRA,GW,NLP,RWP"
 	
  # Get the List of components to be configured.
  GrabConfig $PS_SILENT_FILE "COMPONENTS" "="
  ANSWERS=$ANSWER

   for ANS in $ANSWERS; do
     INDEX=0
     for RETURN in $RETURNS; do
      INDEX=`$EXPR $INDEX + 1`
      if [ "$ANS" = "$INDEX" ]; then
         COMPONENTS_TO_CONFIGURE="$COMPONENTS_TO_CONFIGURE $RETURN"
      fi
     done
  done

 IFS="$ORIG_IFS"

 $ECHO "The Portal Components to be Configured/Unconfigured are $COMPONENTS_TO_CONFIGURE"
}

################################################################################
# Get the list of components to be configured from the console.
################################################################################

GetConfigOptionsFromConsole() {
  ShowConfigureOptions
  $ECHO "The Portal Components to be Configured/Unconfigured are $COMPONENTS_TO_CONFIGURE"
 }

################################################################################################################
# Store the list of Components to be Installed/UnInstalled in LIST_OF_COMPONENTS_TO_CONFIGURE array.
################################################################################################################

GetComponentList() {

if [ "$PS_SILENT_FILE" != "" ]; then
  GetConfigOptionsFromStatefile
else
  GetConfigOptionsFromConsole
fi

GetInstalledComponents

GetConfigurationMode

if [ "$CONFIGURATION_MODE" != "configure" ]; then
  LIST_OF_COMPONENTS_TO_CONFIGURE=`$ECHO $INSTALLED_COMPONENTS | $AWK '{ num_elem = split($0, list); for(i=num_elem;i>0;i--) {print list[i]}}'`
  #$ECHO "The List of Components to be Unconfigured are: $LIST_OF_COMPONENTS_TO_CONFIGURE"
else
  LIST_OF_COMPONENTS_TO_CONFIGURE=$INSTALLED_COMPONENTS
  #$ECHO "The List of Components to be Configured are: $LIST_OF_COMPONENTS_TO_CONFIGURE"

fi

}

#################################################################################
#Get the Configuration Mode
#################################################################################

GetConfigurationMode() {


# Load the inputs from statefile if specified.
  if [ "$PS_SILENT_FILE" != "" ]; then
   GetConfigurationModeFromStatefile
    return
  fi

  PROMPT="`$GETTEXT 'Choose one of the following configuration options:'`"	

  MENU_ITEMS="`$GETTEXT 'configure'`;"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'scrubds'`;"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'unconfigurewithoutscrubds'`;"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'unconfigurewithscrubds'`;"

 
  RETURNS="configure;scrubds;unconfigurewithoutscrubds;unconfigurewithscrubds"

  ORIG_IFS=$IFS
  IFS=";"

  DEFAULT=1

  $ECHO "$PROMPT"
  $ECHO ""

  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    ITEM_COUNT=0

    # Display the menu items.
    for MENU_ITEM in $MENU_ITEMS; do
      ITEM_COUNT=`$EXPR $ITEM_COUNT + 1`
      $ECHO "${ITEM_COUNT}. $MENU_ITEM"
    done

    # Read the user's choice.
    $ECHO ""
    $ECHO "`$GETTEXT 'Choice?'` [$DEFAULT] $OMIT_CHAR"
    read MENU_ANSWER

    if [ "$MENU_ANSWER" = "" ]; then
        MENU_ANSWER=$DEFAULT
	DONE="y"
    else
	CheckChars "0-9" $MENU_ANSWER
	if [ $? -eq 0 ]; then
	    if [ $MENU_ANSWER -ge 1 ] && [ $MENU_ANSWER -le $ITEM_COUNT ]; then
	    	DONE="y"
	    else
		$ECHO ""
	        $ECHO "`$GETTEXT 'Invalid response!'` $BELL_CHAR"
		$ECHO ""
	    fi
	else
            $ECHO ""
	    $ECHO "`$GETTEXT 'Invalid response!'` $BELL_CHAR"
	    $ECHO ""
        fi
    fi
  done
  
  INDEX=0
  ANSWER="configure"

  for RETURN in $RETURNS; do
    INDEX=`$EXPR $INDEX + 1`
    if [ "$MENU_ANSWER" = "$INDEX" ]; then
      ANSWER=$RETURN
    fi
  done
  CONFIGURATION_MODE=$ANSWER
  $ECHO "`$GETTEXT 'The Selected Configuration Mode is.'` $CONFIGURATION_MODE"
  $ECHO 
  export CONFIGURATION_MODE
  IFS="$ORIG_IFS"
  DONE=$ORIG_DONE
}

################################################################################
# Get list of Installed components
################################################################################

GetInstalledComponents(){

  if [ "$OSTYPE" = "SunOS" ]; then
    PS_PKGINFO_FILE="/var/sadm/pkg/SUNWps/pkginfo"
    SRA_PKGINFO_FILE="/var/sadm/pkg/SUNWpsgws/pkginfo"
    GW_PKGINFO_FILE="/var/sadm/pkg/SUNWpsgw/pkginfo"
    NLP_PKGINFO_FILE="/var/sadm/pkg/SUNWpsnlp/pkginfo"
    RWP_PKGINFO_FILE="/var/sadm/pkg/SUNWpsrwp/pkginfo"

    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "PS" ]; then
       if [ -f $PS_PKGINFO_FILE ]; then
       INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS PS"
       fi
      fi
    done

    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "SRA" ]; then
       if [ -f $SRA_PKGINFO_FILE ]; then
       INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS SRA"
       fi
      fi
    done

    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "GW" ]; then
       if [ -f $GW_PKGINFO_FILE ]; then
       INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS GW"
       fi
      fi
    done

    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "NLP" ]; then
       if [ -f $NLP_PKGINFO_FILE ]; then
       INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS NLP"
       fi
      fi
    done

    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "RWP" ]; then
       if [ -f $RWP_PKGINFO_FILE ]; then
       INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS RWP"
       fi
      fi
    done
fi 

if [ "$OSTYPE" = "Linux" ]; then
    
    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "PS" ]; then
       CONFIG_RPM="sun-portal-configurator"
       $RPM -q --quiet $CONFIG_RPM
       if [ $? -eq 0 ]; then
	  INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS PS"
       fi
      fi
    done

    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "SRA" ]; then
       CONFIG_RPM="sun-portal-srasample"
       $RPM -q --quiet $CONFIG_RPM
       if [ $? -eq 0 ]; then
        INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS SRA"
       fi
      fi
    done

   for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "GW" ]; then
       CONFIG_RPM="sun-portal-gateway"
       $RPM -q --quiet $CONFIG_RPM
       if [ $? -eq 0 ]; then
        INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS GW"
       fi
      fi
    done

   for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "NLP" ]; then
       CONFIG_RPM="sun-portal-netletproxy"
       $RPM -q --quiet $CONFIG_RPM
       if [ $? -eq 0 ]; then
        INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS NLP"
       fi
      fi
    done

    for LIST in $COMPONENTS_TO_CONFIGURE; do
      if [ "$LIST" = "RWP" ]; then
       CONFIG_RPM="sun-portal-rewriterproxy"
       $RPM -q --quiet $CONFIG_RPM
       if [ $? -eq 0 ]; then
        INSTALLED_COMPONENTS="$INSTALLED_COMPONENTS RWP"
       fi
      fi
    done
 fi

  $ECHO "The Installed Components to be Configured/Unconfigured are: $INSTALLED_COMPONENTS"
}
###############################################
# Check for ASCII characters
###############################################

CheckChars() {

  VALID_CHARS=$1
  STR=$2
  US_SPECIFIC=""

  if [ "${LANG}" != "" ]; then
    $ECHO ${LANG} | $GREP "en_US" > /dev/null 2>&1
    if [ $? -eq 1 ]; then
      US_SPECIFIC="n"
      $ECHO $VALID_CHARS | $GREP "a-z" > /dev/null 2>&1
      if [ $? -eq 0 ]; then
        US_SPECIFIC="y"
      fi
      $ECHO $VALID_CHARS | $GREP "A-Z" > /dev/null 2>&1
      if [ $? -eq 0 ]; then
	US_SPECIFIC="y"
      fi
      if [ "$US_SPECIFIC" = "y" ]; then
	return 0
      fi
    fi
  fi

  if [ "$STR" != "" ]; then
    $ECHO $STR | $GREP "[^$VALID_CHARS]" > /dev/null 2>&1
    if [ $? -eq 1 ]; then
      return 0
    else
      return 1
    fi
  else
    return 1
  fi

}

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

GrabConfig() {

  FILE=$1
  KEY=$2
  SEPARATOR=$3

  ANSWER=`$GREP "^$KEY$SEPARATOR" $FILE | $UNIQ | $SED -e "s/$KEY$SEPARATOR//"`

}

################################################################################
# Get portalserver installation base directory.
################################################################################

GetPSBaseDir() {

  if [ "$OSTYPE" = "SunOS" ]; then
    PS_PKGINFO_FILE="/var/sadm/pkg/SUNWps/pkginfo"
    GrabConfig $PS_PKGINFO_FILE "BASEDIR" "="
    BASEDIR=$ANSWER
  fi

  if [ "$OSTYPE" = "Linux" ]; then
    CONFIG_RPM="sun-portal-configurator"
    $RPM -q --quiet $CONFIG_RPM
    if [ $? -eq 0 ]; then
      ANSWER=`$RPM -q --queryformat "%{INSTALLPREFIX}" $CONFIG_RPM`
      BASEDIR=$ANSWER
    fi
  fi
}


################################################################################
# Get Gateway installation base directory.
################################################################################

GetGWBaseDir() {

  if [ "$OSTYPE" = "SunOS" ]; then
    GW_PKGINFO_FILE="/var/sadm/pkg/SUNWpsgw/pkginfo"
    GrabConfig $GW_PKGINFO_FILE "BASEDIR" "="
    GW_BASEDIR=$ANSWER
  fi

  if [ "$OSTYPE" = "Linux" ]; then
    CONFIG_RPM="sun-portal-gateway"
    $RPM -q --quiet $CONFIG_RPM
    if [ $? -eq 0 ]; then
      ANSWER=`$RPM -q --queryformat "%{INSTALLPREFIX}" $CONFIG_RPM`
      GW_BASEDIR=$ANSWER
    fi
  fi
}

################################################################################
# Get RewriterProxy installation base directory.
################################################################################

GetRWPBaseDir() {

  if [ "$OSTYPE" = "SunOS" ]; then
    RWP_PKGINFO_FILE="/var/sadm/pkg/SUNWpsrwp/pkginfo"
    GrabConfig $RWP_PKGINFO_FILE "BASEDIR" "="
    RWP_BASEDIR=$ANSWER
  fi

  if [ "$OSTYPE" = "Linux" ]; then
    CONFIG_RPM="sun-portal-rewriterproxy"
    $RPM -q --quiet $CONFIG_RPM
    if [ $? -eq 0 ]; then
      ANSWER=`$RPM -q --queryformat "%{INSTALLPREFIX}" $CONFIG_RPM`
      RWP_BASEDIR=$ANSWER
    fi
  fi
}

################################################################################
# Get NetletProxy installation base directory.
################################################################################

GetNLPBaseDir() {

  if [ "$OSTYPE" = "SunOS" ]; then
    NLP_PKGINFO_FILE="/var/sadm/pkg/SUNWpsnlp/pkginfo"
    GrabConfig $NLP_PKGINFO_FILE "BASEDIR" "="
    NLP_BASEDIR=$ANSWER
  fi

  if [ "$OSTYPE" = "Linux" ]; then
    CONFIG_RPM="sun-portal-netletproxy"
    $RPM -q --quiet $CONFIG_RPM
    if [ $? -eq 0 ]; then
      ANSWER=`$RPM -q --queryformat "%{INSTALLPREFIX}" $CONFIG_RPM`
      NLP_BASEDIR=$ANSWER
    fi
  fi
}

################################################################################
# Load the identity server information from AMConfig.properties file.
################################################################################

LoadISInfo() {

  AMCONFIG_FILE=${IDSAME_CONFIG_DIR}/config/AMConfig.properties

  # Get identity server base directory
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.installdir" "="
  IDSAME_BASEDIR=`$DIRNAME $ANSWER`

  # Get directory server host.
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.directory.host" "="
  DS_HOST=$ANSWER

  # Get directory server port.
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.directory.port" "="
  DS_PORT=$ANSWER

  # Get identity server deployment URI
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.services.deploymentDescriptor" "="
  IDSAME_AMSERVER=$ANSWER

  # Get identity server org DN.
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.defaultOrg" "="
  IDSAME_ORG_DN=$ANSWER

  # Get identity server password encryption key.
  GrabConfig $AMCONFIG_FILE "am.encryption.pwd" "="
  IDSAME_PASSWORD_KEY=$ANSWER

  # Get the identity server protocol.
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.server.protocol" "="
  SERVER_PROTOCOL=$ANSWER

  # Get the identity server port.
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.server.port" "="
  SERVER_PORT=$ANSWER

  # Jdk directory
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.jdk.path" "="
  JDK_DIR=$ANSWER
  
  # Get the identity server console URI.
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.console.deploymentDescriptor" "="
  IDSAME_AMCONSOLE=$ANSWER

  # Get the identity server host.
  GrabConfig $AMCONFIG_FILE "com.iplanet.am.server.host" "="
  SERVER_HOST=$ANSWER

}

################################################################################
# Get password
################################################################################

GetPassword() {

  PROMPT=$1
  ANSWER_REPEAT=""
  ORIG_DONE=$DONE
  DONE=""
  LENGTH=""

  DONE="n"
  while [ "$DONE" = "n" ]; do
    $ECHO "$PROMPT $OMIT_CHAR"
    $STTY -echo
    read ANSWER
    $STTY echo
    HAD_INPUT="y"
    if [ "$ANSWER" != "" ]; then
      $ECHO "`$GETTEXT 'Again?'` $OMIT_CHAR"
      $STTY -echo
      read ANSWER_REPEAT
      $STTY echo
      $ECHO ""
      if [ "$ANSWER" != "$ANSWER_REPEAT" ]; then
        $ECHO "`$GETTEXT 'Password verification failed!'` $BELL_CHAR"
      else
        DONE="y"
      fi
    else
      $ECHO ""
    fi
  done
  DONE=$ORIG_DONE
}

################################################################################
# Question
################################################################################

Question() {

  PROMPT=$1
  VALID_CHARS=$2
  DEFAULT=$3
  ERROR_MESSAGE=$4

  ORIG_DONE="$DONE"
  DONE=""
  CHECK=""

  DONE="n"
  while [ "$DONE" = "n" ]; do
    $ECHO "$PROMPT [$DEFAULT] $OMIT_CHAR"
    read ANSWER
    if [ "$ANSWER" = "" ]; then
      if [ "$DEFAULT" = "" ]; then
        DONE="n"
      else
        ANSWER=$DEFAULT
        DONE="y"
      fi
    else
      CHECK=`$ECHO $ANSWER | $GREP "[^$VALID_CHARS]"`
      if [ "$CHECK" = "" ]; then
        DONE="y"
      else
        $ECHO "Error: $ERROR_MESSAGE $BELL_CHAR"
      fi
    fi
  done
  DONE=$ORIG_DONE
}

###############################################
# QuestionWithoutDefault
###############################################

QuestionWithoutDefault() {

  PROMPT=$1
  VALID_CHARS=$2

  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    $ECHO "$PROMPT $OMIT_CHAR"
    read ANSWER
    HAD_INPUT="y"
    if [ "$ANSWER" = "" ]; then
      DONE="n"
    else
      CheckChars "$VALID_CHARS" "$ANSWER"
      if [ $? -eq 0 ]; then
        DONE="y"
      else
        $ECHO "`$GETTEXT 'Invalid answer!'` $BELL_CHAR"
      fi
    fi
  done
  DONE=$ORIG_DONE
}

################################################################################
# Yes or No
################################################################################

YesNo() {

  PROMPT=$1
  DEFAULT=$2
  FULL_ANSWER=""

  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    if [ "$DEFAULT" = "y" ]; then
      $ECHO "$PROMPT [y]/n $OMIT_CHAR"
      FULL_ANSWER="n"
    elif [ "$DEFAULT" = "n" ]; then
      $ECHO "$PROMPT y/[n] $OMIT_CHAR"
      FULL_ANSWER="n"
    elif [ "$DEFAULT" = "yes" ]; then
      $ECHO "$PROMPT [yes]/no $OMIT_CHAR"
      FULL_ANSWER="y"
    elif [ "$DEFAULT" = "no" ]; then
      $ECHO "$PROMPT yes/[no] $OMIT_CHAR"
      FULL_ANSWER="y"
    else
      $ECHO "$PROMPT y/n $OMIT_CHAR"
      FULL_ANSWER="n"
    fi

    read ANSWER
    HAD_INPUT="y"

    if [ "$ANSWER" = "" ] && [ "$DEFAULT" != "" ]; then
      ANSWER=$DEFAULT
      DONE="y"
    else
      ANSWER=`$ECHO $ANSWER | $SED -e "y/YESNO/yesno/"`
      if [ "$FULL_ANSWER" = "n" ]; then
        if [ "$ANSWER" = "yes" ]; then
          ANSWER="y"
        elif [ "$ANSWER" = "no" ]; then
          ANSWER="n"
        fi
        if [ "$ANSWER" = "y" ]; then
          DONE="y"
        elif [ "$ANSWER" = "n" ]; then
          DONE="y"
        else
          $ECHO "`$GETTEXT 'Invalid response! y/n only.'` $BELL_CHAR"
        fi
      else
        if [ "$ANSWER" = "yes" ]; then
          DONE="y"
        elif [ "$ANSWER" = "no" ]; then
          DONE="y"
        else
          $ECHO "`$GETTEXT 'Invalid response! yes/no only.'` $BELL_CHAR"
        fi
      fi
    fi
  done
  DONE=$ORIG_DONE
}

################################################################################
# Show the container options and get user's choice.
################################################################################

ShowContainerOptions() {

  PROMPT="`$GETTEXT 'Choose the container to which the portalserver needs to be configured:'`"	

  MENU_ITEMS="`$GETTEXT 'Sun Java System Web Server'`;"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'Sun Java System Application Server 8.1'`;"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'Sun Java System Application Server 7.0'`;"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'BEA WebLogic Application Server'`;"
  MENU_ITEMS="$MENU_ITEMS`$GETTEXT 'IBM Websphere Application Server'`"

  RETURNS="IWS;SUNONE8;SUNONE;BEAWL;IBMWS"

  ORIG_IFS=$IFS
  IFS=";"

  DEFAULT=1

  $ECHO "$PROMPT"
  $ECHO ""

  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    ITEM_COUNT=0

    # Display the menu items.
    for MENU_ITEM in $MENU_ITEMS; do
      ITEM_COUNT=`$EXPR $ITEM_COUNT + 1`
      $ECHO "${ITEM_COUNT}. $MENU_ITEM"
    done

    # Read the user's choice.
    $ECHO ""
    $ECHO "`$GETTEXT 'Choice?'` [$DEFAULT] $OMIT_CHAR"
    read MENU_ANSWER

    if [ "$MENU_ANSWER" = "" ]; then
        MENU_ANSWER=$DEFAULT
	DONE="y"
    else
	CheckChars "0-9" $MENU_ANSWER
	if [ $? -eq 0 ]; then
	    if [ $MENU_ANSWER -ge 1 ] && [ $MENU_ANSWER -le $ITEM_COUNT ]; then
	    	DONE="y"
	    else
		$ECHO ""
	        $ECHO "`$GETTEXT 'Invalid response!'` $BELL_CHAR"
		$ECHO ""
	    fi
	else
            $ECHO ""
	    $ECHO "`$GETTEXT 'Invalid response!'` $BELL_CHAR"
	    $ECHO ""
        fi
    fi
  done
  
  INDEX=0
  ANSWER="IWS"

  for RETURN in $RETURNS; do
    INDEX=`$EXPR $INDEX + 1`
    if [ "$MENU_ANSWER" = "$INDEX" ]; then
      ANSWER=$RETURN
    fi
  done

  IFS="$ORIG_IFS"
  DONE=$ORIG_DONE
}

################################################################################
# Get the required passwords for PS and SRACore
################################################################################

GetCommonPasswords() {

  if [ "$IDSAME_ADMIN_PASSWORD" = "" ]; then
     GetPassword "`$GETTEXT 'What is the Access Manager Administrator (amadmin) Password?'`"
     IDSAME_ADMIN_PASSWORD=$ANSWER
     export IDSAME_ADMIN_PASSWORD
  fi

  if [ "$IDSAME_LDAPUSER_PASSWORD" = "" ]; then
     GetPassword "`$GETTEXT 'What is the Access Manager Internal LDAP Authentication User Password?'`"
     IDSAME_LDAPUSER_PASSWORD=$ANSWER
     export IDSAME_LDAPUSER_PASSWORD
  fi

  if [ "$DS_DIRMGR_DN" = "" ]; then
     DS_DIRMGR_DN="cn=Directory Manager"
     Question "`$GETTEXT 'What is the Directory Manager DN?'`" "a-zA-Z0-9\./_-=\ \"" "$DS_DIRMGR_DN"
     DS_DIRMGR_DN=$ANSWER
  fi

  if [ "$DS_DIRMGR_PASSWORD" = "" ]; then
     GetPassword "`$GETTEXT 'What is the Directory Manager Password?'`"
     DS_DIRMGR_PASSWORD=$ANSWER
     export DS_DIRMGR_PASSWORD
  fi

}

################################################################################
# Get the required information for configuring PS on new S1WS instance.
################################################################################

GetS1WSAddInstanceInfo() {

  # Web container base directory.
  DEPLOY_DIR="/opt/SUNWwbsvr"
  Question "`$GETTEXT 'Where is the Web Container installed?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DIR"
  DEPLOY_DIR=$ANSWER

  # New instance name.
  DEPLOY_INSTANCE=$PS_HOST
  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    Question "`$GETTEXT 'What is the Web Container instance?'`" "a-zA-Z0-9\./_-" "$DEPLOY_INSTANCE" "`$GETTEXT 'Only alphanumeric characters!'`"
    DEPLOY_INSTANCE=$ANSWER
    if [ ! -d "$DEPLOY_DIR/https-$DEPLOY_INSTANCE" ]; then
      $ECHO "`$GETTEXT 'Error: Web container instance does not exist.'` $BELL_CHAR"
    else
      DONE="y"
    fi
  done

  DEPLOY_DOCROOT=$DEPLOY_DIR/docs

  DEPLOY_JDK_DIR=$JDK_DIR

  DEPLOY_NOW="y"

  DEPLOY_ADMIN_PASSWORD="not_set"
  export DEPLOY_ADMIN_PASSWORD

  DONE=$ORIG_DONE
}

################################################################################
# Get the required information for S1WS configuration.
################################################################################

GetS1WSInfo() {
  GetS1WSAddInstanceInfo
}

################################################################################
# Get the required information for configuring PS on new S1AS instance.
################################################################################

GetS1ASAddInstanceInfo() {

  # Web container base directory.
  DEPLOY_DIR="/opt/SUNWappserver7"
  Question "`$GETTEXT 'Where is the Web Container installed?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DIR"
  DEPLOY_DIR=$ANSWER

  # Deploy domain.
  DEPLOY_DOMAIN="$S1AS70_VAR_DIR/domains/domain1"
  Question "`$GETTEXT 'What is the Web Container domain?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DOMAIN"
  DEPLOY_DOMAIN=$ANSWER
    
  # Deploy admin.
  Question "`$GETTEXT 'What is the Web Container administrator?'`" "a-zA-Z0-9\./_-" "admin"
  DEPLOY_ADMIN=$ANSWER
  
  # Deploy admin port.
  Question "`$GETTEXT 'What is the Web Container administration port?'`" "0-9" "4848"
  DEPLOY_ADMIN_PORT=$ANSWER
  
  # Deploy admin protocol.
  DEPLOY_ADMIN_PROTOCOL="http"
  YesNo "`$GETTEXT 'Is the Web Container administration port secure?'`" "n"
  if [ "$ANSWER" = "y" ]; then
    DEPLOY_ADMIN_PROTOCOL="https"
  fi

  # New instance name.
  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    Question "`$GETTEXT 'What is the Web Container instance?'`" "a-zA-Z0-9\./_-" "server1" "`$GETTEXT 'Only alphanumeric characters!'`"
    DEPLOY_INSTANCE=$ANSWER

    if [ ! -d "$DEPLOY_DOMAIN/$DEPLOY_INSTANCE" ]; then
      $ECHO "`$GETTEXT 'Error: Web container instance does not exist'` $BELL_CHAR"
    else
      DONE="y"
    fi
  done
     
  # Deployment document root
  Question "`$GETTEXT 'What is the Web Container document root directory?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DOMAIN/$DEPLOY_INSTANCE/docroot"
  DEPLOY_DOCROOT=$ANSWER
  
  # Application server administration password
  GetPassword "What is the Web Container administrator password?"
  DEPLOY_ADMIN_PASSWORD=$ANSWER
  export DEPLOY_ADMIN_PASSWORD

  DEPLOY_JDK_DIR=$JDK_DIR

  DEPLOY_NOW="y"

  DONE="$ORIG_DONE"

}

################################################################################
# Get the required information for S1AS configuration.
################################################################################

GetS1ASInfo() {
  GetS1ASAddInstanceInfo
}


################################################################################
# Get the required information for S1AS8 configuration.
################################################################################

GetS1AS8Info() {

  # Web container base directory.
  DEPLOY_DIR="/opt/SUNWappserver/appserver"
  Question "`$GETTEXT 'Where is the Web Container installed?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DIR"
  DEPLOY_DIR=$ANSWER

  # Deploy domain.
  DEPLOY_DOMAIN="domain1"
  Question "`$GETTEXT 'What is the Web Container domain?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DOMAIN"
  DEPLOY_DOMAIN=$ANSWER

  # Deploy Instance Dir.
  DEPLOY_INSTANCE_DIR="/var/opt/SUNWappserver/domains/domain1"
  Question "`$GETTEXT 'What is the Web Container Deploy Instance Dir?'`" "a-zA-Z0-9\./_-" "$DEPLOY_INSTANCE_DIR"
  DEPLOY_INSTANCE_DIR=$ANSWER

  # Deploy Instance.
  DEPLOY_INSTANCE="server"
  Question "`$GETTEXT 'What is the Web Container Deploy Instance?'`" "a-zA-Z0-9\./_-" "$DEPLOY_INSTANCE"
  DEPLOY_INSTANCE=$ANSWER

  # Deploy DEPLOY_DOCROOT.
  DEPLOY_DOCROOT="/var/opt/SUNWappserver/domains/domain1/docroot"
  Question "`$GETTEXT 'What is the Web Container Document Directory?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DOCROOT"
  DEPLOY_DOCROOT=$ANSWER

  # Deploy Admin.
  DEPLOY_ADMIN="admin"
  Question "`$GETTEXT 'Who is the Web Container administrator?'`" "a-zA-Z0-9\./_-" "$DEPLOY_ADMIN"
  DEPLOY_ADMIN=$ANSWER
  
  # Deploy Admin HostName.
  DEPLOY_ADMIN_HOST="$PS_HOST"
  Question "`$GETTEXT 'What is the HostName of the Machine where Web Container is Installed?'`" "a-zA-Z0-9\./_-" "$DEPLOY_ADMIN_HOST"
  DEPLOY_ADMIN_HOST=$ANSWER

  # Deploy admin protocol.
  DEPLOY_ADMIN_PROTOCOL="https"
  YesNo "`$GETTEXT 'Is the Web Container administration port secure?'`" "y"
  if [ "$ANSWER" = "n" ]; then
    DEPLOY_ADMIN_PROTOCOL="http"
  fi

  # Deploy Admin Port.
  DEPLOY_ADMIN_PORT="4849"
  Question "`$GETTEXT 'What is the Web Container administration port?'`" "0-9" "$DEPLOY_ADMIN_PORT"
  DEPLOY_ADMIN_PORT=$ANSWER
    
  # Application server administration password
  GetPassword "What is the Web Container administrator password?"
  DEPLOY_ADMIN_PASSWORD=$ANSWER
  export DEPLOY_ADMIN_PASSWORD

  DEPLOY_JDK_DIR=$JDK_DIR

  DEPLOY_NOW="y"

  DONE="$ORIG_DONE"

}



################################################################################
# Get the required information for configuring PS to BEA WL container instance.
################################################################################

GetBEAWLAddInstaceInfo() {

  # BEA home directory.
  DEPLOY_DIR="/usr/local/bea"
  Question "`$GETTEXT 'Where is the Web Container Home Directory?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DIR"
  DEPLOY_DIR=$ANSWER

  # BEA Product Directory.
  DEPLOY_PRODUCT_DIR=$DEPLOY_DIR/weblogic81
  Question "`$GETTEXT 'Where is the Web Container Product Directory?'`" "a-zA-Z0-9\./_-" "$DEPLOY_PRODUCT_DIR"
  DEPLOY_PRODUCT_DIR=$ANSWER

  # Deploy domain.
  DEPLOY_DOMAIN="mydomain"
  Question "`$GETTEXT 'What is the Web Container domain?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DOMAIN"
  DEPLOY_DOMAIN=$ANSWER
  
  # Deploy admin.
  DEPLOY_ADMIN="weblogic"
  Question "`$GETTEXT 'What is the Web Container administrator?'`" "a-zA-Z0-9\./_-" "$DEPLOY_ADMIN"
  DEPLOY_ADMIN=$ANSWER
  
  # Deploy Admin HostName.
  DEPLOY_ADMIN_HOST="$PS_HOST"
  Question "`$GETTEXT 'What is the HostName of the Machine where Web Container is Installed?'`" "a-zA-Z0-9\./_-" "$DEPLOY_ADMIN_HOST"
  DEPLOY_ADMIN_HOST=$ANSWER

  # Deploy admin port.
  DEPLOY_ADMIN_PORT="7001"
  Question "`$GETTEXT 'What is the Web Container administration port?'`" "0-9" "$DEPLOY_ADMIN_PORT"
  DEPLOY_ADMIN_PORT=$ANSWER
  
  # Deploy admin protocol.
  DEPLOY_ADMIN_PROTOCOL="http"
  YesNo "`$GETTEXT 'Is the Web Container administration port secure?'`" "n"
  if [ "$ANSWER" = "y" ]; then
    DEPLOY_ADMIN_PROTOCOL="https"
  fi

  # User project's directory.
  DEPLOY_PROJECT_DIR="user_projects"
  Question "`$GETTEXT 'What is the User Projects Directory'`" "a-zA-Z0-9\./_-" $DEPLOY_PROJECT_DIR
  DEPLOY_PROJECT_DIR=$ANSWER

  # Deploy Domain's directory.
  DEPLOY_DOMAINS_DIR="domains"
  Question "`$GETTEXT 'What is the Deploy Domains Directory'`" "a-zA-Z0-9\./_-" $DEPLOY_DOMAINS_DIR
  DEPLOY_DOMAINS_DIR=$ANSWER

  # Weblogic Configuration Directory Location.
  WEBLOGIC_CONFIG_DIR="$DEPLOY_DIR/$DEPLOY_PROJECT_DIR/$DEPLOY_DOMAINS_DIR/$DEPLOY_DOMAIN"
  Question "`$GETTEXT 'What is the Web Container Configuration Directory Location'`" "a-zA-Z0-9\./_-" $WEBLOGIC_CONFIG_DIR
  WEBLOGIC_CONFIG_DIR=$ANSWER
  
  # New instance name.
  DEPLOY_INSTANCE="myserver"
  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    Question "`$GETTEXT 'What is the Web Container instance?'`" "a-zA-Z0-9\./_-" "$DEPLOY_INSTANCE" "`$GETTEXT 'Only alphanumeric characters!'`"
    DEPLOY_INSTANCE=$ANSWER
    if [ ! -d "$WEBLOGIC_CONFIG_DIR/$DEPLOY_INSTANCE" ]; then
      $ECHO "`$GETTEXT 'Error: Web container instance does not exist'` $BELL_CHAR"
    else
      DONE="y"
    fi
  done

  # Deployment document root
  DEPLOY_DOCROOT="$WEBLOGIC_CONFIG_DIR/applications"
  Question "`$GETTEXT 'What is the Web Container document root directory?'`" "a-zA-Z0-9\./_-" $DEPLOY_DOCROOT
  DEPLOY_DOCROOT=$ANSWER

  # Weblogic JDK DIR
  DEPLOY_JDK_DIR="$DEPLOY_DIR/jdk141_05"
  Question "`$GETTEXT 'What is the Web Container JDK Home?'`" "a-zA-Z0-9\./_-" $DEPLOY_JDK_DIR
  DEPLOY_JDK_DIR=$ANSWER
  
  # Application server administration password
  GetPassword "What is the Web Container administrator password?"
  DEPLOY_ADMIN_PASSWORD=$ANSWER
  $ECHO ""

  DEPLOY_NOW="y"

  DONE=$ORIG_DONE
}

################################################################################
# Get the required information for WebLogic configuration.
################################################################################

GetBEAWLInfo() {
  GetBEAWLAddInstaceInfo
}

################################################################################
# Get the required information for configuring PS to IBM Websphere instance.
################################################################################

GetIBMWSAddInstaceInfo() {
  
  # IBM installation base directory.
  DEPLOY_DIR="/opt/WebSphere/AppServer"
  Question "`$GETTEXT 'Where is the Web Container installed?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DIR"
  DEPLOY_DIR=$ANSWER
  
  # Deploy virtual host.
  DEPLOY_VIRTUAL_HOST="default_host"
  Question "`$GETTEXT 'What is the Virtual Host Name?'`" "a-zA-Z0-9\./_-" "$DEPLOY_VIRTUAL_HOST"
  DEPLOY_VIRTUAL_HOST=$ANSWER
  
  # Deploy node.
  DEPLOY_NODE="`$HOSTNAME`"
  Question "`$GETTEXT 'What is the Node name?'`" "a-zA-Z0-9\./_-" "$DEPLOY_NODE"
  DEPLOY_NODE=$ANSWER
  
  # Deploy cell.
  DEPLOY_CELL=$DEPLOY_NODE
  Question "`$GETTEXT 'What is the Cell name?'`" "a-zA-Z0-9\./_-" "$DEPLOY_CELL"
  DEPLOY_CELL=$ANSWER
  
  # New instance name.
  DEPLOY_INSTANCE="server1"
  ORIG_DONE=$DONE
  DONE="n"
  while [ "$DONE" = "n" ]; do
    Question "`$GETTEXT 'Instance nickname?'`" "a-zA-Z0-9\./_-" "$DEPLOY_INSTANCE" "`$GETTEXT 'Only alphanumeric characters!'`"
    DEPLOY_INSTANCE=$ANSWER
    if [ ! -d "$DEPLOY_DIR/config/cells/$DEPLOY_CELL/nodes/$DEPLOY_NODE/servers/$DEPLOY_INSTANCE" ]; then
      $ECHO "`$GETTEXT 'Error: Web container instance does not exist'` $BELL_CHAR"
    else
      DONE="y"
    fi
  done
  
  # Deployment document root
  DEPLOY_DOCROOT="/opt/IBMHttpServer/htdocs"
  Question "`$GETTEXT 'What is the Web Container document root directory?'`" "a-zA-Z0-9\./_-" "$DEPLOY_DOCROOT"
  DEPLOY_DOCROOT=$ANSWER
  
  # Web container JDK home directory.
  DEPLOY_JDK_DIR="$DEPLOY_DIR/java"
  Question "`$GETTEXT 'What is the Web Container JDK Home?'`" "a-zA-Z0-9\./_-" "$DEPLOY_JDK_DIR"
  DEPLOY_JDK_DIR=$ANSWER

  DEPLOY_ADMIN_PASSWORD="not_set"
  export DEPLOY_ADMIN_PASSWORD
 
  DEPLOY_NOW="y"

  DONE=$ORIG_DONE
}

################################################################################
# Get the required information for WebSphere configuration.
################################################################################

GetIBMWSInfo() {
  GetIBMWSAddInstaceInfo
}

################################################################################
# Get the Configuration mode from statefile.
################################################################################

GetConfigurationModeFromStatefile() {
  GrabConfig $PS_SILENT_FILE "PS_CONFIGURATION_MODE" "="
  CONFIGURATION_MODE=$ANSWER
  export CONFIGURATION_MODE
}



################################################################################
# Get the portalserver configuration parameters from statefile.
################################################################################

GetPSConfigInfoFromStatefile() {

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_TYPE" "="
  DEPLOY_TYPE=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_DIR" "="
  DEPLOY_DIR=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_DOMAIN" "="
  DEPLOY_DOMAIN=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_INSTANCE" "="
  DEPLOY_INSTANCE=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_DOCROOT" "="
  DEPLOY_DOCROOT=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_ADMIN" "="
  DEPLOY_ADMIN=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_ADMIN_PROTOCOL" "="
  DEPLOY_ADMIN_PROTOCOL=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_ADMIN_HOST" "="
  DEPLOY_ADMIN_HOST=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_ADMIN_PORT" "="
  DEPLOY_ADMIN_PORT=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_JDK_DIR" "="
  DEPLOY_JDK_DIR=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_PRODUCT_DIR" "="
  DEPLOY_PRODUCT_DIR=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_PROJECT_DIR" "="
  DEPLOY_PROJECT_DIR=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_DOMAINS_DIR" "="
  DEPLOY_DOMAINS_DIR=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_WEBLOGIC_CONFIG_DIR" "="
  WEBLOGIC_CONFIG_DIR=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_NODE" "="
  DEPLOY_NODE=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_CELL" "="
  DEPLOY_CELL=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_VIRTUAL_HOST" "="
  DEPLOY_VIRTUAL_HOST=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_URI" "="
  DEPLOY_URI=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_LOAD_BALANCER_URL" "="
  LOAD_BALANCER_URL=$ANSWER

  DEPLOY_NOW="y"

  GrabConfig $PS_SILENT_FILE "PS_PROTOCOL" "="
  PS_PROTOCOL=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_HOST" "="
  PS_HOST=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_PORT" "="
  PS_PORT=$ANSWER

  GrabConfig $PS_SILENT_FILE "PS_IDSAME_ADMIN_PASSWORD" "="
  IDSAME_ADMIN_PASSWORD=$ANSWER
  export IDSAME_ADMIN_PASSWORD

  GrabConfig $PS_SILENT_FILE "PS_IDSAME_LDAPUSER_PASSWORD" "="
  IDSAME_LDAPUSER_PASSWORD=$ANSWER
  export IDSAME_LDAPUSER_PASSWORD

  GrabConfig $PS_SILENT_FILE "PS_DS_DIRMGR_DN" "="
  DS_DIRMGR_DN=$ANSWER
  export DS_DIRMGR_DN
  
  GrabConfig $PS_SILENT_FILE "PS_DS_DIRMGR_PASSWORD" "="
  DS_DIRMGR_PASSWORD=$ANSWER
  export DS_DIRMGR_PASSWORD

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_ADMIN_PASSWORD" "="
  DEPLOY_ADMIN_PASSWORD=$ANSWER
  if [ "$DEPLOY_ADMIN_PASSWORD" = "" ]; then
    DEPLOY_ADMIN_PASSWORD="not_set"
  fi
  export DEPLOY_ADMIN_PASSWORD

  GrabConfig $PS_SILENT_FILE "PS_DEPLOY_INSTANCE_DIR" "="
  DEPLOY_INSTANCE_DIR=$ANSWER
  export DEPLOY_INSTANCE_DIR
  #$ECHO "DEPLOY_INSTANCE_DIR" $DEPLOY_INSTANCE_DIR 

  # Export dummy gateway log user password - workaroud for installing PS & SRACore in one session.
  SRA_LOG_USER_PASSWORD="not_set"
  export SRA_LOG_USER_PASSWORD

}

######################################################################################
# Get PS URL Related Info
######################################################################################

GetPSURLInfo() {

  if [ "$PS_HOST" = "" ]; then
    # Portalserver host.
    PS_HOST="`$HOSTNAME`.`$DOMAINNAME`"
    Question "`$GETTEXT 'What is the Portal Server Web Containers host?'`" "a-zA-Z0-9\./_-" "$PS_HOST"
    PS_HOST=$ANSWER
    DEPLOY_ADMIN_HOST=$PS_HOST
    $ECHO ""
  fi

  if [ "$PS_PROTOCOL" = "" ]; then
    # Portalserver Protocol.
    PS_PROTOCOL="http"
    YesNo "`$GETTEXT 'Is the Portal Server Web Containers port secure?'`" "n"
    if [ "$ANSWER" = "y" ]; then
      PS_PROTOCOL="https"
    fi
    $ECHO ""
  fi

  if [ "$PS_PORT" = "" ]; then
    # Portalserver Port.
    PS_PORT="80"
    Question "`$GETTEXT 'What is the Portal Server Web Containers port?'`" "0-9" "$PS_PORT"
    PS_PORT=$ANSWER
    $ECHO ""
  fi
  
  if [ "$DEPLOY_URI" = "" ]; then
    $ECHO ""
    # Portalserver deployment URI.
    Question "`$GETTEXT 'What is the Portal Server deployment URI?'`" "a-zA-Z0-9\./_-" "/portal"
    DEPLOY_URI=$ANSWER
  fi
  
}

################################################################################
# Get the configuration information for PS and create PSConfig.properies
################################################################################

GetPSConfigInfo() {

  # Get portalserver basedirectory.
  GetPSBaseDir

  # Load the identity server information from AMConfig.properties file.
  LoadISInfo
  
  # Load the inputs from statefile if specified.
  if [ "$PS_SILENT_FILE" != "" ]; then
    GetPSConfigInfoFromStatefile
    CreatePSStateFile
    return
  fi
  if [ "$CONFIGURATION_MODE" = "configure" ]; then
    $ECHO ""
    $ECHO "`$GETTEXT 'Please provide the following Portal Server configuration informations'`"
    $ECHO ""
    
    #Get Portal Server URL Info
    GetPSURLInfo

    # Get the container to which portalserver should be deployed.
    ShowContainerOptions
	
    if [ "$ANSWER" = "IWS" ]; then
      DEPLOY_TYPE="IWS"
      GetS1WSInfo
    elif [ "$ANSWER" = "SUNONE" ]; then
      DEPLOY_TYPE="SUNONE"
      GetS1ASInfo
    elif [ "$ANSWER" = "SUNONE8" ]; then
      DEPLOY_TYPE="SUNONE8"
      GetS1AS8Info
    elif [ "$ANSWER" = "BEAWL" ]; then
      DEPLOY_TYPE="WEBLOGIC"
      GetBEAWLInfo
    elif [ "$ANSWER" = "IBMWS" ]; then
      DEPLOY_TYPE="WEBSPHERE"
      GetIBMWSInfo
    fi

    # Portalserver load balancer URL
    LOAD_BALANCER_URL="$PS_PROTOCOL://$PS_HOST:$PS_PORT$DEPLOY_URI"
    Question "`$GETTEXT 'What is the Portal Server Load Balancer URL?'`" ":a-zA-Z0-9\./_-" "$LOAD_BALANCER_URL"
    LOAD_BALANCER_URL=$ANSWER

    # Get the passwords.
    $ECHO ""
    GetCommonPasswords
    $ECHO ""

    # Create PS state file.
    CreatePSStateFile

    # Export dummy gateway log user password - workaroud for installing PS & SRACore in one session.
    SRA_LOG_USER_PASSWORD="not_set"
    export SRA_LOG_USER_PASSWORD
  fi

  if [ "$CONFIGURATION_MODE" != "configure" ]; then
    # Get the passwords.
    $ECHO ""
    GetCommonPasswords
    $ECHO ""
  fi

}

################################################################################
# Create PS state file.
################################################################################

CreatePSStateFile() {

if [ "$CONFIGURATION_MODE" = "configure" ]; then

  $ECHO "JDK_DIR=$JDK_DIR" > $PS_STATE_FILE
  $ECHO "DEPLOY_TYPE=$DEPLOY_TYPE" >> $PS_STATE_FILE
  $ECHO "DEPLOY_DIR=$DEPLOY_DIR" >> $PS_STATE_FILE
  $ECHO "DEPLOY_PRODUCT_DIR=$DEPLOY_PRODUCT_DIR" >> $PS_STATE_FILE
  $ECHO "DEPLOY_PROJECT_DIR=$DEPLOY_PROJECT_DIR" >> $PS_STATE_FILE
  $ECHO "DEPLOY_DOMAINS_DIR=$DEPLOY_DOMAINS_DIR" >> $PS_STATE_FILE
  $ECHO "WEBLOGIC_CONFIG_DIR=$WEBLOGIC_CONFIG_DIR" >> $PS_STATE_FILE
  $ECHO "DEPLOY_JDK_DIR=$DEPLOY_JDK_DIR" >> $PS_STATE_FILE
  $ECHO "DEPLOY_VIRTUAL_HOST=$DEPLOY_VIRTUAL_HOST" >> $PS_STATE_FILE
  $ECHO "DEPLOY_NODE=$DEPLOY_NODE" >> $PS_STATE_FILE
  $ECHO "DEPLOY_CELL=$DEPLOY_CELL" >> $PS_STATE_FILE
  $ECHO "DEPLOY_DOMAIN=$DEPLOY_DOMAIN" >> $PS_STATE_FILE
  $ECHO "DEPLOY_INSTANCE=$DEPLOY_INSTANCE" >> $PS_STATE_FILE
  $ECHO "DEPLOY_INSTANCE_DIR=$DEPLOY_INSTANCE_DIR" >> $PS_STATE_FILE
  $ECHO "DEPLOY_DOCROOT=$DEPLOY_DOCROOT" >> $PS_STATE_FILE
  $ECHO "DEPLOY_ADMIN=$DEPLOY_ADMIN" >> $PS_STATE_FILE
  $ECHO "DEPLOY_ADMIN_PROTOCOL=$DEPLOY_ADMIN_PROTOCOL" >> $PS_STATE_FILE
  $ECHO "DEPLOY_ADMIN_HOST=$DEPLOY_ADMIN_HOST" >> $PS_STATE_FILE
  $ECHO "DEPLOY_ADMIN_PORT=$DEPLOY_ADMIN_PORT" >> $PS_STATE_FILE
  $ECHO "DEPLOY_URI=$DEPLOY_URI" >> $PS_STATE_FILE
  $ECHO "LOAD_BALANCER_URL=$LOAD_BALANCER_URL" >> $PS_STATE_FILE
  $ECHO "DEPLOY_NOW=$DEPLOY_NOW" >> $PS_STATE_FILE
  $ECHO "DS_HOST=$DS_HOST" >> $PS_STATE_FILE
  $ECHO "DS_PORT=$DS_PORT" >> $PS_STATE_FILE
  $ECHO "DS_DIRMGR_DN=$DS_DIRMGR_DN" >> $PS_STATE_FILE
  $ECHO "IDSAME_BASEDIR=$IDSAME_BASEDIR" >> $PS_STATE_FILE
  $ECHO "IDSAME_AMSERVER=$IDSAME_AMSERVER" >> $PS_STATE_FILE
  $ECHO "IDSAME_AMCONSOLE=$IDSAME_AMCONSOLE" >> $PS_STATE_FILE
  $ECHO "BASEDIR=$BASEDIR" >> $PS_STATE_FILE
  $ECHO "SERVER_PROTOCOL=$SERVER_PROTOCOL" >> $PS_STATE_FILE
  $ECHO "SERVER_HOST=$SERVER_HOST" >> $PS_STATE_FILE
  $ECHO "SERVER_PORT=$SERVER_PORT" >> $PS_STATE_FILE
  $ECHO "PS_PROTOCOL=$PS_PROTOCOL" >> $PS_STATE_FILE
  $ECHO "PS_HOST=$PS_HOST" >> $PS_STATE_FILE
  $ECHO "PS_PORT=$PS_PORT" >> $PS_STATE_FILE

fi  

}

################################################################################
# Create SRA state file.
################################################################################

CreateSRAStateFile() {

if [ "$CONFIGURATION_MODE" = "configure" ]; then
	
  $ECHO "GW_PORT=$GW_PORT" > $SRA_STATE_FILE
  $ECHO "DEPLOY_NOW=y" >> $SRA_STATE_FILE
  $ECHO "SRA_GATEWAY_PROFILE=$SRA_GATEWAY_PROFILE" >> $SRA_STATE_FILE
  $ECHO "USE_WEBPROXY=n" >> $SRA_STATE_FILE
  $ECHO "GW_PROTOCOL=$GW_PROTOCOL" >> $SRA_STATE_FILE
  $ECHO "SERVER_DOMAIN=$SERVER_DOMAIN" >> $SRA_STATE_FILE
  $ECHO "GW_DOMAIN=$GW_DOMAIN" >> $SRA_STATE_FILE
  $ECHO "ASSIGN_SERVICE=y" >> $SRA_STATE_FILE

fi

}

################################################################################
# Get the SARCore configuration parameters from statefile.
################################################################################

GetSRAConfigInfoFromStatefile() {

  GrabConfig $PS_SILENT_FILE "SRA_GW_PORT" "="
  GW_PORT=$ANSWER

  GrabConfig $PS_SILENT_FILE "SRA_GATEWAY_PROFILE" "="
  SRA_GATEWAY_PROFILE=$ANSWER

  GrabConfig $PS_SILENT_FILE "SRA_GW_PROTOCOL" "="
  GW_PROTOCOL=$ANSWER

  GrabConfig $PS_SILENT_FILE "SRA_SERVER_DOMAIN" "="
  SERVER_DOMAIN=$ANSWER

  GrabConfig $PS_SILENT_FILE "SRA_GW_DOMAIN" "="
  GW_DOMAIN=$ANSWER

  GrabConfig $PS_SILENT_FILE "SRA_IDSAME_ADMIN_PASSWORD" "="
  IDSAME_ADMIN_PASSWORD=$ANSWER
  export IDSAME_ADMIN_PASSWORD

  GrabConfig $PS_SILENT_FILE "SRA_IDSAME_LDAPUSER_PASSWORD" "="
  IDSAME_LDAPUSER_PASSWORD=$ANSWER
  export IDSAME_LDAPUSER_PASSWORD

  GrabConfig $PS_SILENT_FILE "SRA_DS_DIRMGR_DN" "="
  DS_DIRMGR_DN=$ANSWER
  export DS_DIRMGR_DN


  GrabConfig $PS_SILENT_FILE "SRA_DS_DIRMGR_PASSWORD" "="
  DS_DIRMGR_PASSWORD=$ANSWER
  export DS_DIRMGR_PASSWORD

  GrabConfig $PS_SILENT_FILE "SRA_DEPLOY_ADMIN_PASSWORD" "="
  DEPLOY_ADMIN_PASSWORD=$ANSWER
  if [ "$DEPLOY_ADMIN_PASSWORD" = "" ]; then
    DEPLOY_ADMIN_PASSWORD="not_set"
  fi
  export DEPLOY_ADMIN_PASSWORD

  GrabConfig $PS_SILENT_FILE "SRA_LOG_USER_PASSWORD" "="
  SRA_LOG_USER_PASSWORD=$ANSWER
  export SRA_LOG_USER_PASSWORD

}

#################################################################################################################
# This function will be used to get web-container adminstrator details only when doing SRA config/unconfig alone.
#################################################################################################################

GetSRAWebContainerDetails() {

      GrabConfig $PS_STATE_FILE "DEPLOY_TYPE" "="
    
      if [ "$ANSWER" = "IWS" ]; then
        DEPLOY_ADMIN_PASSWORD="not_set"
        export DEPLOY_ADMIN_PASSWORD
      elif [ "$ANSWER" = "SUNONE" ]; then
        # Deploy admin.
        Question "`$GETTEXT 'What is the Web Container administrator?'`" "a-zA-Z0-9\./_-" "admin"
        DEPLOY_ADMIN=$ANSWER

        # Application server administration password
        GetPassword "What is the Web Container administrator password?"
        DEPLOY_ADMIN_PASSWORD=$ANSWER
        export DEPLOY_ADMIN_PASSWORD
      elif [ "$ANSWER" = "SUNONE8" ]; then
        # Deploy Admin.
        DEPLOY_ADMIN="admin"
        Question "`$GETTEXT 'Who is the Web Container administrator?'`" "a-zA-Z0-9\./_-" "$DEPLOY_ADMIN"
        DEPLOY_ADMIN=$ANSWER

        # Application server administration password
        GetPassword "What is the Web Container administrator password?"
        DEPLOY_ADMIN_PASSWORD=$ANSWER
        export DEPLOY_ADMIN_PASSWORD
      elif [ "$ANSWER" = "WEBLOGIC" ]; then
        # Deploy admin.
        DEPLOY_ADMIN="weblogic"
        Question "`$GETTEXT 'What is the Web Container administrator?'`" "a-zA-Z0-9\./_-" "$DEPLOY_ADMIN"
        DEPLOY_ADMIN=$ANSWER

        # Application server administration password
        GetPassword "What is the Web Container administrator password?"
       DEPLOY_ADMIN_PASSWORD=$ANSWER
        export DEPLOY_ADMIN_PASSWORD
        $ECHO ""
      elif [ "$ANSWER" = "WEBSPHERE" ]; then
        DEPLOY_ADMIN_PASSWORD="not_set"
        export DEPLOY_ADMIN_PASSWORD
      fi

}


################################################################################
# Get the configuration information for SRACore and create SRAConfig.properies
################################################################################

GetSRAConfigInfo() {

  # Load the inputs from statefile if specified.
  if [ "$PS_SILENT_FILE" != "" ]; then
    GetSRAConfigInfoFromStatefile
    CreateSRAStateFile
    return
  fi
  if [ "$CONFIGURATION_MODE" = "configure" ]; then
    $ECHO ""
    $ECHO "`$GETTEXT 'Please provide the following Secure Remote Access Core configuration informations'`"
    $ECHO ""

    # Gateway protocol.
    GW_PROTOCOL="https"
    Question "`$GETTEXT 'What is the Gateway protocol?'`" "a-zA-Z" $GW_PROTOCOL
    GW_PROTOCOL=$ANSWER

    # Server domain.
    SERVER_DOMAIN="`$DOMAINNAME`"
    Question "`$GETTEXT 'What is the Portal Server domain?'`" "a-zA-Z0-9\./_-" $SERVER_DOMAIN
    SERVER_DOMAIN=$ANSWER
  
    # Gateway domain.
    GW_DOMAIN="$SERVER_DOMAIN"
    Question "`$GETTEXT 'What is the Gateway domain?'`" "a-zA-Z0-9\./_-" $GW_DOMAIN
    GW_DOMAIN=$ANSWER

    # Gateway port.
    GW_PORT="443"
    Question "`$GETTEXT 'What is the Gateway port?'`" "0-9" $GW_PORT
    GW_PORT=$ANSWER

    # Gateway profile.
    SRA_GATEWAY_PROFILE="default"
    Question "`$GETTEXT 'What is the Gateway profile?'`" "a-zA-Z0-9\./_-" $SRA_GATEWAY_PROFILE
    SRA_GATEWAY_PROFILE=$ANSWER

    # Gateway logging user password.
    GetPassword "`$GETTEXT 'What is the Gateway logging user password?'`"
    SRA_LOG_USER_PASSWORD=$ANSWER
    export SRA_LOG_USER_PASSWORD
    $ECHO ""

    # Get the passwords.
    if [ "$IDSAME_ADMIN_PASSWORD" = "" ]; then
      GetCommonPasswords
      $ECHO ""
    fi
    
   if [ -z "${DEPLOY_ADMIN_PASSWORD}" ]; then

      #Get the web-container administrator details
      $ECHO ""
      GetSRAWebContainerDetails
      $ECHO ""
   fi

    # Create PS state file.
    CreateSRAStateFile
  fi

  if [ "$CONFIGURATION_MODE" != "configure" ]; then
    # Get the passwords.
    $ECHO ""
    GetCommonPasswords
    $ECHO ""

   if [ -z "${DEPLOY_ADMIN_PASSWORD}" ]; then

      #Get the web-container administrator details
      $ECHO ""
      GetSRAWebContainerDetails
      $ECHO ""
   fi

  fi
}

################################################################################
# Create Gateway state file.
################################################################################

CreateGWStateFile() {

if [ "$CONFIGURATION_MODE" = "configure" ]; then
	
  $ECHO "GW_BASEDIR=$GW_BASEDIR" > $GW_STATE_FILE
  $ECHO "GW_PROTOCOL=$GW_PROTOCOL" >> $GW_STATE_FILE
  $ECHO "GW_HOST=$GW_HOST" >> $GW_STATE_FILE
  $ECHO "GW_PORT=$GW_PORT" >> $GW_STATE_FILE
  $ECHO "GW_IP=$GW_IP" >> $GW_STATE_FILE
  $ECHO "GW_GATEWAY_PROFILE=$GW_GATEWAY_PROFILE" >> $GW_STATE_FILE
  $ECHO "LOAD_BALANCER_URL=$LOAD_BALANCER_URL" >> $GW_STATE_FILE
  $ECHO "DEPLOY_URI=/portal" >> $GW_STATE_FILE
  $ECHO "CREATE_IS_INSTANCE=y" >> $GW_STATE_FILE
  $ECHO "IDSAME_AMSERVER=$IDSAME_AMSERVER" >> $GW_STATE_FILE
  $ECHO "IDSAME_ORG_DN=$IDSAME_ORG_DN" >> $GW_STATE_FILE
  $ECHO "IDSAME_BASEDIR=$IDSAME_BASEDIR" >> $GW_STATE_FILE
  $ECHO "SERVER_PROTOCOL=$SERVER_PROTOCOL" >> $GW_STATE_FILE
  $ECHO "IDSAME_PASSWORD_KEY=$IDSAME_PASSWORD_KEY" >> $GW_STATE_FILE
  $ECHO "SERVER_PORT=$SERVER_PORT" >> $GW_STATE_FILE
  $ECHO "SERVER_HOST=$SERVER_HOST" >> $GW_STATE_FILE
  $ECHO "SELF_SIGNED_CERT=y" >> $GW_STATE_FILE
  $ECHO "CERT_INFO=$CERT_INFO" >> $GW_STATE_FILE
  $ECHO "START_GATEWAY=n" >> $GW_STATE_FILE

fi

}

################################################################################
# Create Netlet Proxy state file.
################################################################################

CreateNLPStateFile() {
	
if [ "$CONFIGURATION_MODE" = "configure" ]; then

  $ECHO "NLP_BASEDIR=$NLP_BASEDIR" > $NLP_STATE_FILE
  $ECHO "NLP_PROTOCOL=$NLP_PROTOCOL" >> $NLP_STATE_FILE
  $ECHO "NLP_HOST=$NLP_HOST" >> $NLP_STATE_FILE
  $ECHO "NLP_PORT=$NLP_PORT" >> $NLP_STATE_FILE
  $ECHO "NLP_IP=$NLP_IP" >> $NLP_STATE_FILE
  $ECHO "NLP_GATEWAY_PROFILE=$NLP_GATEWAY_PROFILE" >> $NLP_STATE_FILE
  $ECHO "LOAD_BALANCER_URL=$LOAD_BALANCER_URL" >> $NLP_STATE_FILE
  $ECHO "DEPLOY_URI=/portal" >> $NLP_STATE_FILE
  $ECHO "CREATE_IS_INSTANCE=y" >> $NLP_STATE_FILE
  $ECHO "IDSAME_AMSERVER=$IDSAME_AMSERVER" >> $NLP_STATE_FILE
  $ECHO "IDSAME_ORG_DN=$IDSAME_ORG_DN" >> $NLP_STATE_FILE
  $ECHO "IDSAME_BASEDIR=$IDSAME_BASEDIR" >> $NLP_STATE_FILE
  $ECHO "SERVER_PROTOCOL=$SERVER_PROTOCOL" >> $NLP_STATE_FILE
  $ECHO "IDSAME_PASSWORD_KEY=$IDSAME_PASSWORD_KEY" >> $NLP_STATE_FILE
  $ECHO "SERVER_PORT=$SERVER_PORT" >> $NLP_STATE_FILE
  $ECHO "SERVER_HOST=$SERVER_HOST" >> $NLP_STATE_FILE
  $ECHO "SELF_SIGNED_CERT=y" >> $NLP_STATE_FILE
  $ECHO "CERT_INFO=$CERT_INFO" >> $NLP_STATE_FILE
  $ECHO "START_NETLETPROXY=n" >> $NLP_STATE_FILE

fi

}
################################################################################
# Create Rewriter Proxy state file.
################################################################################

CreateRWPStateFile() {
	
if [ "$CONFIGURATION_MODE" = "configure" ]; then
	
  $ECHO "RWP_BASEDIR=$RWP_BASEDIR" > $RWP_STATE_FILE
  $ECHO "RWP_PROTOCOL=$RWP_PROTOCOL" >> $RWP_STATE_FILE
  $ECHO "RWP_HOST=$RWP_HOST" >> $RWP_STATE_FILE
  $ECHO "RWP_PORT=$RWP_PORT" >> $RWP_STATE_FILE
  $ECHO "RWP_IP=$RWP_IP" >> $RWP_STATE_FILE
  $ECHO "RWP_GATEWAY_PROFILE=$RWP_GATEWAY_PROFILE" >> $RWP_STATE_FILE
  $ECHO "LOAD_BALANCER_URL=$LOAD_BALANCER_URL" >> $RWP_STATE_FILE
  $ECHO "DEPLOY_URI=/portal" >> $RWP_STATE_FILE
  $ECHO "CREATE_IS_INSTANCE=y" >> $RWP_STATE_FILE
  $ECHO "IDSAME_AMSERVER=$IDSAME_AMSERVER" >> $RWP_STATE_FILE
  $ECHO "IDSAME_ORG_DN=$IDSAME_ORG_DN" >> $RWP_STATE_FILE
  $ECHO "IDSAME_BASEDIR=$IDSAME_BASEDIR" >> $RWP_STATE_FILE
  $ECHO "SERVER_PROTOCOL=$SERVER_PROTOCOL" >> $RWP_STATE_FILE
  $ECHO "IDSAME_PASSWORD_KEY=$IDSAME_PASSWORD_KEY" >> $RWP_STATE_FILE
  $ECHO "SERVER_PORT=$SERVER_PORT" >> $RWP_STATE_FILE
  $ECHO "SERVER_HOST=$SERVER_HOST" >> $RWP_STATE_FILE
  $ECHO "SELF_SIGNED_CERT=y" >> $RWP_STATE_FILE
  $ECHO "CERT_INFO=$CERT_INFO" >> $RWP_STATE_FILE
  $ECHO "START_REWRITERPROXY=n" >> $RWP_STATE_FILE

fi

}


################################################################
# Get the certificate information needed for GW/NLP/RWP
################################################################

GetCertInfo() {

    ORG=""
    DIV=""
    CITY=""
    STATE=""

    PROMPT="`$GETTEXT 'Please provide the following informations needed for creating self-signed certificate:'`"	
    $ECHO ""
    $ECHO "${PROMPT}"
    SELF_SIGNED_CERT="y"

    if [ "$SELF_SIGNED_CERT" = "y" ]; then
        Question "`$GETTEXT 'What is the name of your organization?'`" "a-zA-Z0-9\ ._-," "MyOrganization"
        ORG="$ANSWER"

        Question "`$GETTEXT 'What is the name of your division?'`" "a-zA-Z0-9\ ._-," "MyDivision"
        DIV="$ANSWER"

        Question "`$GETTEXT 'What is the name of your city or locality?'`" "a-zA-Z\ ._-," "MyCity"
        CITY="$ANSWER"

        Question "`$GETTEXT 'What is the name of your state or province?'`" "a-zA-Z\ ._-," "MyState"
        STATE="$ANSWER"

        Question "`$GETTEXT 'What is the two-letter country code?'`" "a-zA-Z" "us"
        COUNTRY=`$ECHO "$ANSWER" | $AWK '{print(substr($0,0,2));}'`

        CERT_INFO="CN=$GW_HOST,L=\"$CITY\",ST=\"$STATE\",C=$COUNTRY,O=\"$DIV\",OU=\"$ORG\""

        GetPassword "`$GETTEXT 'What is the password for the Certificate Database?'`"
        CERT_DB_PASSWORD=$ANSWER
	export CERT_DB_PASSWORD
	
        $ECHO ""
    fi

}

################################################################################
# Get the Gateway configuration parameters from statefile.
################################################################################

GetGWConfigInfoFromStatefile() {

  GrabConfig $PS_SILENT_FILE "GW_PROTOCOL" "="
  GW_PROTOCOL=$ANSWER

  GrabConfig $PS_SILENT_FILE "GW_HOST" "="
  GW_HOST=$ANSWER

  GrabConfig $PS_SILENT_FILE "GW_PORT" "="
  GW_PORT=$ANSWER

  GrabConfig $PS_SILENT_FILE "GW_IP" "="
  GW_IP=$ANSWER

  GrabConfig $PS_SILENT_FILE "GW_GATEWAY_PROFILE" "="
  GW_GATEWAY_PROFILE=$ANSWER

  GrabConfig $PS_SILENT_FILE "GW_LOAD_BALANCER_URL" "="
  LOAD_BALANCER_URL=$ANSWER
  DEPLOY_URI="/`$BASENAME $LOAD_BALANCER_URL`"

  GrabConfig $PS_SILENT_FILE "GW_CERT_INFO" "="
  CERT_INFO=$ANSWER

  GrabConfig $PS_SILENT_FILE "GW_SRA_LOG_USER_PASSWORD" "="
  SRA_LOG_USER_PASSWORD=$ANSWER
  export SRA_LOG_USER_PASSWORD

  GrabConfig $PS_SILENT_FILE "GW_CERT_DB_PASSWORD" "="
  CERT_DB_PASSWORD=$ANSWER
  export CERT_DB_PASSWORD

}

################################################################################
# Get the configuration information for Gateway and create GWConfig.properies
################################################################################

GetGWConfigInfo() {

  # Get Gateway basedirectory.
  GetGWBaseDir

  # Load the identity server information from AMConfig.properties file.
  LoadISInfo

  # Load the inputs from statefile if specified.
  if [ "$PS_SILENT_FILE" != "" ]; then
    GetGWConfigInfoFromStatefile
    CreateGWStateFile
    return
  fi

  if [ "$CONFIGURATION_MODE" = "configure" ]; then
    # Get gateway installation informations
    $ECHO ""
    $ECHO "`$GETTEXT 'Please provide the following Gateway configuration informations'`"
    $ECHO ""

    # Gateway protocol.
    GW_PROTOCOL="https"
    Question "`$GETTEXT 'What is the Gateway protocol?'`" "a-zA-Z" $GW_PROTOCOL
    GW_PROTOCOL=$ANSWER

    # Gateway host.
    GW_HOST="`$HOSTNAME`.`$DOMAINNAME`"
    Question "`$GETTEXT 'What is the Gateway host?'`" "a-zA-Z0-9\./_-" $GW_HOST
    GW_HOST=$ANSWER

    # Gateway port.
    GW_PORT="443"
    Question "`$GETTEXT 'What is the Gateway port?'`" "0-9" $GW_PORT
    GW_PORT=$ANSWER

    # Gateway IP.
    QuestionWithoutDefault "`$GETTEXT 'What is the Gateway IP Address?'`" "0-9."
    GW_IP=$ANSWER

    # Gateway profile.
    GW_GATEWAY_PROFILE="default"
    Question "`$GETTEXT 'What is the Gateway profile?'`" "a-zA-Z0-9\./_-" $GW_GATEWAY_PROFILE
    GW_GATEWAY_PROFILE=$ANSWER

    # Gateway logging user password.
    GetPassword "`$GETTEXT 'What is the Gateway logging user password?'`"
    SRA_LOG_USER_PASSWORD=$ANSWER
    export SRA_LOG_USER_PASSWORD
    $ECHO ""

    #Get Portal Server URL Info
    GetPSURLInfo

    # Portalserver load balancer URL
    LOAD_BALANCER_URL="$PS_PROTOCOL://$PS_HOST:$PS_PORT$DEPLOY_URI"
    Question "`$GETTEXT 'What is the Portal Server Load Balancer URL?'`" ":a-zA-Z0-9\./_-" "$LOAD_BALANCER_URL"
    LOAD_BALANCER_URL=$ANSWER

    # Get the cerificate information.
    GetCertInfo

    # Create gateway state file.
    CreateGWStateFile
  fi

  if [ "$CONFIGURATION_MODE" != "configure" ]; then
    # Get the passwords.
    $ECHO ""
    GetCommonPasswords
    $ECHO ""
  fi
}

################################################################################
# Get the NetletProxy configuration parameters from statefile.
################################################################################

GetNLPConfigInfoFromStatefile() {

  GrabConfig $PS_SILENT_FILE "NLP_PROTOCOL" "="
  NLP_PROTOCOL=$ANSWER

  GrabConfig $PS_SILENT_FILE "NLP_HOST" "="
  NLP_HOST=$ANSWER

  GrabConfig $PS_SILENT_FILE "NLP_PORT" "="
  NLP_PORT=$ANSWER

  GrabConfig $PS_SILENT_FILE "NLP_IP" "="
  NLP_IP=$ANSWER

  GrabConfig $PS_SILENT_FILE "NLP_GATEWAY_PROFILE" "="
  NLP_GATEWAY_PROFILE=$ANSWER

  GrabConfig $PS_SILENT_FILE "NLP_LOAD_BALANCER_URL" "="
  LOAD_BALANCER_URL=$ANSWER
  DEPLOY_URI="/`$BASENAME $LOAD_BALANCER_URL`"

  GrabConfig $PS_SILENT_FILE "NLP_CERT_INFO" "="
  CERT_INFO=$ANSWER

  GrabConfig $PS_SILENT_FILE "NLP_SRA_LOG_USER_PASSWORD" "="
  SRA_LOG_USER_PASSWORD=$ANSWER
  export SRA_LOG_USER_PASSWORD

  GrabConfig $PS_SILENT_FILE "NLP_CERT_DB_PASSWORD" "="
  CERT_DB_PASSWORD=$ANSWER
  export CERT_DB_PASSWORD

}

################################################################################
# Get the configuration information for NetletProxy and create RWPConfig.properies
################################################################################

GetNLPConfigInfo() {

  # Get NetletProxy basedirectory.
  GetNLPBaseDir

  # Load the identity server information from AMConfig.properties file.
  LoadISInfo

  # Load the inputs from statefile if specified.
  if [ "$PS_SILENT_FILE" != "" ]; then
    GetNLPConfigInfoFromStatefile
    CreateNLPStateFile
    return
  fi
  
  if [ "$CONFIGURATION_MODE" = "configure" ]; then
    # Get NetletProxy installation informations
    $ECHO ""
    $ECHO "`$GETTEXT 'Please provide the following Netlet Proxy configuration informations'`"
    $ECHO ""

    # NetletProxy protocol.
    NLP_PROTOCOL="https"
    Question "`$GETTEXT 'What is the Netlet Proxy protocol?'`" "a-zA-Z" $NLP_PROTOCOL
    NLP_PROTOCOL=$ANSWER

    # Netlet Proxy host.
    NLP_HOST="`$HOSTNAME`.`$DOMAINNAME`"
    Question "`$GETTEXT 'What is the Netlet Proxy host?'`" "a-zA-Z0-9\./_-" $NLP_HOST
    NLP_HOST=$ANSWER

    # Netlet Proxy port.
    NLP_PORT="10555"
    Question "`$GETTEXT 'What is the Netlet Proxy port?'`" "0-9" $NLP_PORT
    NLP_PORT=$ANSWER

    # Netlet Proxy IP.
    QuestionWithoutDefault "`$GETTEXT 'What is the Netlet Proxy IP Address?'`" "0-9."
    NLP_IP=$ANSWER

    # Netlet Proxy profile.
    NLP_GATEWAY_PROFILE="default"
    Question "`$GETTEXT 'What is the Gateway profile?'`" "a-zA-Z0-9\./_-" $NLP_GATEWAY_PROFILE
    NLP_GATEWAY_PROFILE=$ANSWER

    # Netlet Proxy logging user password.
    GetPassword "`$GETTEXT 'What is the Gateway logging user password?'`"
    SRA_LOG_USER_PASSWORD=$ANSWER
    export SRA_LOG_USER_PASSWORD
    $ECHO ""

    #Get Portal Server URL Info
    GetPSURLInfo

    # Portalserver load balancer URL
    LOAD_BALANCER_URL="$PS_PROTOCOL://$PS_HOST:$PS_PORT$DEPLOY_URI"
    Question "`$GETTEXT 'What is the Portal Server Load Balancer URL?'`" ":a-zA-Z0-9\./_-" "$LOAD_BALANCER_URL"
    LOAD_BALANCER_URL=$ANSWER

    # Get the cerificate information.
    GetCertInfo

    # Create Netlet Proxy state file.
    CreateNLPStateFile
  fi

  if [ "$CONFIGURATION_MODE" != "configure" ]; then
    # Get the passwords.
    $ECHO ""
    GetCommonPasswords
    $ECHO ""
  fi
}

################################################################################
# Get the Rewriter Proxy configuration parameters from statefile.
################################################################################

GetRWPConfigInfoFromStatefile() {

  GrabConfig $PS_SILENT_FILE "RWP_PROTOCOL" "="
  RWP_PROTOCOL=$ANSWER

  GrabConfig $PS_SILENT_FILE "RWP_HOST" "="
  RWP_HOST=$ANSWER

  GrabConfig $PS_SILENT_FILE "RWP_PORT" "="
  RWP_PORT=$ANSWER

  GrabConfig $PS_SILENT_FILE "RWP_IP" "="
  RWP_IP=$ANSWER

  GrabConfig $PS_SILENT_FILE "RWP_GATEWAY_PROFILE" "="
  RWP_GATEWAY_PROFILE=$ANSWER

  GrabConfig $PS_SILENT_FILE "RWP_LOAD_BALANCER_URL" "="
  LOAD_BALANCER_URL=$ANSWER
  DEPLOY_URI="/`$BASENAME $LOAD_BALANCER_URL`"

  GrabConfig $PS_SILENT_FILE "RWP_CERT_INFO" "="
  CERT_INFO=$ANSWER

  GrabConfig $PS_SILENT_FILE "RWP_SRA_LOG_USER_PASSWORD" "="
  SRA_LOG_USER_PASSWORD=$ANSWER
  export SRA_LOG_USER_PASSWORD

  GrabConfig $PS_SILENT_FILE "RWP_CERT_DB_PASSWORD" "="
  CERT_DB_PASSWORD=$ANSWER
  export CERT_DB_PASSWORD

}

################################################################################
# Get the configuration information for RewriterProxy and create RWPConfig.properies
################################################################################

GetRWPConfigInfo() {

  # Get RewriterProxy basedirectory.
  GetRWPBaseDir

  # Load the identity server information from AMConfig.properties file.
  LoadISInfo

  # Load the inputs from statefile if specified.
  if [ "$PS_SILENT_FILE" != "" ]; then
    GetRWPConfigInfoFromStatefile
    CreateRWPStateFile
    return
  fi
  if [ "$CONFIGURATION_MODE" = "configure" ]; then
    # Get RewriterProxy installation informations
    $ECHO ""
    $ECHO "`$GETTEXT 'Please provide the following Rewriter Proxy configuration informations'`"
    $ECHO ""

    # RewriterProxy protocol.
    RWP_PROTOCOL="https"
    Question "`$GETTEXT 'What is the Rewriter Proxy protocol?'`" "a-zA-Z" $RWP_PROTOCOL
    RWP_PROTOCOL=$ANSWER

    # Rewriter Proxy host.
    RWP_HOST="`$HOSTNAME`.`$DOMAINNAME`"
    Question "`$GETTEXT 'What is the Rewriter Proxy host?'`" "a-zA-Z0-9\./_-" $RWP_HOST
    RWP_HOST=$ANSWER

    # Rewriter Proxy port.
    RWP_PORT="10443"
    Question "`$GETTEXT 'What is the Rewriter Proxy port?'`" "0-9" $RWP_PORT
    RWP_PORT=$ANSWER

    # Rewriter Proxy IP.
    QuestionWithoutDefault "`$GETTEXT 'What is the Rewriter Proxy IP Address?'`" "0-9."
    RWP_IP=$ANSWER

    # Rewriter Proxy profile.
    RWP_GATEWAY_PROFILE="default"
    Question "`$GETTEXT 'What is the Gateway profile?'`" "a-zA-Z0-9\./_-" $RWP_GATEWAY_PROFILE
    RWP_GATEWAY_PROFILE=$ANSWER

    # Rewriter Proxy logging user password.
    GetPassword "`$GETTEXT 'What is the Gateway logging user password?'`"
    SRA_LOG_USER_PASSWORD=$ANSWER
    export SRA_LOG_USER_PASSWORD
    $ECHO ""

    #Get Portal Server URL Info
    GetPSURLInfo

    # Portalserver load balancer URL
    LOAD_BALANCER_URL="$PS_PROTOCOL://$PS_HOST:$PS_PORT$DEPLOY_URI"
    Question "`$GETTEXT 'What is the Portal Server Load Balancer URL?'`" ":a-zA-Z0-9\./_-" "$LOAD_BALANCER_URL"
    LOAD_BALANCER_URL=$ANSWER

    # Get the cerificate information.
    GetCertInfo

    # Create Rewriter Proxy state file.
    CreateRWPStateFile
  fi

  if [ "$CONFIGURATION_MODE" != "configure" ]; then
    # Get the passwords.
    $ECHO ""
    GetCommonPasswords
    $ECHO ""
  fi
}

################################################################################
# Get the configuration information for the Installed component
################################################################################

GetConfigInfo() {

  # Clear the screen
  # $CLEAR
  

  COMPONENT=$1
  if [ "$COMPONENT" = "PS" ]; then
    GetPSConfigInfo
  elif [ "$COMPONENT" = "SRA" ]; then
    GetSRAConfigInfo
  elif [ "$COMPONENT" = "GW" ]; then
    GetGWConfigInfo
  elif [ "$COMPONENT" = "NLP" ]; then
    GetNLPConfigInfo
  elif [ "$COMPONENT" = "RWP" ]; then
    GetRWPConfigInfo
  fi

}
