#!/bin/sh
#  $Id: object_script.sh 144933 2017-02-08 09:50:25Z justin.carveley@oracle.com $
#  Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
#  This software code contains proprietary information 
#  and should be treated as confidential.
#
#  Component: run admin shell
#  Author: mikebe

. "common-env.sh"

if [ -f $TTAMSG/common -a -f $TTAMSG/object_script ]; then
  . $TTAMSG/common
  . $TTAMSG/object_script
else
  echo "Unable to open message file: $TTAMSG/object_script"
  exit 1
fi


case "$trace" in
x) set -x
esac

# check first if all we want is the help
for o in "$@"; do
    case "$o" in
        --help )
        echo "$lf_usage" 1>&2
        exit 0;;
        *)
        echo "$l_invalid_arg1$o$l_invalid_arg2" 1>&2
        echo "$lf_short_usage" 1>&2
        exit 1;;
    esac
done

# Make sure that they are running as root

# cd to the directory containning this script, so that we can use
# relative pathnames
ttacommand=$0
case "$ttacommand" in
/*) cd `dirname $ttacommand`
    ;;
*)  fullpath=`pwd`/$ttacommand
    cd `dirname $fullpath`
esac


# Where are we relative to top of tta tree?
top=.
for _i in 0 1 2 3 4 5 6 7 8 9; do
    [ -d $top/bin/java -a -x $top/bin/tarantella ] && break
    [ -f $top/etc/passwd ] && { top=.; break; }
    top=../$top
done


# Source the Java environment variables:

# Set port numbers. Start by sourcing info/ports.properties.
if [ -r $top/var/info/ports.properties ]; then
	. $top/var/info/ports.properties
fi

# Use these as defaults for config
tarantella_config_array_externalport=${externalport:-3144}
tarantella_config_array_port=${peerport:-5427}
tarantella_config_array_secureport=${secureport:-5307}
#also include proxiedhttpsurl for firewall traversal
tarantella_config_server_proxiedhttpsurl=${proxiedhttpsurl:-""}
tarantella_config_array_privilegeduser=${privilegeduser:-""}
tarantella_config_array_privilegedgroup=${privilegedgroup:-""}
#also include privileged username for web authentication
tarantella_config_array_webserveruser=${webserveruser:-""}
# Include web auth key refresh
tarantella_config_login_webauth_refreshkeyonrestart=${refreshkeyonrestart:-""}

#Include attribute to tell ttawebtop whether to be verbose or not
tarantella_config_server_cgiverbose=${cgiverbose:-""}

#Include attribute used to modify the archive names
tarantella_config_server_archivemodifier=${archivemodifier:-""}

#Attribute for cgi-bin to tell client to bootstrap from
tarantella_config_server_cgibin_bootscript=${bootscript:-""}

#Attribute passed to client so it knows the route to the server.
tarantella_config_array_netservice_proxy_routes=${routes:-""}

#Attribute passed to client so it knows the correct external name of the server
tarantella_config_server_netservice_proxy_externalnames=${externalnames:-""}

#SHould we use ssl on peer connections? Admin tools need to know
tarantella_config_security_peerssl_enabled=${peerssl:-"0"}

# Use the bootstrap.properties file if we can.
_propfile="$top/var/serverconfig/global/bootstrap.properties"
[ -s "${_propfile}" -a -r "${_propfile}" ] && {
eval `tr -d '\\\\' <"${_propfile}" | egrep -v "^[ 	]*#|'|^tarantella\.config\.(name|type)=" | sed "/=/!d
:dotloop
s/^\([^=]*\)\.\([^=]*=.*\)\$/\1_\2/
tdotloop
s/^\([^=]*\)=\(.*\)/\1='\2'/"`
}

# Set the values in the expected variables.
externalport=$tarantella_config_array_externalport
secureport=$tarantella_config_array_secureport
peerport=$tarantella_config_array_port

# Set DNS names. Use the bootstrap.properties file if we can.
_propfile="$top/var/serverconfig/local/bootstrap.properties"
[ -s "${_propfile}" -a -r "${_propfile}" ] && {
eval `tr -d '\\\\' <"${_propfile}" | egrep -v "^[ 	]*#|'|^tarantella\.config\.(name|type)=" | sed "/=/!d
:dotloop
s/^\([^=]*\)\.\([^=]*=.*\)\$/\1_\2/
tdotloop
s/^\([^=]*\)=\(.*\)/\1='\2'/"`
}

# We need defaults if the properties file is unreadable or corrupt.
peerhost=${tarantella_config_server_dns_peer:-`$top/bin/bin/ttahostname`}
externalhost="${tarantella_config_server_dns_external:-$peerhost}"
auxhost="$peerhost"

# Get the value of proxiedhttpsurl/cgiverbose/archivemodifier/bootscript from 
# server.properties
_propfile="$top/var/serverconfig/local/server.properties"
[ -s "${_propfile}" -a -r "${_propfile}" ] && {
eval `tr -d '\\\\' <"${_propfile}" | egrep -v "^[ 	]*#|'|^tarantella\.config\.(name|type)=" | sed "/=/!d
:dotloop
s/^\([^=]*\)\.\([^=]*=.*\)\$/\1_\2/
tdotloop
s/^\([^=]*\)=\(.*\)/\1='\2'/"`
}

# Get the properties from array.properties
_propfile="$top/var/serverconfig/global/array.properties"
[ -s "${_propfile}" -a -r "${_propfile}" ] && {
eval `tr -d '\\\\' <"${_propfile}" | egrep -v "^[ 	]*#|'|^tarantella\.config\.(name|type)=" | sed "/=/!d
:dotloop
s/^\([^=]*\)\.\([^=]*=.*\)\$/\1_\2/
tdotloop
s/^\([^=]*\)=\(.*\)/\1='\2'/"`
}

# Get web auth properties
_propfile="$top/var/serverconfig/global/webauth.properties"
[ -s "${_propfile}" -a -r "${_propfile}" ] && {
eval `tr -d '\\\\' <"${_propfile}" | egrep -v "^[ 	]*#|'|^tarantella\.config\.(name|type)=" | sed "/=/!d
:dotloop
s/^\([^=]*\)\.\([^=]*=.*\)\$/\1_\2/
tdotloop
s/^\([^=]*\)=\(.*\)/\1='\2'/"`
}

# Get peerssl properties
_propfile="$top/var/serverconfig/global/security.properties"
[ -s "${_propfile}" -a -r "${_propfile}" ] && {
eval `tr -d '\\\\' <"${_propfile}" | egrep -v "^[ 	]*#|'|^tarantella\.config\.(name|type)=" | sed "/=/!d
:dotloop
s/^\([^=]*\)\.\([^=]*=.*\)\$/\1_\2/
tdotloop
s/^\([^=]*\)=\(.*\)/\1='\2'/"`
}

proxiedhttpsurl=$tarantella_config_server_proxiedhttpsurl
privilegeduser=$tarantella_config_array_privilegeduser
privilegedgroup=$tarantella_config_array_privilegedgroup
webauthrefresh=$tarantella_config_login_webauth_refreshkeyonrestart
cgiverbose=$tarantella_config_server_cgiverbose
archivemodifier=$tarantella_config_server_archivemodifier
bootscript=$tarantella_config_server_cgibin_bootscript
routes=$tarantella_config_array_netservice_proxy_routes
externalnames=$tarantella_config_server_netservice_proxy_externalnames
peerssl=$tarantella_config_security_peerssl_enabled
peersslciphers=$tarantella_config_security_peerssl_ciphers
webserveruser=$tarantella_config_array_webserveruser

INSTALLDIR=$top
export INSTALLDIR

[ -f $top/bin/scripts/javaprops ] && . $top/bin/scripts/javaprops
JAVADIR=${INSTALLDIR}/bin/java
CLASSPATH=${JAVADIR}/jserver.jar:${JAVADIR}/lib/*:${JAVADIR}:${JAVADIR}/ext/*:${INSTALLDIR}/var/serverresources/adminconfig

# (This sets the $jrecommand to be an appropriate jre.)

# Add system properties.
JAVA_SYSTEM_PROPERTIES="${JAVA_SYSTEM_PROPERTIES}
-Xms32m -Xmx256m
-Djava.naming.tfn.flavour=autoAdmin
-Djava.net.preferIPv4Stack=true"


# Handle "install mode" (non-interactive)
if [ "$TTA_INSTALL_MODE" = "t" ]; then
    JAVA_SYSTEM_PROPERTIES="${JAVA_SYSTEM_PROPERTIES}
-Dcom.sco.tta.admin.authentication.prompt=never"
else
    JAVA_SYSTEM_PROPERTIES="${JAVA_SYSTEM_PROPERTIES}
-Dcom.sco.tta.admin.authentication.prompt=sometimes"
fi

##########################################################
# We can specify the following parameters...
#
# PEERHOST - the host we should connect to (if running on a machine in array).
# PEERPORT - the port number to connect to on PEERHOST.
# EXTERNALHOST - the host clients connect to.
# EXTERNALPORT - the port clients connect to on EXTERNALHOST.
# SECUREPORT - secure server port clients connect to on EXTERNALHOST.
# INSTALLDIR - the install directory.
# CONTEXTSTART - name to resolve enterprise to (".../_ens")
#
# use '--shell' to run the novell command line shell
# use '--monitor' to run memory monitor
#
###########################################################
#
# For development purposes properties can be loaded from a properties file.
# To do this use the -D switch to the JVM to put the name of the file into
# the environment properties with the key 'com.sco.tta.admin.contextinitfile'.
# This then bypasses using TFN.
#
###########################################################

locale="$TTALANG"

ttascriptdir=$TTABINDIR"/scripts"
ttamsg=$ttascriptdir"/"$locale

cd $ttascriptdir

exec ${SGD_JAVA_DIR}/java $RUNTIME_ARGS -Djava.library.path=${TTAINSTDIR}/lib -classpath $CLASSPATH $JAVA_SYSTEM_PROPERTIES $TTA_USER_CMD com.sco.tta.common.util.TarantellaApplication com.sco.tta.admin.shell.AdminShellApplication --ttamsg $ttamsg SCRIPTDIR=$ttascriptdir --currentdir "$TTACWD" --ttabindir "$TTABINDIR" --cmdlineargs CONTEXTSTART=.../_ens/ INSTALLDIR=${TTAINSTDIR} PEERHOST=${peerhost} EXTERNALHOST=${externalhost} PEERPORT=${peerport} SECUREPORT=${secureport} EXTERNALPORT=${externalport} TFNUSER=.../_ens/o=org/cn=prefs-user-no-delete "$@"
