#!/bin/sh

# Copyright  2004 Sun Microsystems, Inc. All rights reserved. 
# 
# Sun Microsystems, Inc. has intellectual property rights relating to
# technology embodied in the product that is described in this document.
# In particular, and without limitation, these intellectual property rights
# may include one or more of the U.S. patents listed at
# http://www.sun.com/patents and one or more additional patents or pending
# patent applications in the U.S. and in other countries.
# 
# U.S. Government Rights - Commercial software. Government users are subject
# to the Sun Microsystems, Inc. standard license agreement and applicable
# provisions of the FAR and its supplements.
# 
# Use is subject to license terms. 
# 
# This distribution may include materials developed by third parties. Sun,
# Sun Microsystems, the Sun logo, Java and Sun[tm] ONE are trademarks or
# registered trademarks of Sun Microsystems, Inc. in the U.S. and other
# countries. 
# 
# Copyright  2004 Sun Microsystems, Inc. Tous droits rservs. Sun
# Microsystems, Inc. dtient les droits de proprit intellectuels relatifs
#  la technologie incorpore dans le produit qui est dcrit dans ce document.
# En particulier, et ce sans limitation, ces droits de proprit
# intellectuelle peuvent inclure un ou plus des brevets amricains lists
#  l'adresse http://www.sun.com/patents et un ou les brevets supplmentaires
# ou les applications de brevet en attente aux Etats - Unis et dans les
# autres pays.
# 
# L'utilisation est soumise aux termes du contrat de licence.
# 
# Cette distribution peut comprendre des composants dvelopps par des
# tierces parties.
# 
# Sun, Sun Microsystems, le logo Sun, Java et Sun[tm] ONE sont des marques
# de fabrique ou des marques dposes de Sun Microsystems, Inc. aux
# Etats-Unis et dans d'autres pays.


# assume that IS 6.1 instance installed locally on this box
# and this script is to deploy it further to weblogic 6 and 
# make further necessary changes to IS & weblogic 6 site

# import the environment
if [ "X$1" = "X" ] || [ "X$2" = "X" ]; then
    echo "Interactive not yet supported, must use the -s <file> option" 
    exit 
elif [ $1 = "-s" ]; then 
    if [ ! -f $2 ]; then 
        echo Silent file not found: $2 
        exit 
    fi 
    IS_SILENT_INSTALL_FILE=$2 
    export IS_SILENT_INSTALL_FILE 
else 
    echo "Usage: amwl61config -s <silent>" 
    exit 
fi

###########################################################
# Finds amutils and sources it. This function is identical
# in all scripts. Any changes made here need to made in
# other scripts too.
source_amutils()
{
	# Try to guess the location of amutils
	if [ "$BASEDIR" != "" -a "$PRODUCT_DIR" != "" -a -f $BASEDIR/$PRODUCT_DIR/bin/amutils ]; then
		AMUTILS=$BASEDIR/$PRODUCT_DIR/bin/amutils
	elif [ "$BASEDIR" != "" -a "$PRODUCT_DIR" != "" -a -f $BASEDIR/$PRODUCT_DIR/share/bin/amutils ]; then
		AMUTILS=$BASEDIR/$PRODUCT_DIR/share/bin/amutils
	elif [ -f ./amutils ]; then
		AMUTILS=./amutils
	elif [ -f `dirname $0`/amutils ]; then
		AMUTILS=`dirname $0`/amutils
	elif [ -f /opt/SUNWam/bin/amutils ]; then
		AMUTILS=/opt/SUNWam/bin/amutils
	elif [ -f /opt/SUNWam/share/bin/amutils ]; then
		AMUTILS=/opt/SUNWam/share/bin/amutils ]
	elif [ -f /opt/sun/identity/bin/amutils ]; then
		AMUTILS=/opt/sun/identity/bin/amutils
	elif [ -f /opt/sun/identity/share/bin/amutils ]; then
		AMUTILS=/opt/sun/identity/share/bin/amutils ]
	else
		echo "$0: FATAL: Could not find amutils. Exiting."
		exit 1
	fi

	# Source it!
	echo "$0: Sourcing $AMUTILS"
	. $AMUTILS
}

