#!/bin/sh

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

# Location of the guide.html, for the web administration interface:
EJABBERD_DOC_PATH=/usr/share/doc/ejabberd
export EJABBERD_DOC_PATH

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

if [ "$FIREWALL_WINDOW" = "" ] ; then
    KERNEL_OPTS=""
else
    KERNEL_OPTS="-kernel \
	inet_dist_listen_min ${FIREWALL_WINDOW%-*} \
	inet_dist_listen_max ${FIREWALL_WINDOW#*-}"
fi

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

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
ERLANG_LOG=/var/log/ejabberd/erlang.log
SPOOL=/var/lib/ejabberd
ERL_CRASH_DUMP=/var/log/ejabberd/erl_crash.dump
EJABBERD_PID_PATH=/var/run/ejabberd/ejabberd.pid

export ERL_CRASH_DUMP
export ERL_MAX_PORTS
export ERL_MAX_ETS_TABLES
export ERL_FULLSWEEP_AFTER
export EJABBERD_PID_PATH


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 ;;
	--erlang-log) ERLANG_LOG=$1 ; shift ;;
	--spool) SPOOL=$1 ; shift ;;
	*) ARGS="$ARGS $PARAM" ;;
    esac
done

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

umask 027

exec $ERL $SNAME $ERLANG_NODE \
    -pa $EBIN_DIR \
    -s ejabberd \
    -kernel inetrc \"$INETRC\" \
    -ejabberd config \"$CONFIG\" log_path \"$LOG\" \
	erlang_log_path \"$ERLANG_LOG\" \
    -sasl sasl_error_logger false \
    -mnesia dir \"$SPOOL\" \
    $ERLANG_OPTS $ERL_OPTIONS $ARGS "$@"

