summaryrefslogtreecommitdiff
path: root/src/ejabberdctl.template
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2008-07-12 22:02:16 +0000
committerBadlop <badlop@process-one.net>2008-07-12 22:02:16 +0000
commit871d1dfad6f16e45d8cb3aaf7347a6040c918c5d (patch)
tree12a0ce2b7e6a63486ca7b669bba44959a166fc3c /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.template42
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) :;;