#!/bin/sh
# $Header: ftp_to_client.sh,v 1.25.4.2 2004/03/10 02:38:28 $
#
#***************************************************************************
# $VRTScprght: Copyright 1993 - 2004 VERITAS Software Corporation, All Rights Reserved $
#***************************************************************************
#
# This script makes a /usr/openv/netbackup/bp.conf file for a client
# and makes copies of the /etc/services entries for bprd, bpcd, bpjava-msvc,
# vopied, and vnetd and the /etc/inetd.conf entry for bpcd, bpjava-msvc,
# vopied, and vnetd.
# It will then ftp the client
# binaries, the bp.conf, and the /etc/services and /etc/inetd.conf entries to
# the client host specified as the first parameter. It will use the user
# specified as the second parameter as the ftp user. You will be asked by ftp to
# give the password for the user specified on the client host.
# When done with this script, you need to log in as root on the client and
# execute client_config to update the /etc/services and /etc/inetd.conf
# files.
#
#  cd /usr/openv/netbackup/bin/<hardware>/<os>
#  ftp_to_client client_name user_name

# INSERT fn.set_echo_var
#---------- set_echo_var -- $Revision: 1.2 $ ------------
#
#		This function is a case statement sets
#		the ECHO variable
#		with the appropriate path & flags.

#Define Echo to allow escape characters
case "`uname -s`" in
	Linux*)
		unset POSIXLY_CORRECT
		ECHO="/bin/echo -e"
		;;
	SunOS*)
		ECHO="/usr/bin/echo"
		;;
	*)
		ECHO="echo"
		;;
esac

# INSERT fn.inetd_entries
#---------- inetd.entries -- $Revision: 1.1 $ ------------
#	Set up the entries needed for inetd or xinetd by
#	defining a bunch of mini-functions the calling
#	scripts can reference.
#
#	There are 2 major types (inetd or xinetd).
#	New entries need to be added to both sections.
#
#-------------------------------------------------------------------------------
# inetd entries - NOWAIT will be filled in based on machine type later
# when the appropriate function is called.  For most machines,
# NOWAIT will be "nowait" but for Linux, it will be "nowait.300".

bpcd_i ()
{
	bpcd_i_entry="bpcd	stream	tcp	${NOWAIT}	root	/usr/openv/netbackup/bin/bpcd bpcd"
}

bpjava_msvc_i ()
{
	bpjava_msvc_i_entry="bpjava-msvc	stream	tcp	${NOWAIT}	root	/usr/openv/netbackup/bin/bpjava-msvc bpjava-msvc -transient"
}

vnetd_i ()
{
	vnetd_i_entry="vnetd	stream	tcp	${NOWAIT}	root	/usr/openv/bin/vnetd vnetd"
}

vopied_i ()
{
	vopied_i_entry="vopied	stream	tcp	${NOWAIT}	root	/usr/openv/bin/vopied vopied"
}

#-------------------------------------------------------------------------------
# xinetd entries - GROUP_LINE will be filled in based on machine type
# later when the appropriate function is called.  For most machines,
# GROUP_LINE will be nothing, but for MACINTOSH, it will be replaced
# by "groups = yes"

bpcd_x ()
{
	bpcd_x_entry="# Service bpcd for NetBackup
service bpcd
{
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        server                  = /usr/openv/netbackup/bin/bpcd
        disable                 = no
        ${GROUP_LINE}
}"
}

bpjava_msvc_x ()
{
	bpjava_msvc_x_entry="# Service bpjava-msvc for NetBackup
service bpjava-msvc
{
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        server                  = /usr/openv/netbackup/bin/bpjava-msvc
        server_args             = -transient
        disable                 = no
        ${GROUP_LINE}
}"
}

vnetd_x ()
{
	vnetd_x_entry="# Service vnetd for NetBackup
service vnetd
{
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        server                  = /usr/openv/bin/vnetd
        disable                 = no
        ${GROUP_LINE}
}"
}

vopied_x ()
{
	vopied_x_entry="# Service vopied for NetBackup
service vopied
{
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        server                  = /usr/openv/bin/vopied
        disable                 = no
        ${GROUP_LINE}
}"
}