# import shared utils
source_amutils

uri1="${CONSOLE_DEPLOY_URI:-/amconsole}"
uri2="${SERVER_DEPLOY_URI:-/amserver}"
uri3="${PASSWORD_DEPLOY_URI:-/ampassword}"
uri4="${COMMON_DEPLOY_URI:-/amcommon}"
WL61_HOSTNAME=`echo $WL61_HOST |nawk -F. '{print $1}'`

deploy_it()
{
idx=${1:-0}; shift 1
case $idx in
 0)
	CURRENT_DEPLOY_URI=${uri1:-/amconsole}	# /amconsole default
	warfile=console.war
	WEBAPPSDIR=${BASEDIR}/${PRODUCT_DIR}/web-apps/applications
	;;
 1)
	CURRENT_DEPLOY_URI=${uri2:-/amserver}	# /amserver default
	warfile=services.war
	WEBAPPSDIR=${BASEDIR}/${PRODUCT_DIR}/web-apps/services
	;;
 2)
	CURRENT_DEPLOY_URI=${uri3:-/ampassword}	# /ampassword default
	warfile=password.war
	WEBAPPSDIR=${BASEDIR}/${PRODUCT_DIR}/web-apps/password
	;;
 3)
	CURRENT_DEPLOY_URI=${uri4:-/amcommon}	# /amcommon default
	warfile=introduction.war
	WEBAPPSDIR=${BASEDIR}/${PRODUCT_DIR}/web-apps/introduction
	;;
esac

cd ${BASEDIR}/${PRODUCT_DIR}
if [ ! -f $warfile ];then	# for /amcommon case
 touch $warfile
fi
jar xf $warfile index.html
if [ ! -f ${WEBAPPSDIR}/WEB-INF/web.xml -a $idx -eq 3 ];then
 mkdir -p ${WEBAPPSDIR}
 cd ${WEBAPPSDIR}
 jar xvf ../../$warfile
fi

if [ $idx -ne 3 ];then	# not amcommon stuff
EDIT_FILES="${BASEDIR}/${PRODUCT_DIR}/index.html ${CONFIG_DIR}/AMConfig.properties ${BASEDIR}/${PRODUCT_DIR}/bin/am2bak ${BASEDIR}/${PRODUCT_DIR}/bin/bak2am ${BASEDIR}/${PRODUCT_DIR}/bin/amserver"
else
EDIT_FILES="${BASEDIR}/${PRODUCT_DIR}/web-apps/introduction/WEB-INF/web.xml ${BASEDIR}/${PRODUCT_DIR}/web-apps/introduction/WEB-INF/classes/FSIntroConfig.properties ${BASEDIR}/${PRODUCT_DIR}/bin/am2bak ${BASEDIR}/${PRODUCT_DIR}/bin/bak2am"
fi
for file in $EDIT_FILES; do
  cp $file $file+
  sed -e "s#SERVER_HOST#$SERVER_HOST#g" \
      -e "s#SERVER_PORT#$SERVER_PORT#g" \
      -e "s#SERVER_PROTO#$SERVER_PROTOCOL#g" \
      -e "s#CONSOLE_DEPLOY_URI#$CURRENT_DEPLOY_URI#g" \
      -e "s#SERVER_DEPLOY_URI#$CURRENT_DEPLOY_URI#g" \
      -e "s#PASSWORD_DEPLOY_URI#$CURRENT_DEPLOY_URI#g" \
      -e "s#WEBAPPSDIR#${WEBAPPSDIR}#g" \
      -e "s#TEMP_DIR_PREFIX#${TEMP_DIR_PREFIX}#g" \
      -e "s#DEBUG_DIR_PREFIX#${DEBUG_DIR_PREFIX}#g" \
      -e "s#COOKIE_ENCODE#true#g" \
      -e "s#JDK_PATH#${JDK_PATH}#g" \
      -e "s#WL61_PROD_DIR#${WL61_PROD_DIR}#g" \
      -e "s#WL61_DOMAIN#${WL61_DOMAIN}#g" \
      -e "s#WL61_ADMINPASSWD#${WL61_ADMINPASSWD}#g" \
      -e "s#IS_INSTALL_ETCDIR#${IS_INSTALL_ETCDIR}#g" \
      -e "s#IS_INSTALL_VARDIR#${IS_INSTALL_VARDIR}#g" \
      -e "s#IS_PRODNAME#${PRODUCT_DIR}#g" \
      $file+ > $file
  rm -f $file+
 done

