165 lines
4.6 KiB
Bash
Executable File
165 lines
4.6 KiB
Bash
Executable File
#!/bin/sh
|
|
## This Source Code Form is subject to the terms of the Mozilla Public
|
|
## License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
## file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
##
|
|
## Copyright (c) 2007-2025 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
|
|
##
|
|
|
|
# Exit immediately if a pipeline, which may consist of a single simple command,
|
|
# a list, or a compound command returns a non-zero status
|
|
set -e
|
|
|
|
# Each variable or function that is created or modified is given the export
|
|
# attribute and marked for export to the environment of subsequent commands.
|
|
set -a
|
|
|
|
# shellcheck source=/dev/null
|
|
#
|
|
# TODO: when shellcheck adds support for relative paths, change to
|
|
# shellcheck source=./rabbitmq-env
|
|
. "${0%/*}"/rabbitmq-env
|
|
|
|
# Uncomment for debugging
|
|
# echo "\$# : $#"
|
|
# echo "\$0: $0"
|
|
# echo "\$1: $1"
|
|
# echo "\$2: $2"
|
|
# echo "\$3: $3"
|
|
# echo "\$4: $4"
|
|
# echo "\$5: $5"
|
|
# set -x
|
|
|
|
_tmp_help_requested='false'
|
|
|
|
for _tmp_argument in "$@"
|
|
do
|
|
if [ "$_tmp_argument" = '--help' ]
|
|
then
|
|
_tmp_help_requested='true'
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "$1" = 'help' ] || [ "$_tmp_help_requested" = 'true' ]
|
|
then
|
|
unset _tmp_help_requested
|
|
# In this case, we do not require input and can exit early since
|
|
# help was requested
|
|
#
|
|
run_escript "${ESCRIPT_DIR:?must be defined}"/rabbitmqctl 'noinput' "$@"
|
|
exit "$?"
|
|
fi
|
|
|
|
unset _tmp_help_requested
|
|
|
|
maybe_noinput='noinput'
|
|
|
|
case "$@" in
|
|
*add_user*)
|
|
if [ "$#" -eq 2 ]
|
|
then
|
|
# In this case, input is required to provide the password:
|
|
#
|
|
# rabbitmqctl add_user bob
|
|
#
|
|
maybe_noinput='input'
|
|
elif [ "$#" -eq 3 ]
|
|
then
|
|
# In these cases, input depends on the arguments provided:
|
|
#
|
|
# rabbitmqctl add_user bob --pre-hashed-password (input needed)
|
|
# rabbitmqctl add_user bob bobpassword (NO input needed)
|
|
# rabbitmqctl add_user --pre-hashed-password bob (input needed)
|
|
#
|
|
for _tmp_argument in "$@"
|
|
do
|
|
if [ "$_tmp_argument" = '--pre-hashed-password' ]
|
|
then
|
|
maybe_noinput='input'
|
|
break
|
|
fi
|
|
done
|
|
elif [ "$#" -gt 3 ]
|
|
then
|
|
# If there are 4 or more arguments, no input is needed:
|
|
#
|
|
# rabbitmqctl add_user bob --pre-hashed-password HASHVALUE
|
|
# rabbitmqctl add_user bob bobpassword IGNORED
|
|
# rabbitmqctl add_user --pre-hashed-password bob HASHVALUE
|
|
#
|
|
maybe_noinput='noinput'
|
|
fi
|
|
;;
|
|
*authenticate_user*)
|
|
if [ "$#" -eq 2 ]
|
|
then
|
|
# In this case, input is required to provide the password:
|
|
#
|
|
# rabbitmqctl authenticate_user bob
|
|
#
|
|
maybe_noinput='input'
|
|
elif [ "$#" -gt 2 ]
|
|
then
|
|
# If there are 2 or more arguments, no input is needed:
|
|
#
|
|
maybe_noinput='noinput'
|
|
fi
|
|
;;
|
|
*change_password*)
|
|
maybe_noinput='input'
|
|
if [ "$#" -gt 2 ]
|
|
then
|
|
# If there are 3 or more arguments, no input is needed:
|
|
#
|
|
# rabbitmqctl change_password sue foobar
|
|
# rabbitmqctl change_password sue newpassword IGNORED
|
|
#
|
|
maybe_noinput='noinput'
|
|
fi
|
|
;;
|
|
*decode*|*encode*)
|
|
# It is unlikely that these commands will be run in a shell script loop
|
|
# with redirection, so always assume that stdin input is needed
|
|
#
|
|
maybe_noinput='input'
|
|
;;
|
|
*eval*)
|
|
if [ "$#" -eq 1 ]
|
|
then
|
|
# If there is only one argument, 'eval', then input is required
|
|
#
|
|
# rabbitmqctl eval
|
|
#
|
|
maybe_noinput='input'
|
|
fi
|
|
;;
|
|
*hash_password*)
|
|
if [ "$#" -eq 1 ]
|
|
then
|
|
# If there is only one argument, 'hash_password', then input is required
|
|
#
|
|
# rabbitmqctl hash_password
|
|
#
|
|
maybe_noinput='input'
|
|
fi
|
|
;;
|
|
*import_definitions*)
|
|
if [ "$#" -eq 1 ]
|
|
then
|
|
# If there is only one argument, 'import_definitions', then input is required
|
|
#
|
|
# rabbitmqctl import_definitions
|
|
#
|
|
maybe_noinput='input'
|
|
fi
|
|
;;
|
|
*)
|
|
maybe_noinput='noinput'
|
|
;;
|
|
esac
|
|
|
|
unset _tmp_argument
|
|
|
|
run_escript "${ESCRIPT_DIR:?must be defined}"/rabbitmqctl "$maybe_noinput" "$@"
|