OPENV_DIR=/usr/openv
OPENV_LIB=${OPENV_DIR}/lib
OPENV_SHARE=${OPENV_DIR}/share
BP_DIR=${OPENV_DIR}/netbackup
BP_BIN=${BP_DIR}/bin
BP_HELP_XBP=${BP_DIR}/help/xbp
BP_HELP_BP=${BP_DIR}/help/bp
JAVA_DIR=${OPENV_DIR}/java
DEST_DIR=/tmp/bp
DEST_BIN=/tmp/bp/bin
DEST_DRV=/tmp/bp/bin/driver
DEST_HELP=/tmp/bp/help
DEST_HELP_XBP=/tmp/bp/help/xbp
DEST_HELP_BP=/tmp/bp/help/bp
DEST_JAVA_DIR=/tmp/bp/java
SOURCE_DIR=`/bin/pwd`

if [ -f /usr/openv/netbackup/version ] ; then
	SERV_HARDWARE=`head -1 /usr/openv/netbackup/version | cut -f2 -d" "`
fi

TR=/usr/bin/tr

case "$SERV_HARDWARE" in
	ALPHA | HP* | SGI | LINUX)
		;;
	RS6000 | SOLARIS)
		TR=/bin/tr
		;;
	*)
		${ECHO} "
/usr/openv/netbackup/version not found or corrupted.
Unknown hardware type: \"$SERV_HARDWARE\"
"
		exit 1
		;;
esac

TAB=`${ECHO} ' ' | $TR ' ' '\011'`
SPACE=' '

if [ "$#" -ne 2 ] ; then
	${ECHO} "usage: ${0} <client> <user>" >& 2
	exit 1
else
	FTPUSER=${2}
fi

MACHINE=`pwd`
class_os=`basename $MACHINE`
MACHINE=`dirname $MACHINE`
DESTMACH=`basename $MACHINE`

if [ ! -f ../../${DESTMACH}/${class_os}/bpbackup ] ; then
	${ECHO} "
You need to be in the directory where the client's files are
located when you execute this script.
" >& 2
	exit 1
fi

# Make sure we're on an active node or a standalone machine
# before we allow the user to push to a client.

${BP_BIN}/cluster/cluster_active > /dev/null 2>&1
if [ $? -ne 0 ] ; then
	${ECHO} "
This machine appears to be an inactive member of a cluster.  Pushing
software to clients must occur on the active member of the cluster.
"
	exit 0
fi

# Check to see if the client is the master (the local machine).
# Use bpclntcmd so we aren't fooled by virtual names.
# Don't try to update the server with files from itself.

${BP_BIN}/bpclntcmd -is_local_host ${1} > /dev/null 2>&1
if [ $? -eq 0 ] ; then
	${ECHO} "
The client files are already on server ${1}.
"
	exit 0
fi

case "$DESTMACH" in
	HP*)	DSO_SUFFIX=sl ;;
	*)	DSO_SUFFIX=so ;;
esac

# Look for 0 or more spaces and tabs followed by SERVER.  If the client
# is Java capable, it is used for the SERVER_HOST entry in nbj.conf.
# Note:  the master server name may be a virtual name if the machine has
# been clustered.
SRVR=`egrep "^[${SPACE}${TAB}]*SERVER[${SPACE}${TAB}]*=" ${BP_DIR}/bp.conf | head -1`
if [ "${SRVR}" = "" ] ; then
	${ECHO} "Missing SERVER in /usr/openv/netbackup/bp.conf"
	exit 1
else
	SRVR=`${ECHO} ${SRVR} | cut -d"=" -f2 | awk '{print $1}'`
fi

# Build up a list of valid servers on /tmp/bp_servers_hostname.
/bin/rm -f /tmp/bp_servers_${1}

# Look for 0 or more spaces and tabs followed by SERVER.
egrep "^[${SPACE}${TAB}]*SERVER[${SPACE}${TAB}]*=" ${BP_DIR}/bp.conf >/tmp/bp_servers_${1}

# default entry added status
bad_entry=0

# Read the bprd entry from /etc/services.
BPRDSERVICE=`grep '^bprd' /etc/services`
if [ "${BPRDSERVICE}" = "" ] ; then
	${ECHO} "You need an entry for bprd in /etc/services" >& 2
	bad_entry=1
fi
/bin/rm -f /tmp/bprd_service_${1}
grep '^bprd' /etc/services >/tmp/bprd_service_${1}

