diff options
author | Badlop <badlop@process-one.net> | 2008-07-12 22:02:16 +0000 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2008-07-12 22:02:16 +0000 |
commit | 871d1dfad6f16e45d8cb3aaf7347a6040c918c5d (patch) | |
tree | 12a0ce2b7e6a63486ca7b669bba44959a166fc3c /src/ejabberdctl.template | |
parent | * src/configure.ac: Improve legibility (diff) |
* src/configure.ac: Allow to execute ejabberd with a normal
system user (thanks to Viq)(EJAB-402)
* src/configure: Likewise
* src/ejabberdctl.template: Likewise
* src/Makefile.in: Likewise
* doc/guide.tex: Likewise
* doc/guide.html: Likewise
SVN Revision: 1439
Diffstat (limited to 'src/ejabberdctl.template')
-rw-r--r-- | src/ejabberdctl.template | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/src/ejabberdctl.template b/src/ejabberdctl.template index fc768fe3..4b8e505f 100644 --- a/src/ejabberdctl.template +++ b/src/ejabberdctl.template @@ -11,6 +11,8 @@ ERL_MAX_ETS_TABLES=1400 NODE=ejabberd HOST=localhost ERLANG_NODE=$NODE@$HOST +ERL=@erl@ +INSTALLUSER=@installuser@ ROOTDIR=@rootdir@ EJABBERD_CONFIG_PATH=$ROOTDIR/etc/ejabberd/ejabberd.cfg LOGS_DIR=$ROOTDIR/var/log/ejabberd/ @@ -36,6 +38,21 @@ while [ $# -ne 0 ] ; do esac done +# check the proper system user is used +ID=`id -g` +EJID=`id -g $INSTALLUSER` +EXEC_CMD="false" +if [ $ID -eq 0 ] ; then + EXEC_CMD="su ${INSTALLUSER} -c" +fi +if [ "$ID" -eq "$EJID" ] ; then + EXEC_CMD="sh -c" +fi +if [ "$EXEC_CMD" = "false" ] ; then + echo "This command can only be run by root or the user $INSTALLUSER" >&2 + exit 1 +fi + NAME=-name [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && NAME=-sname @@ -70,9 +87,8 @@ export ERL_INETRC export ERL_MAX_PORTS export ERL_MAX_ETS_TABLES export HOME +export EXEC_CMD -[ -d $EJABBERD_DB ] || mkdir -p $EJABBERD_DB -[ -d $LOGS_DIR ] || mkdir -p $LOGS_DIR # Compatibility in ZSH #setopt shwordsplit 2>/dev/null @@ -80,14 +96,14 @@ export HOME # start server start () { - erl \ + $EXEC_CMD "$ERL \ $NAME $ERLANG_NODE \ -noinput -detached \ -pa $EJABBERD_EBIN \ - -mnesia dir "\"$EJABBERD_DB\"" \ + -mnesia dir \"\\\"$EJABBERD_DB\\\"\" \ -s ejabberd \ - -sasl sasl_error_logger \{file,\"$SASL_LOG_PATH\"\} \ - $ERLANG_OPTS $ARGS "$@" + -sasl sasl_error_logger \\{file,\\\"$SASL_LOG_PATH\\\"\\} \ + $ERLANG_OPTS $ARGS \"$@\"" } # attach to server @@ -109,10 +125,10 @@ debug () echo "Press any key to continue" read foo echo "" - erl \ + $EXEC_CMD "$ERL \ $NAME ${NODE}debug \ -remsh $ERLANG_NODE \ - $ERLANG_OPTS $ARGS "$@" + $ERLANG_OPTS $ARGS \"$@\"" } # start interactive server @@ -133,22 +149,22 @@ live () echo "Press any key to continue" read foo echo "" - erl \ + $EXEC_CMD "$ERL \ $NAME $ERLANG_NODE \ -pa $EJABBERD_EBIN \ - -mnesia dir "\"$EJABBERD_DB\"" \ + -mnesia dir \"\\\"$EJABBERD_DB\\\"\" \ -s ejabberd \ - $ERLANG_OPTS $ARGS "$@" + $ERLANG_OPTS $ARGS \"$@\"" } # common control function ctl () { - erl \ + $EXEC_CMD "$ERL \ $NAME ejabberdctl \ -noinput \ -pa $EJABBERD_EBIN \ - -s ejabberd_ctl -extra $ERLANG_NODE $@ + -s ejabberd_ctl -extra $ERLANG_NODE $@" result=$? case $result in 0) :;; |