#!/bin/ksh

# 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.


#
#  set shell variables
#

DEF_UMASK=022
PATH=/bin:/usr/bin:/sbin:/usr/sbin
GREP=/usr/bin/grep
ECHO=/usr/bin/echo
CP="/usr/bin/cp -p"
RM=/usr/bin/rm
AWK=/usr/bin/awk
gettext=/usr/bin/gettext
CUT=/usr/bin/cut
DATE=/usr/bin/date
DOMAINNAME=/usr/bin/domainname

TEXTDOMAIN=upgradescripts
TEXTDOMAINDIR=./locale
NLSPATH=$TEXTDOMAINDIR
export TEXTDOMAIN
export TEXTDOMAINDIR
export NLSPATH

OPEN='('
CLOSE=')'
OMIT='\c'

LOGSUFFIX=`$DATE '+%m%d%H%M'`
LOGFILE=/var/sadm/install/logs/Sun_Java_System_Identity_Server_upgrade_dit_log.$LOGSUFFIX
CONFIG_DIR=/etc/opt/SUNWam/config

###############################################
#
# test for root user
#

check_root_user() {
    if test `id | $AWK '{print $1}'` != "uid=0(root)"
    then
	eval $ECHO "`$gettext 'You must be root user to run $0.'`"
	exit 1
    fi
}


###############################################
#
# get hostname info
#

get_host_info() {
    HOSTNAME_FULL="`/bin/uname -n`"
    HOSTNAME=`$ECHO "$HOSTNAME_FULL" | $CUT -d. -f1`
    fulldomain=`$DOMAINNAME`

    HOSTNAME_FULL="$HOSTNAME.$fulldomain"
    $ECHO "HOSTNAME_FULL = $HOSTNAME.$fulldomain" >> $LOGFILE
}


##############################################################################
# 
#  output message and pause for answer
#
pause_for_answer() {
    print $1
    print "`$gettext 'Hit return when ready.'`"
    read ans
}


##############################################################################
#
#  get information from /var/sadm/pkg/SUNWamsvc
#
get_SUNWamsvc_info() {
    BASEDIR="No SUNWamsvc"
    if [ -f /var/sadm/pkg/SUNWamsvc/pkginfo ]
    then
	BASEDIR=`$GREP "^BASEDIR=" /var/sadm/pkg/SUNWamsvc/pkginfo | sed -e "s/BASEDIR=//"`
	PRODUCT_DIR=`$GREP "PRODUCT_DIR=" /var/sadm/pkg/SUNWamsvc/pkginfo | sed -e "s/PRODUCT_DIR=//"`
	PLATFORM_ENCODING=`$GREP "PLATFORM_ENCODING=" /var/sadm/pkg/SUNWamsvc/pkginfo | sed -e "s/PLATFORM_ENCODING=//"`
	DIRMGRDN=`$GREP "DIRMGRDN=" /var/sadm/pkg/SUNWamdsc/pkginfo | sed -e "s/DIRMGRDN=//"`
    fi

    PKGDIR=$BASEDIR/$PRODUCT_DIR
    $ECHO "BASEDIR = $BASEDIR" >> $LOGFILE
    $ECHO "PRODUCT_DIR = $PRODUCT_DIR" >> $LOGFILE
    $ECHO "PKGDIR = $PKGDIR" >> $LOGFILE
    $ECHO "PLATFORM_ENCODING = $PLATFORM_ENCODING" >> $LOGFILE
    $ECHO "DIRMGRDN = $DIRMGRDN" >> $LOGFILE
}

