summaryrefslogtreecommitdiff
path: root/scripts/rabbitmq-script-wrapper
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rabbitmq-script-wrapper')
-rw-r--r--scripts/rabbitmq-script-wrapper80
1 files changed, 59 insertions, 21 deletions
diff --git a/scripts/rabbitmq-script-wrapper b/scripts/rabbitmq-script-wrapper
index 8b17ef3107..2b02a3ab1c 100644
--- a/scripts/rabbitmq-script-wrapper
+++ b/scripts/rabbitmq-script-wrapper
@@ -21,27 +21,65 @@ for arg in "$@" ; do
CMDLINE="${CMDLINE} '${arg}'"
done
-cd /var/lib/rabbitmq
+SCRIPT="$(basename "$0")"
+RABBITMQ_ENV=/usr/lib/rabbitmq/bin/rabbitmq-env
+RABBITMQ_SCRIPTS_DIR="$(dirname "$RABBITMQ_ENV")"
-SCRIPT=`basename $0`
+main() {
+ if current_user_is_rabbitmq
+ then
+ if calling_rabbitmq_server
+ then
+ exec_rabbitmq_server "$@"
+ else
+ exec_script_as_rabbitmq "$@"
+ fi
+ elif current_user_is_root
+ then
+ exec_script_as_root
+ else
+ run_script_help_and_fail
+ fi
+}
-if [ `id -u` = `id -u rabbitmq` -a "$SCRIPT" = "rabbitmq-server" ] ; then
- RABBITMQ_ENV=/usr/lib/rabbitmq/bin/rabbitmq-env
- RABBITMQ_SCRIPTS_DIR=$(dirname "$RABBITMQ_ENV")
- . "$RABBITMQ_ENV"
+current_user_is_rabbitmq() {
+ [ "$(id -un)" = "rabbitmq" ]
+}
- exec /usr/lib/rabbitmq/bin/rabbitmq-server "$@" @STDOUT_STDERR_REDIRECTION@
-elif [ `id -u` = `id -u rabbitmq` ] ; then
- if [ -f $PWD/.erlang.cookie ] ; then
- export HOME=`pwd`
- fi
- exec /usr/lib/rabbitmq/bin/${SCRIPT} "$@"
-elif [ `id -u` = 0 ] ; then
- @SU_RABBITMQ_SH_C@ "/usr/lib/rabbitmq/bin/${SCRIPT} ${CMDLINE}"
-else
- /usr/lib/rabbitmq/bin/${SCRIPT}
- echo
- echo "Only root or rabbitmq should run ${SCRIPT}"
- echo
- exit 1
-fi
+current_user_is_root() {
+ [ "$(id -u)" = 0 ]
+}
+
+calling_rabbitmq_server() {
+ [ "$SCRIPT" = "rabbitmq-server" ]
+}
+
+exec_rabbitmq_server() {
+ RABBITMQ_ENV=/usr/lib/rabbitmq/bin/rabbitmq-env
+ # RABBITMQ_SCRIPTS_DIR is used in rabbitmq-env
+ # shellcheck disable=SC2034
+ RABBITMQ_SCRIPTS_DIR="$(dirname "$RABBITMQ_ENV")"
+ # shellcheck source=/dev/null
+ . "$RABBITMQ_ENV"
+
+ exec /usr/lib/rabbitmq/bin/rabbitmq-server "$@" @STDOUT_STDERR_REDIRECTION@
+}
+
+exec_script_as_rabbitmq() {
+ HOME="$(cd ~rabbitmq && pwd)" exec "/usr/lib/rabbitmq/bin/$SCRIPT" "$@"
+}
+
+exec_script_as_root() {
+ @SU_RABBITMQ_SH_C@ "/usr/lib/rabbitmq/bin/$SCRIPT $CMDLINE"
+}
+
+run_script_help_and_fail() {
+ "/usr/lib/rabbitmq/bin/$SCRIPT" help
+
+ echo "
+Only root or rabbitmq can run $SCRIPT
+"
+ exit 1
+}
+
+main "$@"