# Read the bpcd entry from /etc/services.
BPCDSERVICE=`grep '^bpcd' /etc/services`
if [ "${BPCDSERVICE}" = "" ] ; then
	${ECHO} "You need an entry for bpcd in /etc/services" >& 2
	bad_entry=1
fi
/bin/rm -f /tmp/bpcd_service_${1}
grep '^bpcd' /etc/services >/tmp/bpcd_service_${1}

# Read the vnetd entry from /etc/services.
VNETDSERVICE=`grep '^vnetd' /etc/services`
if [ "${VNETDSERVICE}" = "" ] ; then
	${ECHO} "You need an entry for vnetd in /etc/services" >& 2
	bad_entry=1
fi
/bin/rm -f /tmp/vnetd_service_${1}
grep '^vnetd' /etc/services >/tmp/vnetd_service_${1}

# Read the vopied entry from /etc/services.
VOPIEDSERVICE=`grep '^vopied' /etc/services`
if [ "${VOPIEDSERVICE}" = "" ] ; then
	${ECHO} "You need an entry for vopied in /etc/services" >& 2
	bad_entry=1
fi
/bin/rm -f /tmp/vopied_service_${1}
grep '^vopied' /etc/services >/tmp/vopied_service_${1}

# Read the bpjava-msvc entry from /etc/services.
BPJAVASERVICE=`grep '^bpjava-msvc' /etc/services`
if [ "${BPJAVASERVICE}" = "" ] ; then
	${ECHO} "You need an entry for bpjava-msvc in /etc/services" >& 2
	bad_entry=1
fi
/bin/rm -f /tmp/bpjava_service_${1}
grep '^bpjava-msvc' /etc/services >/tmp/bpjava_service_${1}

if [ $bad_entry = 1 ] ; then
	exit 1
fi

# inetd entries are coming from the functions in the fn.inetd_entries file.
# Make all entries use nowait.  Will change to nowait.300 if needed later.

NOWAIT="nowait"
bpcd_i
${ECHO} "${bpcd_i_entry}" > /tmp/bpcd_inetd.conf_${1}
vopied_i
${ECHO} "${vopied_i_entry}" > /tmp/vopied_inetd.conf_${1}
bpjava_msvc_i
${ECHO} "${bpjava_msvc_i_entry}" > /tmp/bpjava_inetd.conf_${1}
vnetd_i
${ECHO} "${vnetd_i_entry}" > /tmp/vnetd_inetd.conf_${1}


# For some platforms, we also need to copy the java tools over, install them,
# and set up their .../java/nbj.conf.

InstallJava=0
case "${class_os}" in
	AIX*)		JRE_FILE=AIX_JRE.tar.Z
			JNI_FILE=${OPENV_LIB}/server/rs6000/libSigScheduleJNI.so
			OSTYPE=AIX
			InstallJava=1 ;;
	Solaris_x*)	JRE_FILE=Solaris_x86_JRE.tar.Z
			JNI_FILE=${OPENV_LIB}/server/Solaris_x86/libSigScheduleJNI.so
			OSTYPE=Solaris_X86
			InstallJava=1 ;;
	Solaris*)	JRE_FILE=Solaris_Sparc_JRE.tar.Z
			JNI_FILE=${OPENV_LIB}/server/Solaris/libSigScheduleJNI.so
			OSTYPE=Solaris
			InstallJava=1 ;;
	OSF1_V*)	JRE_FILE=Tru64_JRE.tar.Z
			JNI_FILE=${OPENV_LIB}/server/alpha_5/libSigScheduleJNI.so
			OSTYPE="${class_os}"
			InstallJava=1 ;;
	HP-UX11*)	JRE_FILE=HPUX_JRE.tar.Z
			JNI_FILE=${OPENV_LIB}/server/hp_ux/libSigScheduleJNI.sl
			OSTYPE=HP_UX
			InstallJava=1 ;;
	RedHat2.4)	JRE_FILE=Linux_JRE.tar.Z
			JNI_FILE=${OPENV_LIB}/server/linux/libSigScheduleJNI.so
			OSTYPE=Linux
			InstallJava=1 ;;
esac

/bin/rm -f /tmp/bp_client_name_${1}
${ECHO} "CLIENT_NAME = ${1}" >/tmp/bp_client_name_${1}