##############################################################################
#
#  get information from $CONFIG_DIR/AMConfig.properties
#  make sure that get_SUNWamsvc_info is called first, to get INSTALL_DIR
#
get_AMConfig_info() {
    DS_HOST=`$GREP "com.iplanet.am.directory.host=" $CONFIG_DIR/AMConfig.properties | sed -e "s/.*directory.host=//"`
    DS_PORT=`$GREP "com.iplanet.am.directory.port=" $CONFIG_DIR/AMConfig.properties | sed -e "s/.*directory.port=//"`
    ROOT_SUFFIX=`$GREP "com.iplanet.am.rootsuffix=" $CONFIG_DIR/AMConfig.properties | sed -e "s/.*rootsuffix=//"`
    AMADMIN_DN=`$GREP "com.sun.identity.authentication.super.user=" $CONFIG_DIR/AMConfig.properties | sed -e "s/.*super.user=//"`
    $ECHO "get_AMConfig_info: DS_HOST=$DS_HOST, DS_PORT=$DS_PORT" >> $LOGFILE
    $ECHO "get_AMConfig_info: ROOT_SUFFIX=$ROOT_SUFFIX, AMADMIN_DN=$AMADMIN_DN" >> $LOGFILE
}


##############################################################################
#
#  get directory server hostname and port number
#
get_directory_server_info() {
    #
    #  check in /var/sadm/pkg/SUNWamsdk/pkginfo
    #
    eval $ECHO "`$gettext 'Directory Server fully-qualified hostname ${OPEN} $DS_HOST ${CLOSE}: ${OMIT}'`"
    read tmp
    if [ "$tmp" != "" ]
    then
	DS_HOST=$tmp
    fi
    eval $ECHO "`$gettext 'Directory Server port ${OPEN} $DS_PORT ${CLOSE}: ${OMIT}'`"
    read tmp
    if [ "$tmp" != "" ]
    then
	DS_PORT=$tmp
    fi
    $ECHO "get_directory_server_info: DS_HOST = $DS_HOST, DS_PORT = $DS_PORT" >> $LOGFILE
}


##############################################################################
#
#  get amadmin_dn
#
get_amadmin_dn() {
    #
    #  get it from AMConfig.properties
    #

    eval $ECHO "`$gettext 'Top-Level Administrator DN ${OPEN} $AMADMIN_DN ${CLOSE}: ${OMIT}'`"
    read tmp
    if [ "$tmp" != "" ]
    then
	AMADMIN_DN="$tmp"
    fi
    $ECHO "get_amadmin_dn: AMADMIN_DN = $AMADMIN_DN" >> $LOGFILE
}


##############################################################
#
#  get Directory Manager DN password
#
get_directory_mgr_dn_passwd() {
    eval $ECHO "`$gettext 'Directory Manager DN ${OPEN} $DIRMGRDN ${CLOSE}: ${OMIT}'`"
    read tmp
    if [ "$tmp" != "" ]
    then
	DIRMGRDN="$tmp"
    fi
    $ECHO "get_directory_mgr_dn_passwd: DIRMGRDN=$DIRMGRDN" >> $LOGFILE

    eval $ECHO "`$gettext 'Directory Manager ${OPEN} $DIRMGRDN ${CLOSE} password: ${OMIT}'`"
    stty -echo
    read DIRMGRPASSWD
    stty echo
    DIRMGRPASSWD=`$ECHO "$DIRMGRPASSWD" | sed -e 's/ *$//'`
    $ECHO
}

##############################################################
#
#
#
get_admin_password() {
    eval $ECHO "`$gettext 'Top-Level Administrator ${OPEN} $AMADMIN_DN ${CLOSE} password: ${OMIT}'`"
    stty -echo
    read ADMINPASSWD
    stty echo
    ADMINPASSWD=`$ECHO "$ADMINPASSWD" | sed -e 's/ *$//'`
    $ECHO
}

##############################################################################
#
#  get package paths
#
get_pkg_paths() {
    if [ -f /var/sadm/pkg/SUNWjss/pkginfo ]
    then
	tmp=`$GREP "BASEDIR=" /var/sadm/pkg/SUNWjss/pkginfo | sed -e "s/BASEDIR=//"`
    else
	tmp="/"
    fi
    SUNWjss_BASE_DIR=$tmp

    if [ -f /var/sadm/pkg/SUNWtls/pkginfo ]
    then
	tmp=`$GREP "BASEDIR=" /var/sadm/pkg/SUNWtls/pkginfo | sed -e "s/BASEDIR=//"`
    else
	tmp="/"
    fi
    SUNWtls_BASE_DIR=$tmp

    if [ -f /var/sadm/pkg/SUNWpr/pkginfo ]
    then
	tmp=`$GREP "BASEDIR=" /var/sadm/pkg/SUNWpr/pkginfo | sed -e "s/BASEDIR=//"`
    else
	tmp="/"
    fi
    SUNWpr_BASE_DIR=$tmp

    $ECHO "SUNWjss_BASE_DIR = $SUNWjss_BASE_DIR" >> $LOGFILE
    $ECHO "SUNWtls_BASE_DIR = $SUNWtls_BASE_DIR" >> $LOGFILE
    $ECHO "SUNWpr_BASE_DIR = $SUNWpr_BASE_DIR" >> $LOGFILE
}