DEPLOY_WARPREFIX=`echo $CURRENT_DEPLOY_URI |nawk -F/ '{print $NF}'`
if [ $idx -ne 3 ];then
 cd ${BASEDIR}/${PRODUCT_DIR}
 jar -uvf $warfile index.html
 rm index.html

 mkdir -p ${WEBAPPSDIR}
 cd ${WEBAPPSDIR}
 jar -xf ../../$warfile
else
 if [ -f ${WEBAPPSDIR}/${DEPLOY_WARPREFIX:-amcommon}/WEB-INF/web.xml ];then
 	cd ${WEBAPPSDIR}/${DEPLOY_WARPREFIX:-amcommon}
 else
	cd ${WEBAPPSDIR}
 fi
 jar -cf ${WEBAPPSDIR}/../$warfile *
 cd ${WEBAPPSDIR}/..
 cp ${WEBAPPSDIR}/../$warfile ${BASEDIR}/${PRODUCT_DIR}/$warfile
fi

# start deploy uri
echo "deploying the $CURRENT_DEPLOY_URI in $SERVER_URI ..."

DEPLOY_WARFILE=${DEPLOY_WARPREFIX}.war
mv $BASEDIR/$PRODUCT_DIR/$warfile $BASEDIR/$PRODUCT_DIR/$DEPLOY_WARFILE
java -classpath ${CLASSPATH}:${BASEDIR}/${PRODUCT_DIR}/lib/jaas.jar:. weblogic.deploy -url $SERVER_URI -component ${DEPLOY_WARPREFIX}:$WL61_SERVER deploy $WL61_PASSWORD $CURRENT_DEPLOY_URI $BASEDIR/$PRODUCT_DIR/$DEPLOY_WARFILE
mv $BASEDIR/$PRODUCT_DIR/$DEPLOY_WARFILE $BASEDIR/$PRODUCT_DIR/$warfile

if [ $? -eq 0 ];then
 echo "Successfully done deploying $CURRENT_DEPLOY_URI ..."
else
 echo "Failed deploying $CURRENT_DEPLOY_URI ..."
fi

post_deploy

}