# Build the ftp command list.
${ECHO} "${FTPUSER}" > /tmp/ftp_input.$$
${ECHO} "type binary" >> /tmp/ftp_input.$$
${ECHO} "mkdir ${DEST_DIR}" >> /tmp/ftp_input.$$
${ECHO} "mkdir ${DEST_BIN}" >> /tmp/ftp_input.$$
${ECHO} "mkdir ${DEST_HELP}" >> /tmp/ftp_input.$$
${ECHO} "mkdir ${DEST_HELP_BP}" >> /tmp/ftp_input.$$
if [ -d ${SOURCE_DIR}/driver ] ; then
	${ECHO} "mkdir ${DEST_DRV}" >> /tmp/ftp_input.$$
fi
${ECHO} "cd ${DEST_DIR}" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/bp_servers_${1} bp_servers" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/bp_client_name_${1} bp_client_name" >> /tmp/ftp_input.$$
${ECHO} "cd ${DEST_BIN}" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/version version" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/client_config client_config" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/bprd_service_${1} bprd_service" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/bpcd_service_${1} bpcd_service" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/vnetd_service_${1} vnetd_service" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/vopied_service_${1} vopied_service" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/bpjava_service_${1} bpjava_service" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/bpcd_inetd.conf_${1} bpcd_inetd.cnf" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/vnetd_inetd.conf_${1} vnetd_inetd.cnf" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/vopied_inetd.conf_${1} vopied_inetd.cnf" >> /tmp/ftp_input.$$
${ECHO} "put /tmp/bpjava_inetd.conf_${1} bpjava_inetd.cnf" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/template.methods.txt template.methods.txt" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/template.methods_allow.txt template.methods_allow.txt" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/template.methods_deny.txt template.methods_deny.txt" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/template.names_allow.txt template.names_allow.txt" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/template.names_deny.txt template.names_deny.txt" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bp bp" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpcd bpcd_new" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpjava-msvc bpjava-msvc" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpjava-usvc bpjava-usvc" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpbkar bpbkar" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpbackup bpbackup" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bprestore bprestore" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bplist bplist" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpmount bpmount" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpclimagelist bpclimagelist" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpclntcmd bpclntcmd" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/bpdynamicclient bpdynamicclient" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/mtfrd mtfrd" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/tar tar" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/vauth_test vauth_test" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/vauth_testd vauth_testd" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/vauth_util vauth_util" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/vnetd vnetd" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/vopie_util vopie_util" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/vopied vopied" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/move_libs move_libs" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/bpfis ] ; then
	${ECHO} "put ${SOURCE_DIR}/bpfis bpfis" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/bphdb ] ; then
	${ECHO} "put ${SOURCE_DIR}/bphdb bphdb" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/bptpcinfo ] ; then
	${ECHO} "put ${SOURCE_DIR}/bptpcinfo bptpcinfo" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/bpnbat bpnbat" >> /tmp/ftp_input.$$
${ECHO} "put ${SOURCE_DIR}/vxss_db_paths vxss_db_paths" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/bpnbat_helper ] ; then
	${ECHO} "put ${SOURCE_DIR}/bpnbat_helper bpnbat_helper" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/libvnoauth.${DSO_SUFFIX} libvnoauth.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/libvnoauth64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libvnoauth64.${DSO_SUFFIX} libvnoauth64.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/libvopie.${DSO_SUFFIX} libvopie.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/libvopie64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libvopie64.${DSO_SUFFIX} libvopie64.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libVmangle.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libVmangle.${DSO_SUFFIX} libVmangle.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/libVcvcomb.${DSO_SUFFIX} libVcvcomb.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/libVcvcomb64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libVcvcomb64.${DSO_SUFFIX} libVcvcomb64.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/libVnbconf.${DSO_SUFFIX} libVnbconf.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/libVnbconf64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libVnbconf64.${DSO_SUFFIX} libVnbconf64.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/libVnbatST.${DSO_SUFFIX} libVnbatST.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/libVnbatST64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libVnbatST64.${DSO_SUFFIX} libVnbatST64.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/libVnbat.${DSO_SUFFIX} libVnbat.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/libVnbat64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libVnbat64.${DSO_SUFFIX} libVnbat64.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/libVxSS_helper.${DSO_SUFFIX} libVxSS_helper.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