##############################################################################
#
#  get IS_dit_version
#
get_IS_dit_version() {
    tmp=`${PKGDIR}/bin/ldapsearch -B -h "$DS_HOST" -p "$DS_PORT" \
	    -b "ou=sunIdentityServerSOAPBinding,ou=services,$ROOT_SUFFIX" \
	    -D "$AMADMIN_DN" -w "$ADMINPASSWD" \
	    "(objectclass=*)" sunserviceschema 2>&1`
    validity=`$ECHO $tmp | $GREP -i "invalid credentials"`
    if [ "$validity" != "" ]
    then
	$ECHO "`$gettext 'Invalid Top-Level Administrator password.'`"
	exit 3
    fi
    SOAPBINDING=`$ECHO $tmp | $GREP -i "no such object"`

    $ECHO "get_IS_dit_version:SOAPBINDING = $SOAPBINDING" >> $LOGFILE

    if [ "$SOAPBINDING" = "" ] 
    then  # 2004Q2 DIT
	IS_dit_version="2004Q2"
    else  
        tmp=`${PKGDIR}/bin/ldapsearch -B -h "$DS_HOST" -p "$DS_PORT" \
           -b "ou=iPlanetAMPasswordResetService,ou=services,$ROOT_SUFFIX" \
           -D "$AMADMIN_DN" -w "$ADMINPASSWD" \
           "(objectclass=*)" sunserviceschema 2>&1`
        PASSWORDRESET=`$ECHO $tmp | $GREP -i "no such object"`
        $ECHO "get_IS_dit_version:PASSWORDRESET = $PASSWORDRESET" >> $LOGFILE
        if [ "$PASSWORDRESET" = "" ]
        then # 6.1 DIT
            IS_dit_version="6.1"
        else
            $ECHO "Could not find Identity Server 6.1. Will not continue upgrading." >> $LOGFILE 
            $ECHO "`gettext 'Could not find Identity Server 6.1. Will not continue upgrading.'"
            exit 3
        fi
    fi
}



