#!/bin/sh

#
#  Copyright (C) 2008 Funambol, Inc.  All rights reserved.
#
#  Environment Variable prerequisites
#
#    JAVA_HOME   (Optional) May point at your jdk/jre installation. If not set,
#                or not correctly set, the jre embedded in the bundle is used
#
#    JAVA_OPTS   (Optional) Java runtime options
#
#    MEM_OPTS    (Optional) Memory options, for instance -Xmx512M. It is used only
#                with start command. Default value -Xmx512M.
#
#
#  Set the JMX_PORT variable below to a different value if the one specified is
#  already in use.
#

JMX_PORT=8101

# Setting FUNAMBOL_HOME
# resolving links - $0 could be a softlink
PRG="$0"
APPNAME=`basename "$PRG"`

while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

PRGDIR=`dirname "$PRG"`

FUNAMBOL_HOME=`cd "$PRGDIR/.." ; pwd`
DS_SERVER_HOME=$FUNAMBOL_HOME/ds-server
J2EE_HOME=$FUNAMBOL_HOME/tools/tomcat

if [ ! -d $FUNAMBOL_HOME/config ]; then
    #
    # maybe we are in Funambol/tool/bin
    #
    FUNAMBOL_HOME=$FUNAMBOL_HOME/..
    DS_SERVER_HOME=$FUNAMBOL_HOME/ds-server
    J2EE_HOME=$FUNAMBOL_HOME/tools/tomcat
fi

export FUNAMBOL_HOME

# Setting the JAVA_HOME to the JRE in the bundle if not set or if not correctly set
if [ -z "$JAVA_HOME" ]; then
    JAVA_HOME=$FUNAMBOL_HOME/tools/jre-1.5.0/jre
else
    if [ ! -f "$JAVA_HOME/bin/java" ]; then
        JAVA_HOME=$FUNAMBOL_HOME/tools/jre-1.5.0/jre
    fi
fi

if [ -z "$JAVA_HOME" ]; then
  echo "Please, set JAVA_HOME before running this script."
  exit 1
fi

if [ ! -f "$JAVA_HOME/bin/java" ]
then
    echo "Please set JAVA_HOME to the path of a valid jre."
    exit;
fi

case $1 in
start)

    # Setting LIB_PATH
    OS=$(uname)
    case ${OS} in
        Linux*)
            LIB_PATH=linux
            MACHINE_HW=$(uname -m 2>/dev/null)
            case "$MACHINE_HW" in
                x86_64|ia64)
                    LIB_PATH=x86_64
                ;;
            esac
        ;;
        Darwin*)
            LIB_PATH=macosx
        ;;
        *)
            LIB_PATH=linux
        ;;
    esac

    if [ -z "$MEM_OPTS" ]; then
      MEM_OPTS="-Xmx512M"
    fi

    export LANG=en_US.utf-8
    
    JAVA_OPTS="$JAVA_OPTS $MEM_OPTS"
    JAVA_OPTS="$JAVA_OPTS -Dfunambol.debug=false"
    JAVA_OPTS="$JAVA_OPTS -Dfunambol.home=$FUNAMBOL_HOME"
    JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
    JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$DS_SERVER_HOME/lib/$LIB_PATH"
    JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=$DS_SERVER_HOME/lib/security/cacerts"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
    JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
    JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"

    export JAVA_OPTS;

    #
    # This is for debug. Use the debug starting command line below
    #
    export JPDA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"

    cd $J2EE_HOME/bin

    #
    # Run Tomcat for normal use
    #
    sh ./catalina.sh start

    #
    # Run Tomcat for debug
    #
    #sh ./catalina.sh jpda start
    ;;
stop)
    cd $J2EE_HOME/bin
    sh ./shutdown.sh
    ;;
license)
    less "$FUNAMBOL_HOME/LICENSE.txt"
    ;;
*)
    echo "Usage: $APPNAME command"
    echo "command:"
    echo "  start           Start the server"
    echo "  stop            Stop the server"
    echo "  license         Show the license"
    exit 1
    ;;
esac
