#!/bin/ksh
# Copyright 2005 Sun Microsystems, Inc., All Rights Reserved.
#
# @(#)update_Portlet	1.24 05/10/13
#
# This software is the confidential and proprietary information of Sun
# Microsystems, Inc. ("Confidential Information"). You shall not
# disclose such Confidential Information and shall use it only in
# accordance with the terms of the license agreement you entered into
# with Sun.
#
# SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
# THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
# TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
# ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
# DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
#

###############################################
# Defines
###############################################

AWK=/usr/bin/awk
CAT=/usr/bin/cat
CP=/usr/bin/cp
ECHO=/usr/bin/echo
GREP=/usr/bin/grep
ID=/usr/bin/id
LN=/usr/bin/ln
MV=/usr/bin/mv
NAWK=/usr/bin/nawk
RM=/usr/bin/rm
SED=/usr/bin/sed
UNIQ=/usr/bin/uniq

exitStatus=0;
ESM_BASE="`pkginfo -r SUNWesmportal`"
BASE_DIR="${ESM_BASE}/SUNWesmportal"
WEB_BASEDIR="`pkginfo -r SUNWwbsvr`"
BELL_CHAR='\a'
PS_FILE="PSConfig.properties"
STATE_FILE="/etc`pkginfo -r SUNWps`/SUNWps/${PS_FILE}"

###############################################
# Get configuration from file
###############################################
GrabConfig() {
  local FILE=$1
  local KEY=$2
  local SEPARATOR=$3

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

###############################################
# Main
###############################################
PORTLET="$1"

# Need get_password () from esmlib.sh
. ${BASE_DIR}/esmlib.sh

#
# Must be root to perform these functions
#
if [ `$ID | $AWK '{print $1}'` != "uid=0(root)" ]; then
  $ECHO
  $ECHO "You must be root user. $BELL_CHAR"
  $ECHO
  exit 1
fi

#
# Verify portlet exists
#
if [ ! -f "${BASE_DIR}/warfiles/${PORTLET}.war" ]; then
  $ECHO
  $ECHO "Usage: update_EsmPortlet portletNameMinus.war. $BELL_CHAR"
  $ECHO
  exit 1
fi

#
# Need amAdmin password to perform these functions
#
$ECHO "Must supply amAdmin password. $BELL_CHAR"
get_password

#
# Need portal server config properties to perform these functions
#
if [ ! -f $STATE_FILE ]; then
  $ECHO
  $ECHO "Error: $STATE_FILE does not exist. $BELL_CHAR"
  $ECHO
  exit 1
fi

#
# Need portal server config properties to perform these functions
#
GrabConfig $STATE_FILE "IDSAME_BASEDIR" "="
if [ "$ANSWER" != "" ]; then
  IDSAME_BASEDIR=$ANSWER
else
  $ECHO
  $ECHO "Error: Cannot determine IDSAME_BASEDIR. $BELL_CHAR"
  $ECHO
  exit 1
fi

#
# Need portal server config properties to perform these functions
#
GrabConfig $STATE_FILE "BASEDIR" "="
if [ "$ANSWER" != "" ]; then
  PS_BASEDIR=$ANSWER
else
  $ECHO
  $ECHO "Error: Cannot determine BASEDIR. $BELL_CHAR"
  $ECHO
  exit 1
fi

#
# Need portal server config properties to perform these functions
#
GrabConfig $STATE_FILE "DEPLOY_INSTANCE" "="
if [ "$ANSWER" != "" ]; then
  DEPLOY_INSTANCE=$ANSWER
else
  $ECHO
  $ECHO "Error: Cannot determine DEPLOY_INSTANCE. $BELL_CHAR"
  $ECHO
  exit 2
fi

FILE="$IDSAME_BASEDIR/SUNWam/lib/AMConfig.properties"
ADMIN_DN=`$GREP "^com.sun.identity.authentication.super.user=" $FILE | $SED -e "s/com.sun.identity.authentication.super.user=//"`
ROOT_DN=`$GREP "^com.iplanet.am.rootsuffix=" $FILE | $SED -e "s/com.iplanet.am.rootsuffix=//"`
ORG_DN=`$GREP "^com.iplanet.am.defaultOrg=" $FILE | $SED -e "s/com.iplanet.am.defaultOrg=//"`
HOST=`$GREP "^com.iplanet.am.directory.host=" $FILE | $SED -e "s/com.iplanet.am.directory.host=//"`
if [ "$ORG_DN" != "$ROOT_DN" ]; then
  ORG_DN="$ORG_DN,$ROOT_DN"
fi
SERVER_ADMIN="${WEB_BASEDIR}/https-admserv/config/magnus.conf"
SERVER_USER="${WEB_BASEDIR}/https-${DEPLOY_INSTANCE}/config/magnus.conf"

#
#DEBUG
#
#$ECHO
#$ECHO "STATE_FILE:\t${STATE_FILE}"
#$ECHO "JDK_DIR:\t${JDK_DIR}"
#$ECHO "IDSAME_BASEDIR:\t${IDSAME_BASEDIR}"
#$ECHO "PS_BASEDIR:\t${PS_BASEDIR}"
#$ECHO "ADMIN_DN:\t${ADMIN_DN}"
#$ECHO "ROOT_DN:\t${ROOT_DN}"
#$ECHO "ORG_DN:\t\t${ORG_DN}"
#$ECHO "HOST:\t\t${HOST}"
#$ECHO "BASE_DIR:\t\t${BASE_DI}"
#$ECHO

#
# Validate the Portal Servers are up and running and accessible
#
${BASE_DIR}/bin/checkJESRunning $password
exitStatus=$?
if [ $exitStatus != 0 ]; then
    exit $exitStatus
fi

#
# Undeploy the esm portlet
#
cd ${BASE_DIR}/warfiles
$ECHO "Undeploy ESM ${PORTLET} Portlet"
$PS_BASEDIR/SUNWps/bin/pdeploy undeploy -u "$ADMIN_DN" -w "$password" -p "$password" -g -v ${PORTLET}

#
# Deploy the base esm portlets
#
cd ${BASE_DIR}/warfiles
$ECHO "Deploy ESM ${PORTLET} Portlet"
$PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g -v ${PORTLET}.war 

#
# Change filesystems access to non root user
#
USERDIR=`grep "TempDir" ${SERVER_USER} | $AWK '{print $2}'`
ADMDIR=`grep "TempDir" ${SERVER_ADMIN} | $AWK '{print $2}'`
chown -R webservd:webservd /etc/opt/SUNWps /etc/opt/SUNWam /opt/SUNWam /opt/SUNWps /opt/SUNWwbsvr /var/opt/SUNWam /var/opt/SUNWps ${USERDIR} ${ADMDIR} >/dev/null 2>&1

#
# stop/start the portal servers
#
$ECHO
$ECHO "Restarting the portal web server"
$ECHO
${BASE_DIR}/bin/stopwebserver
${BASE_DIR}/bin/startwebserver

exit $exitStatus