##############################################################
#
# strip_ISO_from_8859_encoding: Strip ISO from all the ISO8859-* encodings
#
strip_ISO_from_8859_encoding() {
   PATTERN="8859"
   SOLARIS_ENCODING=$1
   if [ $# -eq 1 ]
   then
      count=`$ECHO $1 | grep -c $PATTERN`
      if [ "$count" -ge "1" ]
      then
         SOLARIS_ENCODING=`$ECHO $1 | cut -c4-40`
      fi
   else
      $ECHO "`$gettext 'Usage : strip_ISO_from_8859_encoding SEARCH_STRING.'`"
   fi
}


##############################################################
#
# convert_to_utf8:  convert  a given file from native to utf-8
#
convert_to_utf8() {
    $ECHO "`gettext 'Using source encoding'` $PLATFORM_ENCODING `gettext 'for'` $1"
    if [ "$PLATFORM_ENCODING" != "UTF-8" ] && [ "$PLATFORM_ENCODING" != "" ]
    then
        strip_ISO_from_8859_encoding $PLATFORM_ENCODING
        if [ -f /usr/lib/iconv/$SOLARIS_ENCODING%UTF-8.so ]
        then
            $ECHO "`gettext 'Encoding'` $1 `gettext 'to UTF-8.'`"
            iconv -f "$PLATFORM_ENCODING" -t "UTF-8" $1 > $1+
            if [ $? -eq 0 ]
            then
                $ECHO "`gettext 'Successfully encoded'` $1 `gettext 'to UTF-8.'`"
                mv $1+ $1
            else
                $ECHO "`gettext 'Cannot encode'` $1 `gettext 'to UTF-8.'`"
            fi
        else
            $ECHO "`gettext 'Cannot encode type'` $PLATFORM_ENCODING `gettext 'to UTF-8.'`"
        fi
    fi
}


##############################################################
#
# create dit
#

create_dit() {
    # try multiple times
    i=2
    fail=0
    while [ $i != 6 ]
    do
        sleep $i
        ${PKGDIR}/bin/ldapmodify -D "$DIRMGRDN" -w "$DIRMGRPASSWD" -c -a -h $DS_HOST -p $DS_PORT -f ${INSTALL_LDIF}
        fail=$?
        if [ $fail = 0 ] 
        then
            break
        fi 
        i=`expr $i + 1`
        $ECHO "`gettext 'sleep'` $i"
    done
    if [ $fail = 0 ]
    then
        $ECHO "`gettext 'Create DIT succeeded.'`"
    else
        $ECHO "`gettext 'ERROR : create DIT failed.'`"
    fi
}



##############################################################################
#
# starting Main routine
#

umask ${DEF_UMASK}

check_root_user

get_host_info

get_SUNWamsvc_info
if [ "$BASEDIR" = "No SUNWamsvc" ]
then
    #
    #  uh-oh
    #
    $ECHO "`$gettext 'Cannot find Identity Server package SUNWamsvc.'`"
    exit 2
fi

if [ -f $CONFIG_DIR/AMConfig.properties ]
then
    get_AMConfig_info
else
    eval $ECHO "`$gettext 'Cannot find $CONFIG_DIR/AMConfig.properties'`"
    exit 3
fi

get_directory_server_info

get_directory_mgr_dn_passwd

get_amadmin_dn

get_admin_password

get_pkg_paths
JSS_PATH="${SUNWjss_BASE_DIR}/usr/lib/mps/secv1"
NSS_PATH="${SUNWtls_BASE_DIR}/usr/lib/mps/secv1"
NSPR_PATH="${SUNWpr_BASE_DIR}/usr/lib/mps/secv1"
JSS_JAR_PATH="${SUNWjss_BASE_DIR}/usr/share/lib/mps/secv1"
if [ "$LD_LIBRARY_PATH" = "" ]
then
    LD_LIBRARY_PATH=${PKGDIR}/ldaplib/ldapsdk:$JSS_PATH:$NSS_PATH:$NSPR_PATH:${BASEDIR}/${PRODUCT_DIR}/lib
else
    LD_LIBRARY_PATH=${PKGDIR}/ldaplib/ldapsdk:$JSS_PATH:$NSS_PATH:$NSPR_PATH:${BASEDIR}/${PRODUCT_DIR}/lib:$LD_LIBRARY_PATH
fi

export LD_LIBRARY_PATH

get_IS_dit_version
$ECHO IS_dit_version = $IS_dit_version
$ECHO "IS_dit_version = $IS_dit_version" >> $LOGFILE

if [ "$IS_dit_version" = "2004Q2" ]
then
    $ECHO "`$gettext 'Identity Server DIT appears to already be version 2004Q2.'`"
    exit 7
fi

#
#  the services and xml files to apply
#
#  DIT versions (in $IS_dit_version)
#    6.1
#
#  6.1:
#    import SVCS_TO_IMPORT
#    apply SVC_MODOFICATION_XML_FILES
#  

SVC_XML_DIR="$BASEDIR/$PRODUCT_DIR/migration/61to62/61to62"
ADMIN_CLI=$BASEDIR/$PRODUCT_DIR/bin/amadmin

UPGRADE_DIR=${PKGDIR}/migration/61to62

#
# get IS 6.1 SunAMClientDataService data
#
${PKGDIR}/bin/ldapsearch -T -1 -D "$DIRMGRDN" -w "$DIRMGRPASSWD" -h $DS_HOST -p $DS_PORT -b"ou=internalData,ou=default,ou=GlobalConfig,ou=1.0,ou=SunAMClientData,ou=services,$ROOT_SUFFIX" "objectclass=*" > ${UPGRADE_DIR}/scripts/is61clientdata_int.ldif

${PKGDIR}/bin/ldapsearch -T -1 -D "$DIRMGRDN" -w "$DIRMGRPASSWD" -h $DS_HOST -p $DS_PORT -b"ou=externalData,ou=default,ou=GlobalConfig,ou=1.0,ou=SunAMClientData,ou=services,$ROOT_SUFFIX" "objectclass=*" > ${UPGRADE_DIR}/scripts/is61clientdata_ext.ldif

#
#  upgrade the schema
#
$ECHO "`$gettext 'Upgrading 6.1 schema.'`"
$ECHO "`$gettext 'Upgrading 6.1 schema.'`" >> $LOGFILE

INSTALL_LDIF=${UPGRADE_DIR}/ds_remote_schema_61to62upgrade.ldif
create_dit
INSTALL_LDIF=${CONFIG_DIR}/ldif/sunAMClient_schema.ldif
create_dit
pause_for_answer "`$gettext 'Before proceeding, you MUST restart the directory server.'`"

#
#  upgrade the default dit from 6.1 to 2004Q2
#
$ECHO "`$gettext 'Upgrading 6.1 default DIT.'`"
$ECHO "`$gettext 'Upgrading 6.1 default DIT.'`" >> $LOGFILE

INSTALL_LDIF=${UPGRADE_DIR}/install_61to62_upgrade.ldif
convert_to_utf8 $INSTALL_LDIF
create_dit
INSTALL_LDIF=${CONFIG_DIR}/ldif/sunAMClient_data.ldif
create_dit

SVC_XML_DIR_IMPORT="${CONFIG_DIR}/xml"

SVCS_TO_IMPORT="amDisco.xml amSOAPBinding.xml amLibertyPersonalProfile.xml amProviderConfig.xml amAuthWindowsDesktopSSO.xml amAgent.xml identityLocaleService.xml "

SVC_MODIFICATION_XML_FILES="amPasswordReset_mod1.xml amPolicyConfig_mod1.xml amPolicyConfig_mod2.xml amUser_del1.xml amUser_add1.xml amAuth_mod1.xml amAuth_mod2.xml amPolicyConfig_add1.xml amAdminConsole_del1.xml amAdminConsole_add1.xml ums_add1.xml ums_mod1.xml ums_mod2.xml ums_del1.xml ums_mod3.xml amAuthCert_add1.xml amLogging_del1.xml amLogging_add1.xml amG11NSettings_del1.xml amG11NSettings_add1.xml amClientData_del1.xml amClientData_mod1.xml amAuthSafeWord_del1.xml amAuthSafeWord_mod1.xml"

#
#  apply service modifications
#

$ECHO "`$gettext 'Applying service modifications.'`"
$ECHO "`$gettext 'Applying service modifications.'`" >> $LOGFILE
cd $SVC_XML_DIR; $ADMIN_CLI --runasdn "$AMADMIN_DN" \
	--password "$ADMINPASSWD" -v -c --data ${SVC_MODIFICATION_XML_FILES}

#
#  import services
#

$ECHO "`$gettext 'Importing new 2004Q2 services.'`"
$ECHO "`$gettext 'Importing new 2004Q2 services.'`" >> $LOGFILE

cd $SVC_XML_DIR_IMPORT; $ADMIN_CLI --runasdn "$AMADMIN_DN" \
	--password "$ADMINPASSWD" -v --schema ${SVCS_TO_IMPORT}

# Begin PORTALMA

#
#  Enable client detection...
#

$ECHO "`$gettext 'Enabling client detection.'`"
$ECHO "`$gettext 'Enabling client detection.'`" >> $LOGFILE

MA_XML_DIR=${CONFIG_DIR}/request
MA_XML_FILES="SunAMClientData.xml mobileRequest.xml"

cd $MA_XML_DIR; $ADMIN_CLI --runasdn "$AMADMIN_DN" \
	--password "$ADMINPASSWD" -v --nolog --data ${MA_XML_FILES}

# End PORTALMA

#
# update iPlanetAMProviderConfigService
#

cd ${UPGRADE_DIR}/scripts
${PKGDIR}/bin/ldapsearch -T -1 -D "$DIRMGRDN" -w "$DIRMGRPASSWD" -h $DS_HOST -p $DS_PORT -b"ou=default,ou=OrganizationConfig,ou=1.0,ou=iPlanetAMProviderConfigService,ou=services,$ROOT_SUFFIX" "objectclass=*" > ${UPGRADE_DIR}/scripts/is61meta.ldif

if [ -f ${UPGRADE_DIR}/scripts/is61meta.ldif ]
then 
    if [ -s ${UPGRADE_DIR}/scripts/is61meta.ldif ]
    then     
        ${UPGRADE_DIR}/scripts/update-meta.pl
        # update-meta.pl generates an output file is62meta.ldif
        if [ -f ${UPGRADE_DIR}/scripts/is62meta.ldif ]
        then 
            if [ -s ${UPGRADE_DIR}/scripts/is62meta.ldif ]
            then     
                ${PKGDIR}/bin/ldapmodify -D "$DIRMGRDN" -w "$DIRMGRPASSWD" -c -a -h $DS_HOST -p $DS_PORT -f ${UPGRADE_DIR}/scripts/is62meta.ldif
            fi
            $RM ${UPGRADE_DIR}/scripts/is62meta.ldif
        fi
    fi
    $RM ${UPGRADE_DIR}/scripts/is61meta.ldif
fi

#
# update SunAMClientDataService
#

cd ${UPGRADE_DIR}/scripts
if [ -f ${UPGRADE_DIR}/scripts/is61clientdata_int.ldif -o -f ${UPGRADE_DIR}/scripts/is61clientdata_ext.ldif ]
then
    if [ -s ${UPGRADE_DIR}/scripts/is61clientdata_int.ldif -o -s ${UPGRADE_DIR}/scripts/is61clientdata_ext.ldif ]
    then
        ${UPGRADE_DIR}/scripts/update-clientdata.pl
        # update-clientdata.pl generates output files,
        # is62clientdata.ldif and is62cleanup.ldif
        if [ -f ${UPGRADE_DIR}/scripts/is62clientdata.ldif ]
        then
            if [ -f ${UPGRADE_DIR}/scripts/is62cleanup.ldif ]
            then
                ${PKGDIR}/bin/ldapmodify -D "$DIRMGRDN" -w "$DIRMGRPASSWD" -c -h $DS_HOST -p $DS_PORT -f ${UPGRADE_DIR}/scripts/is62cleanup.ldif
                $RM ${UPGRADE_DIR}/scripts/is62cleanup.ldif
            fi
            ${PKGDIR}/bin/ldapmodify -D "$DIRMGRDN" -w "$DIRMGRPASSWD" -c -a -h $DS_HOST -p $DS_PORT -f ${UPGRADE_DIR}/scripts/is62clientdata.ldif
            $RM ${UPGRADE_DIR}/scripts/is62clientdata.ldif
        fi
    fi

    if [ -f ${UPGRADE_DIR}/scripts/is61clientdata_int.ldif ]
    then        
        $RM ${UPGRADE_DIR}/scripts/is61clientdata_int.ldif
    fi
    
    if [ -f ${UPGRADE_DIR}/scripts/is61clientdata_ext.ldif ]
    then 
        $RM ${UPGRADE_DIR}/scripts/is61clientdata_ext.ldif
    fi
fi
    
$ECHO "`$gettext 'Upgrade completed.'`"
$ECHO "`$gettext 'YOU MUST RESTART THE DIRECTORY AND WEB SERVERS FOR THE UPGRADE CHANGES TO TAKE EFFECT.'`"
$ECHO "`$gettext 'Upgrade completed.'`" >> $LOGFILE
$ECHO "`$gettext 'YOU MUST RESTART THE DIRECTORY AND WEB SERVERS FOR THE UPGRADE CHANGES TO TAKE EFFECT.'`" >> $LOGFILE