post_deploy()
{

## Backup files first
WEBLOGIC_SCRIPTS="$WL61_INSTANCE/config/${WL61_DOMAIN}/startWebLogic.sh $WL61_INSTANCE/config/${WL61_DOMAIN}/startManagedWebLogic.sh"
BACKUP_DIR=$WL61_INSTANCE/config/${WL61_DOMAIN}/.dsame

# Begin PORTALMA
if [ "$OSTYPE" = "Linux" ]; then
	MOBILE_ACCESS_LIB_DIR=/opt/sun/mobileaccess/share/lib
else
	MOBILE_ACCESS_LIB_DIR=/opt/SUNWma/lib
fi

MOBILE_ACCESS_JARS="$MOBILE_ACCESS_LIB_DIR/wireless_rendering.jar:$MOBILE_ACCESS_LIB_DIR/wireless_rendering_util.jar:$MOBILE_ACCESS_LIB_DIR/mobile_services.jar:$MOBILE_ACCESS_LIB_DIR/ccpp-1_0.jar:$MOBILE_ACCESS_LIB_DIR/ccpp-ri-1_0.jar:$MOBILE_ACCESS_LIB_DIR/jena-1.4.0.jar:$MOBILE_ACCESS_LIB_DIR/rdffilter.jar:$MOBILE_ACCESS_LIB_DIR/locale"
is_pkg_installed $MA_PKGNAME        
if [ $? -eq 0 ]; then        
	MOBILE_ACCESS_JARS="$MOBILE_ACCESS_JARS:${BASEDIR}/${PRODUCT_DIR}/mobile_identity.jar"
fi
# End PORTALMA

if [ ! -d ${BACKUP_DIR} ];then
 mkdir -p ${BACKUP_DIR}
fi

if [ ! -f ${BACKUP_DIR}/DEPL_DONE ];then
cp $WEBLOGIC_SCRIPTS ${BACKUP_DIR}
touch ${BACKUP_DIR}/DEPL_DONE

for file in $WEBLOGIC_SCRIPTS; do

sed -e "/^CLASSPATH/{
a\\
### IS classes added to CLASSPATH
a\\
CLASSPATH=${CONFIG_DIR}:${BASEDIR}/${PRODUCT_DIR}/lib/jaxrpc_1.0/jaxrpc-api.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaxrpc_1.0/jaxrpc-ri.jar:${BASEDIR}/${PRODUCT_DIR}/lib:${BASEDIR}/${PRODUCT_DIR}/locale:${BASEDIR}/${PRODUCT_DIR}/lib/am_sdk.jar:${BASEDIR}/${PRODUCT_DIR}/lib/am_services.jar:${BASEDIR}/${PRODUCT_DIR}/lib/am_sso_provider.jar:${BASEDIR}/${PRODUCT_DIR}/lib/am_logging.jar:${BASEDIR}/${PRODUCT_DIR}/lib:${BASEDIR}/${PRODUCT_DIR}/lib/xalan.jar:${BASEDIR}/${PRODUCT_DIR}/lib/xmlsec.jar:${BASEDIR}/${PRODUCT_DIR}/lib/xercesImpl.jar:${BASEDIR}/${PRODUCT_DIR}/lib/sax.jar:${BASEDIR}/${PRODUCT_DIR}/lib/dom.jar:${BASEDIR}/${PRODUCT_DIR}/lib/dom4j.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jakarta-log4j-1.2.6.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaxm-api.jar:${BASEDIR}/${PRODUCT_DIR}/lib/saaj-api.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaxm-runtime.jar:${BASEDIR}/${PRODUCT_DIR}/lib/saaj-impl.jar:\${CLASSPATH}:${BASEDIR}/${PRODUCT_DIR}/lib/jaxp-api.jar:${BASEDIR}/${PRODUCT_DIR}/lib/mail.jar:${BASEDIR}/${PRODUCT_DIR}/locale:${JSS_JAR_PATH}/jss3.jar:${BASEDIR}/${PRODUCT_DIR}/lib/activation.jar:${BASEDIR}/${PRODUCT_DIR}/lib/commons-logging.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jax-qname.jar:${BASEDIR}/${PRODUCT_DIR}/lib/swec.jar:${BASEDIR}/${PRODUCT_DIR}/lib/acmecrypt.jar:${BASEDIR}/${PRODUCT_DIR}/lib/iaik_ssl.jar:${BASEDIR}/${PRODUCT_DIR}/lib/iaik_jce_full.jar:${BASEDIR}/${PRODUCT_DIR}/lib/xsltc.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jce1_2_1.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jdk_logging.jar:${BASEDIR}/${PRODUCT_DIR}/lib/servlet.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jsse.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaas.jar:${BASEDIR}/${PRODUCT_DIR}/lib/namespace.jar:${BASEDIR}/${PRODUCT_DIR}/lib/relaxngDatatype.jar:${BASEDIR}/${PRODUCT_DIR}/lib/xsdlib.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaxb-api.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaxb-impl.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaxb-libs.jar:${BASEDIR}/${PRODUCT_DIR}/lib/jaxb-xjc.jar:${MOBILE_ACCESS_JARS}
a\\

a\\
### IS related enviornment variables
a\\
IS_OPTIONS=\"-Xbootclasspath:${BASEDIR}/${PRODUCT_DIR}/lib/jdk_logging.jar:${JDK_PATH}/lib/tools.jar:${JDK_PATH}/jre/lib/rt.jar:${JDK_PATH}/jre/lib/sunrsasign.jar:${JDK_PATH}/jre/lib/i18n.jar -Djava.security.auth.login.config=${WL61_INSTANCE}/config/${WL61_DOMAIN}/.java.login.config -Djava.util.logging.manager=com.sun.identity.log.LogManager -DLOG_COMPATMODE=Off -Ds1is.java.util.logging.config.class=com.sun.identity.log.s1is.LogConfigReader -Djava.protocol.handler.pkgs=com.iplanet.services.comm\"
a\\

a\\
### IS related libraries added to LD_LIBRARY_PATH
a\\
LD_LIBRARY_PATH=${JSS_SO_PATH}:${NSS_SO_PATH}:${NSPR_SO_PATH}:\$LD_LIBRARY_PATH
a\\

}" $file >${WL61_INSTANCE}/config/${WL61_DOMAIN}/tempFile126743

