#!/bin/sh

# define default configuration
POLL=false
SMP=disable
PROCESSES=250000
ERL_MAX_PORTS=32000
ERL_MAX_ETS_TABLES=1400
ERLANG_NODE=ejabberd

if [ -f /etc/default/ejabberd ] ; then
    . /etc/default/ejabberd
fi

ERLANG_OPTS="+K $POLL -smp $SMP +P $PROCESSES"

if [ -r /var/lib/ejabberd/.erlang.cookie ] ; then
    HOME=/var/lib/ejabberd
    export HOME
fi

ERL=/usr/bin/erl
EBIN_DIR=/usr/lib/ejabberd/ebin
CONFIG=/etc/ejabberd/ejabberd.cfg
INETRC=/etc/ejabberd/inetrc
LOG=/var/log/ejabberd/ejabberd.log
SASL_LOG=/var/log/ejabberd/sasl.log
SPOOL=/var/lib/ejabberd
ERL_CRASH_DUMP=/var/log/ejabberd/erl_crash.dump

export ERL_CRASH_DUMP
export ERL_MAX_PORTS
export ERL_MAX_ETS_TABLES
export ERL_FULLSWEEP_AFTER


ARGS=
while [ $# -ne 0 ] ; do
    PARAM=$1
    shift
    case $PARAM in
	--) break ;;
	--node) ERLANG_NODE=$1; shift ;;
	--config) CONFIG=$1 ; shift ;;
	--log) LOG=$1 ; shift ;;
	--sasl-log) SASL_LOG=$1 ; shift ;;
	--spool) SPOOL=$1 ; shift ;;
	*) ARGS="$ARGS $PARAM" ;;
    esac
done

if [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] ; then
    SNAME=-sname
else
    SNAME=-name
fi

exec $ERL $SNAME $ERLANG_NODE \
    -pa $EBIN_DIR \
    -s ejabberd \
    -kernel inetrc \"$INETRC\" \
    -ejabberd config \"$CONFIG\" log_path \"$LOG\" \
    -sasl sasl_error_logger \{file,\"$SASL_LOG\"\} \
    -mnesia dir \"$SPOOL\" \
    $ERLANG_OPTS $ERL_OPTIONS $ARGS "$@"

