LOGDIR=/var/sadm/patch/115861-05
LOG=$LOGDIR/postpatch.log

# check for root
user=`/bin/id | /usr/bin/grep root | /usr/bin/wc -l`
if [ $user -eq 0 ]; then
	msg="You must be root to execute this script."
	echo "$msg"
        exit 1
fi

/bin/mkdir -p $LOGDIR

# setup 
ESM_BASE=`/usr/bin/pkgparam SUNWstm ESM_BASE`
if [ $? -ne 0 ]; then
    msg="Could not determine ESM location."
    echo "$msg"
    echo "$msg" >> $LOG
    exit 1
fi

SM_BASE=/usr/share/webconsole
US_BASE=/usr/sbin
SM_ETC=/etc/opt/webconsole
COMPONENT_DIR=$ESM_BASE/component/tr_mgmt/bin

# helper function to restart database (for making db changes)
start_db () {
    /usr/bin/su - $SSTR_DBOWNER -c ". $SSTR_DBBIN/postgres.env; $SSTR_DBSTART" >> $LOG 2>&1
    this_try=1
    until /usr/bin/su $SSTR_DBOWNER  -c ". $SSTR_DBBIN/postgres.env; $SSTR_PSQL -l" > /dev/null 2>&1
    do
        if [ $this_try -ge 12 ]; then
	    msg="Database still not up - giving up"
	    echo "$msg"
	    echo "$msg" >> $LOG 2>&1
            exit 1
        fi
        echo "Wait and try connecting to database again..." >> $LOG
        this_try=`/usr/bin/expr $this_try + 1`
        sleep 10
    done
}


# UI changes
# Copy the esm.war file to lockhart webconsole directory
/bin/cp $ESM_BASE/sssm/lib/esm.war $SM_BASE/esm

# should be java install for lockhart, so use its jar tool (something
# very wrong if not there)
JAVA_HOME=`/usr/bin/grep java.home $SM_ETC/webconsole | /bin/sed -e 's/java.home=//'`
JAR=$JAVA_HOME/bin/jar
if [ ! -x $JAR ] ; then
    msg="Could not find jar tool."
    echo "$msg"
    echo "$msg" >> $LOG
    exit 1
fi

# Expand the esm.war file in $SM_BASE/esm
cd $SM_BASE/esm
$JAR -xf esm.war >> $LOG 2>&1

# copy component files over there too (see tr_mgmt/bin/postinstall)
/bin/cp $ESM_BASE/sssm/util/cre/components/esm-jade.car $SM_BASE/esm/WEB-INF/lib/esm-jade.jar >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/idresolver.car $SM_BASE/esm/WEB-INF/lib/idresolver.jar >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/services-api.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/serack.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/t3.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/lib/esm-topology.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/switch.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/hds.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/hba.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/oob_util.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/esm-common.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/asset.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1
/bin/cp $ESM_BASE/sssm/util/cre/components/discovery-impl.jar $SM_BASE/esm/WEB-INF/lib >> $LOG 2>&1

# Change file permissions
cd $SM_BASE/esm
/bin/chmod -R 755 . >> $LOG 2>&1

# re-register esm app (otherwise topology page doesn't show up)
SMREG=$US_BASE/smreg
if [ -f "$SMREG" ]; then
    $SMREG add -a /usr/share/webconsole/esm >> $LOG 2>&1
fi

# make port change for 4925674 if not there
/usr/bin/grep 'port=\"8443\"' $SM_ETC/server.xml > /dev/null 2>&1
if [ $? -ne 0 ]; then
    /usr/bin/mv -f $SM_ETC/server.xml $SM_ETC/.server.xml.bak >> $LOG 2>&1
    /usr/bin/awk -f $COMPONENT_DIR/svrxmlupd.awk $SM_ETC/.server.xml.bak > $SM_ETC/server.xml
fi