## Replace CLASSPATH with CLASSPATH $IS_OPTIONS

 sed "`grep -n CLASSPATH ${WL61_INSTANCE}/config/${WL61_DOMAIN}/tempFile126743 | cut -d: -f1 | tail -1` s/CLASSPATH/{CLASSPATH} \${IS_OPTIONS}/" ${WL61_INSTANCE}/config/${WL61_DOMAIN}/tempFile126743 > $file

 echo "Removing TempFile"
 rm ${WL61_INSTANCE}/config/${WL61_DOMAIN}/tempFile126743

done

# create .java.login.config only ONCE
cat <<EOF > ${WL61_INSTANCE}/config/${WL61_DOMAIN}/.java.login.config
ServerLoginModule
{
  weblogic.security.internal.ServerLoginModule required debug=true;
};
EOF

# append IS auth to java.security
javasec_file=$JDK_PATH/jre/lib/security/java.security
if [ -f $javasec_file ];then 
 echo "login.configuration.provider=com.sun.identity.authentication.config.AMConfiguration" >> $javasec_file
fi

fi	# end of test of DEPL_DONE flag

}

undeploy_it()
{

idx=${1:-0}
do_post=${2:-no}
case $idx in
 0)
	CURRENT_DEPLOY_URI=${uri1:-/amconsole}	# console deploy with diff variable
	;;
 1)
	CURRENT_DEPLOY_URI=${uri2:-/amserver}	# /amserver default
	;;
 2)
	CURRENT_DEPLOY_URI=${uri3:-/ampassword}	# /ampassword default
	;;
 3)
	CURRENT_DEPLOY_URI=${uri4:-/amcommon}	# /amcommon default
	;;
esac

ADMIN_SERVER_URI="$WL61_PROTOCOL://$WL61_HOSTNAME:$WL61_PORT"
echo "undeploying $CURRENT_DEPLOY_URI from $ADMIN_SERVER_URI ..."

java -classpath ${CLASSPATH}:${BASEDIR}/${PRODUCT_DIR}/lib/jaas.jar:.: weblogic.deploy -url $ADMIN_SERVER_URI delete $WL61_PASSWORD $CURRENT_DEPLOY_URI

if [ $? -eq 0 ];then
 echo "Successfully done undeploying $CURRENT_DEPLOY_URI ..."
else
 echo "Failed undeploying $CURRENT_DEPLOY_URI ..."
fi

if [ ${do_post} = "yes" ];then
 post_undeploy
fi
}