if [ -f ${SOURCE_DIR}/libVxSS_helper64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libVxSS_helper64.${DSO_SUFFIX} libVxSS_helper64.${DSO_SUFFIX}_new" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libxbsa.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libxbsa.${DSO_SUFFIX} libxbsa.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libxbsa64.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libxbsa64.${DSO_SUFFIX} libxbsa64.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libubs.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libubs.${DSO_SUFFIX} libubs.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libnbbeclass.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libnbbeclass.${DSO_SUFFIX} libnbbeclass.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libnbbestdutl.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libnbbestdutl.${DSO_SUFFIX} libnbbestdutl.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libnbbedscomn.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libnbbedscomn.${DSO_SUFFIX} libnbbedscomn.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
if [ -f ${SOURCE_DIR}/libdbsb.${DSO_SUFFIX} ] ; then
	${ECHO} "put ${SOURCE_DIR}/libdbsb.${DSO_SUFFIX} libdbsb.${DSO_SUFFIX}" >> /tmp/ftp_input.$$
fi
${ECHO} "put ${SOURCE_DIR}/merge_auth_templates merge_auth_templates" >> /tmp/ftp_input.$$

${ECHO} "put ${OPENV_SHARE}/tpc_Client.txt tpc_Client.txt" >> /tmp/ftp_input.$$
${ECHO} "put ${OPENV_SHARE}/tpc_Console.txt tpc_Console.txt" >> /tmp/ftp_input.$$

if [ -d ${SOURCE_DIR}/driver ] ; then
	${ECHO} "cd ${DEST_DRV}" >> /tmp/ftp_input.$$
	for file in snapcachelist snapctl snapctl.conf snapctl_x \
		snaplist snapoff snapon snapstat
	do
		if [ -f ${SOURCE_DIR}/driver/${file} ] ; then
			${ECHO} "put ${SOURCE_DIR}/driver/${file} ${file}" >> /tmp/ftp_input.$$
		fi
	done
	${ECHO} "cd .." >> /tmp/ftp_input.$$
fi

if [ -f ${SOURCE_DIR}/xbp ] ; then
	${ECHO} "put ${SOURCE_DIR}/xbp xbp" >> /tmp/ftp_input.$$

	head -1 ${SOURCE_DIR}/xbp | grep '\#!\/bin\/sh' >/dev/null	#is xbp a shell script?

	if [ $? -eq 1 ] ; then #yes it's a binary & therefore supports x windows
		${ECHO} "mkdir ${DEST_HELP_XBP}" >> /tmp/ftp_input.$$
		${ECHO} "put ${SOURCE_DIR}/XKeysymDB ${DEST_DIR}/XKeysymDB" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_BIN}/XNB ${DEST_DIR}/XNB" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_BIN}/XNB.dt ${DEST_DIR}/XNB.dt" >> /tmp/ftp_input.$$
		${ECHO} "cd ${DEST_HELP_XBP}" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Confirm Confirm" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Config Config" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Altpath Altpath" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Help Help" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Index Index" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Main Main" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Progress Progress" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Tutorial Tutorial" >> /tmp/ftp_input.$$
		${ECHO} "put ${BP_HELP_XBP}/Viewselect Viewselect" >> /tmp/ftp_input.$$
	fi
fi

${ECHO} "cd ${DEST_HELP_BP}" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Archive Archive" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Backup Backup" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Help Help" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Index Index" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/MBackup MBackup" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/MRestore MRestore" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Main Main" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Restore_backup Restore_backup" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Restore_raw Restore_raw" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Restore_tir Restore_tir" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Restore_arch Restore_arch" >> /tmp/ftp_input.$$
${ECHO} "put ${BP_HELP_BP}/Tutorial Tutorial" >> /tmp/ftp_input.$$
if [ -f ${BP_HELP_BP}/Backup_Oracle ] ; then
	${ECHO} "put ${BP_HELP_BP}/Backup_Oracle Backup_Oracle" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Backup_Infmx Backup_Infmx" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Backup_Btrack Backup_Btrack" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Backup_Sybase Backup_Sybase" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Backup_Sap Backup_Sap" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Backup_Db2 Backup_Db2" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Restore_Oracle Restore_Oracle" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Restore_Infmx Restore_Infmx" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Restore_Btrack Restore_Btrack" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Restore_Sybase Restore_Sybase" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Restore_Sap Restore_Sap" >> /tmp/ftp_input.$$
	${ECHO} "put ${BP_HELP_BP}/Restore_Db2 Restore_Db2" >> /tmp/ftp_input.$$
