#!/bin/sh
set +u

os=`uname -s`
if [ "$os" = "Linux" ]; then
    scriptFile=`readlink -f "$0"`
else
    scriptFile="$0"
fi
binDir=`dirname "$scriptFile"`
libDir="$binDir/../lib"
webappDir="$binDir/../webapp"
etcDir="$binDir/../etc"
varDir="$binDir/../var"

xxeBinDir="$binDir/../../bin"

if [ "$os" = "Linux" ]; then
    libDir=`readlink -f "$libDir"`
    webappDir=`readlink -f "$webappDir"`
    xxeBinDir=`readlink -f "$xxeBinDir"`
fi

#
# XXE class path.
#
jars1="$xxeBinDir/xerces.jar:$xxeBinDir/xmlresolver.jar:$xxeBinDir/relaxng.jar:$xxeBinDir/saxon.jar:$xxeBinDir/saxon12.jar"

if [ -f "$xxeBinDir/xxe.jar" ]; then
    cp1="$xxeBinDir/xxe.jar:$jars1"
elif [ -d "$xxeBinDir/../class/com/xmlmind/xmledit" ]; then
    cp1="$xxeBinDir/../class:$jars1"
else
    echo "xxe.jar not found"
    exit 2
fi

#
# XXE Server class path.
#
jars2=""
for j in "$libDir/"*.jar; do
    jars2="$j:$jars2"
done

if [ -f "$binDir/xxeserver.jar" ]; then
    cp2="$binDir/xxeserver.jar:$jars2"
elif [ -d "$binDir/../server/class/com/xmlmind/xmleditsrv" ]; then
    cp2="$binDir/../server/class:$jars2"
else
    echo "xxeserver.jar not found"
    exit 2
fi

# When developing, XXE_HOME/class/ must be before XXE_HOME/web/server/class/
# otherwise the installation directory XXE_HOME cannot be determined from the
# classpath.
#echo $cp "$cp1:$cp2"

arch=`uname -m`
if [ "$arch" = "arm64" -a -f "$xxeBinDir/jrea/bin/java" ]; then
    java="$xxeBinDir/jrea/bin/java"
elif [ -f "$xxeBinDir/jre/bin/java" ]; then
    # Standard arch is "x86_64".
    java="$xxeBinDir/jre/bin/java"
else 
    java=java
fi

#
# Specify default index.html. May be overridden in actual arguments.
#
# Example of useful options to be inserted before "$@":
# -pid "$varDir/xxeserver.pid"
# -loglevel INFO -logserver "$varDir/srv"
# -selfsign "CN=192.168.1.203" "$etcDir/selfsign192_168_1_203.cert"
# -faccess "$etcDir/remote_files_conf.json"
# where remote_files_conf.json contains valid JSON looking like:
# [ { "label": "Documents", "uri": "file:/home/john/Documents" } ]
#

exec "$java" -Xss4m -Xmx2048m -Djava.awt.headless=true \
  -DXXE_ADDON_PATH="$XXE_ADDON_PATH" \
  -DXXE_PREFS_DIR="$XXE_PREFS_DIR" \
  -classpath "$cp1:$cp2" \
  com.xmlmind.xmleditsrv.server.StartServer -index "$webappDir/index.html" "$@"