# post undeploy job
post_undeploy()
{
BACKUP_DIR=${WL61_INSTANCE}/config/${WL61_DOMAIN}/.dsame
rm -f $BACKUP_DIR/DEPL_DONE 2>/dev/null
#if [ $idx -eq 0 -a -f $BACKUP_DIR/DEPL_DONE ];then
# restore the init version of script
#cp $BACKUP_DIR/startWebLogic.sh $WL61_INSTANCE/config/${WL61_DOMAIN}/

undo_bea6 $WL61_INSTANCE/config/${WL61_DOMAIN}/startWebLogic.sh

undo_bea6 $WL61_INSTANCE/config/${WL61_DOMAIN}/startManagedWebLogic.sh

rm -fr ${BASEDIR}/${PRODUCT_DIR}/web-apps/* 2>/dev/null

}

# unconfig IS from weblogic script
undo_bea6()
{

  file=$1
  libline=`cat $file | grep -n "### IS" | awk ' BEGIN { FS=":" } { print $1}'`
  count=0
  for temp in $libline;
   do
    lineNum=`expr $temp - $count`
    delete_line_by_number $file $lineNum
    delete_line_by_number $file $lineNum
    delete_line_by_number $file $lineNum
    count=`expr $count + 3`
  done
 optLine=`cat $file | grep IS_OPTIONS`
  newOptLine=`echo $optLine | awk '{
         line=$0
         size = split(line, arrays, " ")
         for(i=1; i <= size; i++) {
          if ((index($i, "IS_OPTIONS") == 0)) {
            printf("%s ", $i)
          }
         }

   }'`
  append_line "$file" "IS_OPTIONS" "$newOptLine"
  delete_line "$file" "IS_OPTIONS"

 sed -e 's/{CLASSPATH}/CLASSPATH/g' \
 $file > ${file}-tmp
 cp ${file}-tmp $file
 rm ${file}-tmp

 sed -e 's/{IS_OPTIONS}/IS_OPTIONS/g' \
 $file > ${file}-tmp
 cp ${file}-tmp $file
 rm ${file}-tmp
}

# deploy_all func
deploy_all()
{
 deploy_it 3
 deploy_it 2
 deploy_it 1
 deploy_it 0
}

# undeploy_all func
undeploy_all()
{
 undeploy_it 3 "no"
 undeploy_it 2 "no"
 undeploy_it 1 "no"
 undeploy_it 0 "yes"
}

# install weblogic 6
wl61_install()
{
# the wl61 image (pkg version) should be in same dir-level as this script
if [ ! -x `pwd`/${WL61_IMAGE:-weblogic6??_solaris.bin} ];then
 echo "No weblogic 6 image, please download and leave a copy in `pwd` before restart $0"
 exit 0
fi

# build silent mode install-inf
wl61_silent_inf=/tmp/wl61_silent_$$.xml
cat > $wl61_silent_inf <<EOF
INSTALLER_UI=silent
### Locale
USER_LOCALE=en
### BEA Home Directory
BEAHOME=${WL61_HOME:-/export/home/bea6}
### Product Installation Directory
USER_INSTALL_DIR=${WL61_HOME}/wlserver6.1
### Default Domain
C_domainName=${WL61_DOMAIN:-mydomain}
### Default Server
C_serverName=${WL61_SERVER:-myserver}
### Default Listen Port
C_serverListenPort=${WL61_PORT:-7001}
### Default SSL Listen Port
C_serverSSLListenPort=${WL61_SSLPORT:-7002}
### System Password
C_password=${WL61_PASSWORD:-11111111}
### Default Install Set
CHOSEN_INSTALL_SET=ServerExample
EOF

wl61_image=`ls ./${WL61_IMAGE:-weblogic6??_solaris.bin}`
echo "Install weblogic 6 to $WL61_HOME ..."
$wl61_image -f $wl61_silent_inf
if [ $? -ne 0 ];then
 echo "Install of weblogic 6 failed (err=$?)"
 exit 1
else
 echo "Install of weblogic 6 succeed. "
fi
rm -f $wl61_silent_inf

# do basic mod for auto run as daemon
cd $WL61_INSTANCE/config/$WL61_DOMAIN
mv startWebLogic.sh startWebLogic.sh+
sed -e "s#^WLS_PW=#WLS_PW=$WL61_PASSWORD#g" \
 startWebLogic.sh+ >startWebLogic.sh
 chmod +x startWebLogic.sh
 rm -f startWebLogic.sh+

# reassure of jdk path because of diff wl61 spX 
if [ ! -d $WL61_JDK_HOME ];then		# wrong def
 WL61_JDK_HOME=$WL61_HOME/jdk131
 CLASSPATH=$WL61_INSTANCE/lib/weblogic.jar:.:$WL61_JDK_HOME/lib
 PATH=$WL61_JDK_HOME/bin:/bin:/usr/bin:/usr/sbin:/etc:/usr/ccs/bin:/usr/openwin/bin:/usr/dt/bin:.
 JDK_PATH=$WL61_JDK_HOME

 export WL61_JDK_HOME
 export JDK_PATH
 export CLASSPATH
 export PATH
fi
}

# check weblogic status and wait if not ready
check_and_wait()
{
 yesorno=0
 x="*.$WL61_PORT"
 while [ ${yesorno:-0} -eq 0 ];do
  yesorno=`netstat -an | grep "*.$WL61_PORT" | egrep -v grep | wc -l`
  if [ ${yesorno:-0} -ne 0 ];then
   yesorno=`netstat -an | grep "*.$WL61_PORT" | egrep -v grep | nawk -v v=$x -v i=0 '{if (length(v)==length($1)) i++; print i}'`
  fi
  sleep 3
 done
}

# start weblogic
start_wl61()
{
if [ -x $WL61_INSTANCE/config/$WL61_DOMAIN/startWebLogic.sh ];then
	cd $WL61_INSTANCE/config/$WL61_DOMAIN
	./startWebLogic.sh &
	#wait $PID
	check_and_wait
else
	echo "weblogic 6 install problem"
	exit 0
fi
echo "Weblogic 6 is ready."
}

# stop weblogic 
stop_wl61()
{
 pid=`ps -ef|grep "$WL61_HOME"|egrep -v grep|awk '{print $2}'`
 if [ ! -z ${pid:-""} ];then
	kill -9 ${pid:-99999999} > /dev/null 2>&1
 fi
}

# check local box environment
check_env()
{
 box_type=`/bin/uname -p`
 os_ver=`/bin/uname -r`
 os_type=`/bin/uname -s`
if [ $os_type = "SunOS" ];then
 if [ $box_type = "sparc" -o $box_type = "i?86" ];then
  if [ $os_ver = "5.8" -o $os_ver = "5.9" ];then
	continue
  else
	echo "Unsupported Solaris version"
  	exit 1
  fi
 fi
elif [ $os_type == "Linux" ];then
 continue
else
 echo "Unsupported OS"
 exit 1
fi

# check free space
if [ ! -d $WL61_HOME ];then
 mkdir -p $WL61_HOME
fi
freedk=`df -k $WL61_HOME | tail -1 |awk '{print $2}'`
freedk=`expr $freedk \/ 1000`
if [ $freedk -lt 230 ];then	# minimum space is 230M
 echo "Not enough space in $WL61_HOME (230M min)"
 exit 1
fi

# misc staff necessary for IS to run/deploy
# double check JSS-dir
if [ -f /var/sadm/pkg/SUNWjss/pkginfo ];then
 JSS_ROOTDIR=`grep BASEDIR /var/sadm/pkg/SUNWjss/pkginfo| nawk -F= '{print $2}'`
 export JSS_ROOTDIR
fi
if [ -f /var/sadm/pkg/SUNWtls/pkginfo ];then
 NSS_ROOTDIR=`grep BASEDIR /var/sadm/pkg/SUNWtls/pkginfo| nawk -F= '{print $2}'`
 export NSS_ROOTDIR
fi
if [ -f /var/sadm/pkg/SUNWpr/pkginfo ];then
 NSPR_ROOTDIR=`grep BASEDIR /var/sadm/pkg/SUNWpr/pkginfo| nawk -F= '{print $2}'`
 export NSPR_ROOTDIR
fi

if [ "$LD_LIBRARY_PATH" = "" ]
 then
    LD_LIBRARY_PATH=${JSS_SO_PATH}:${NSS_SO_PATH}:${NSPR_SO_PATH}:${BASEDIR}/${PRODUCT_DIR}/lib/

 else
    LD_LIBRARY_PATH=$${JSS_SO_PATH}:${NSS_SO_PATH}:${NSPR_SO_PATH}:$LD_LIBRARY_PATH:${BASEDIR}/${PRODUCT_DIR}/lib/

fi
export LD_LIBRARY_PATH

if [ ! -d ${BASEDIR}/${PRODUCT_DIR}/lib -o ! -f ${BASEDIR}/${PRODUCT_DIR}/lib/jaas.jar ];then
 mkdir -p ${BASEDIR}/${PRODUCT_DIR}/lib
 cp -f ./jaas.jar ${BASEDIR}/${PRODUCT_DIR}/lib
fi

# check if ports used are busy or not
if [ $DEPLOY_LEVEL -eq 10 -o $DEPLOY_LEVEL -eq 0 ];then		# full wl61 install
	x="*.$WL61_PORT"
	yesorno=1
	yesorno=`netstat -an | grep "*.$WL61_PORT" | egrep -v grep | wc -l`
 	if [ $yesorno -ne 0 ];then
	 yesorno=`netstat -an | grep "*.$WL61_PORT" | egrep -v grep | nawk -v v=$x -v i=0 '{if (length(v)==length($1)) i++; print i}'`
	fi
	if [ $yesorno -ne 0 ];then 
 		echo "Port $WL61_PORT is busy, please check it and rerun $0"
 		exit 0
	fi
	x="*.$WL61_SSLPORT"
	yesorno=1
	yesorno=`netstat -an | grep "*.$WL61_SSLPORT" | egrep -v grep | wc -l `
	if [ $yesorno -ne 0 ];then
	 yesorno=`netstat -an | grep "*.$WL61_SSLPORT" | egrep -v grep | nawk -v v=$x -v i=0 '{if (length(v)==length($1)) i++; print i}'`
	fi
	if [ $yesorno -ne 0 ];then 
 		echo "Port $WL61_SSLPORT is busy, please check it and rerun $0"
 		exit 0
	fi
fi

if [ $DEPLOY_LEVEL -ne 0 -a $DEPLOY_LEVEL -ne 10 ];then
	# check JDK path
	WL61_JDK_HOME=$WL61_HOME/jdk131
	JDK_PATH=$WL61_JDK_HOME
	CLASSPATH=$WL61_INSTANCE/lib/weblogic.jar:.:$WL61_JDK_HOME/lib
	PATH=$WL61_JDK_HOME/bin:/bin:/usr/bin:/usr/sbin:/etc:/usr/ccs/bin:/usr/openwin/bin:/usr/dt/bin:.

	export WL61_JDK_HOME
	export JDK_PATH
	export CLASSPATH
	export PATH
fi

}

#############################################################################
# Start of main program
#############################################################################

PWD=`pwd`
# check system env. 
check_env

# DEPLOY_LEVEL level range from 10 ~ 99 of following meaning
case $DEPLOY_LEVEL in
	4*)	# SDK install/deploy
		post_deploy
		;;
	14*)	# SDK uninstall/undeploy
		post_undeploy
		;;
	31*)	# SDK reinstall/redeploy
		post_undeploy
		post_deploy
		;;
	*)	echo "Unsupported DEPLOY_LEVEL value" 
		exit 0 ;;
esac