fi
if [ $InstallJava = 1 ] ; then
	JAVA_FILE=NB-Java.tar.Z
	${ECHO} "mkdir ${DEST_JAVA_DIR}" >> /tmp/ftp_input.$$
	${ECHO} "cd ${DEST_DIR}" >> /tmp/ftp_input.$$
	${ECHO} "put ${OPENV_DIR}/${JAVA_FILE} ${JAVA_FILE}" >> /tmp/ftp_input.$$
	${ECHO} "cd ${DEST_JAVA_DIR}" >> /tmp/ftp_input.$$
	${ECHO} "put ${JAVA_DIR}/${JRE_FILE} ${JRE_FILE}" >> /tmp/ftp_input.$$
	${ECHO} "put ${JNI_FILE} `basename ${JNI_FILE}`" >> /tmp/ftp_input.$$
	if [ -f ${JAVA_DIR}/nbj.conf ] ; then
		Java_Server="${SRVR}"
		grep -v CLIENT_HOST /usr/openv/java/nbj.conf | grep -v SERVER_HOST > /tmp/JAVAnbj.conf.${1}
		${ECHO} "CLIENT_HOST=${1}
SERVER_HOST=${Java_Server}" >> /tmp/JAVAnbj.conf.${1}
		${ECHO} "put /tmp/JAVAnbj.conf.${1} nbj.conf" >> /tmp/ftp_input.$$
	fi
fi
${ECHO} "close" >> /tmp/ftp_input.$$
${ECHO} "quit" >> /tmp/ftp_input.$$

ftp ${1} < /tmp/ftp_input.$$ >/tmp/ftp_output_${1}

/bin/rm -f /tmp/ftp_input.$$ /tmp/bp_servers_${1} /tmp/bp_client_name_${1}
/bin/rm -f /tmp/bprd_service_${1} /tmp/bpcd_service_${1} /tmp/vopied_service_${1} /tmp/bpjava_service_${1} /tmp/vnetd_service_${1}
/bin/rm -f /tmp/bpcd_inetd.conf_${1} /tmp/vopied_inetd.conf_${1} /tmp/vnetd_inetd.conf_${1}
rm -f /tmp/JAVAnbj.conf.${1} /tmp/bpjava_inetd.conf_${1}

${ECHO} ""

FTPSUCCESS=`grep "Please login with USER and PASS." /tmp/ftp_output_${1}`
if [ "${FTPSUCCESS}" != "" ] ; then
	${ECHO} "Ftp failed because of an invalid user name or password."
	exit 1
else
	FTPTIMEOUT=`grep "Not connected" /tmp/ftp_output_${1}`
	if [ "${FTPTIMEOUT}" != "" ] ; then
		${ECHO} "Ftp failed to connect to ${1}."
		exit 1
	else
		FTPTIMEOUT=`grep "No space left on device" /tmp/ftp_output_${1}`
		if [ "${FTPTIMEOUT}" != "" ] ; then
			${ECHO} "Ftp ran out of space in /tmp on ${1}."
			exit 1
		else
			FTPTIMEOUT=`grep "No such file or directory" /tmp/ftp_output_${1}`
			if [ "${FTPTIMEOUT}" != "" ] ; then
				${ECHO} "Missing directories on ${1}.
You cannot install to a restricted ftpaccess user."
				exit 1
			elif [ "${class_os}" = "MacOSX10.2" ] ; then
				${ECHO} "ftp completed successfully.

An Admin user on ${1} must now execute the command
\"sudo sh /tmp/bp/bin/client_config [-L]\", the optional argument, \"-L\",
is used to avoid modification of the client's current bp.conf file."
			else
				${ECHO} "ftp completed successfully.

The root user on ${1} must now execute the command
\"sh /tmp/bp/bin/client_config [-L]\", the optional argument, \"-L\",
is used to avoid modification of the client's current bp.conf file."
			fi
		fi
	fi
fi

/bin/rm -f /tmp/ftp_output_${1}