# for 4935652, fix storade.conf if it already got changed
CONF_FILE=/var/opt/SUNWstm/sssm/config/storade.conf
if [ -f $CONF_FILE ]; then
    /bin/cp $CONF_FILE $CONF_FILE.bak >> $LOG 2>&1
    CHANGEFROM="ESM-standard location: cannot be edited"
    CHANGETO="EsmStandardLocation"
    /usr/bin/grep "$CHANGEFROM" $CONF_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        /bin/sed -e "s/$CHANGEFROM/$CHANGETO/g" $CONF_FILE > $CONF_FILE.tmp
        /bin/mv $CONF_FILE.tmp $CONF_FILE >> $LOG 2>&1
    fi

    CHANGEFROM="SANbox Manager"
    CHANGETO="sanboxmanager"
    /usr/bin/grep "$CHANGEFROM" $CONF_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
	/bin/sed -e "s/ASSIGNED_TO.\*=$CHANGEFROM/ASSIGNED_TO.\*=$CHANGETO/" \
		 -e "s/SAP.$CHANGEFROM=/SAP.$CHANGETO=/" \
		 -e "s/SapName=$CHANGEFROM/SapName=$CHANGETO/" \
		 $CONF_FILE > $CONF_FILE.tmp
	/bin/mv $CONF_FILE.tmp $CONF_FILE >> $LOG 2>&1
    fi

    CHANGEFROM="McData EFC Manager"
    CHANGETO="efcm"
    /usr/bin/grep "$CHANGEFROM" $CONF_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
	/bin/sed -e "s/ASSIGNED_TO.\*=$CHANGEFROM/ASSIGNED_TO.\*=$CHANGETO/" \
		 -e "s/SAP.$CHANGEFROM=/SAP.$CHANGETO=/" \
		 -e "s/SapName=$CHANGEFROM/SapName=$CHANGETO/" \
		 $CONF_FILE > $CONF_FILE.tmp
	/bin/mv $CONF_FILE.tmp $CONF_FILE >> $LOG 2>&1
    fi

    CHANGEFROM="SAP.efcm=switch.EsmStandardLocation"
    CHANGETO="SAP.efcm=switch.no.location"
    /usr/bin/grep "$CHANGEFROM" $CONF_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
	/bin/sed -e "s/$CHANGEFROM/$CHANGETO/" \
		 $CONF_FILE > $CONF_FILE.tmp
	/bin/mv $CONF_FILE.tmp $CONF_FILE >> $LOG 2>&1
    fi

    CHANGEFROM="SANSurfer"
    CHANGETO="sansurfer"
    /usr/bin/grep "$CHANGEFROM" $CONF_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
	/bin/sed -e "s/ASSIGNED_TO.\*=$CHANGEFROM/ASSIGNED_TO.\*=$CHANGETO/" \
		 -e "s/SAP.$CHANGEFROM=/SAP.$CHANGETO=/" \
		 -e "s/SapName=$CHANGEFROM/SapName=$CHANGETO/" \
		 $CONF_FILE > $CONF_FILE.tmp
	/bin/mv $CONF_FILE.tmp $CONF_FILE >> $LOG 2>&1
    fi

    # 4982372 & 4969975 changes
    CHANGEFROM="SAP.sanpilot=array"
    CHANGETO="SAP.sanpilot=switch"
    /usr/bin/grep "$CHANGEFROM" $CONF_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
	/bin/sed -e "s/$CHANGEFROM/$CHANGETO/" \
		 $CONF_FILE > $CONF_FILE.tmp
	/bin/mv $CONF_FILE.tmp $CONF_FILE >> $LOG 2>&1
    fi

    /usr/bin/grep 'SAP.storageNavigator=array.http://${IP}' $CONF_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
	/bin/sed -e "s/SAP.storageNavigator=array.http:\/\/\${IP}$/SAP.storageNavigator=array.http:\/\/\${IP}\/cgi-bin\/utility\/sjc0000.cgi/" \
		 $CONF_FILE > $CONF_FILE.tmp
	/bin/mv $CONF_FILE.tmp $CONF_FILE >> $LOG 2>&1
    fi
fi

# These are changes made by the -01 rev postpatch.  If earlier versions
# of the patch were installed before this patch, then don't make these
# changes (because they were already made by the previous versions.  If no
# old versions were installed, go ahead and make these changes.

oldpatch=0
/usr/bin/showrev -p | /usr/bin/grep "Patch: 115861" | /usr/bin/grep -v "115861-05" > /dev/null 2>&1
if [ $? -eq 0 ]; then
    oldpatch=1
fi

if [ $oldpatch -ne 1 ]; then
    echo "Making database updates..."
    # make database changes
    SSTR_HOME=$ESM_BASE/sssm
    SSTR_DBHOME=$SSTR_HOME/util/pgsql
    SSTR_DBBIN=$SSTR_DBHOME/nsm1/bin
    SSTR_DBSTART=$SSTR_DBBIN/dbstart.sh
    SSTR_DBOWNER=sstr001
    SSTR_PSQL=$SSTR_DBHOME/bin/psql
    start_db

    /usr/bin/su - $SSTR_DBOWNER -c ". $SSTR_DBBIN/postgres.env; $SSTR_PSQL -f $SSTR_DBHOME/nsm1/ddl/patchadd-01.sql" >> $LOG 2>&1
    /usr/bin/su - $SSTR_DBOWNER -c ". $SSTR_DBBIN/postgres.env; $SSTR_PSQL -f $SSTR_DBHOME/nsm1/ddl/LocalizePropsPopulate.ddl" >> $LOG 2>&1

fi



# got a new transient.xml.default for 4970744, so need to regenerate the 
# transient.xml
. $ESM_BASE/lib/configvars_lib.ksh
. $ESM_BASE/component/tr_mgmt/bin/component_lib.ksh
cl_update_rmi_registry_port >> $LOG 2>&1

# also for 4970744, need to modify any existing SunMC contracts
contractdir="$ESM_BASE/sssm/util/cre/persistence/-199aaedcddb7bb7551da756d989f6a8f"
if [ -d "$contractdir" ]; then
    for contract in `/bin/ls "$contractdir"`
    do
        /bin/grep "NotifierSpecificationType=srs" "$contractdir/$contract" > /dev/null 2>&1
        if [ $? -eq 0 ]; then
            /bin/cp "$contractdir/$contract" "$contractdir/.$contract.bak" >> $LOG 2>&1
            /bin/sed -e "s%Topics=\(.*\)%Topics=.definition.audit\\\:.definition.create\\\:.definition.delete%g" "$contractdir/.$contract.bak" > "$contractdir/$contract" 
        fi
    done
fi

# restart ESM and smicc if not running as part of esmpatch
if [ "$ESM_CONTEXT" != "patch" ]; then
    SMSERVER=$US_BASE/smcwebserver
    if [ -f "$SMSERVER" ]; then
        $SMSERVER start >> $LOG 2>&1
    fi

    $ESM_BASE/bin/esmcontrol -m start >> $LOG 2>&1
fi
