summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/rabbitmq-defaults2
-rw-r--r--scripts/rabbitmq-defaults.bat2
-rw-r--r--scripts/rabbitmq-env3
-rwxr-xr-xscripts/rabbitmq-server8
-rw-r--r--scripts/rabbitmq-server.bat9
-rw-r--r--scripts/rabbitmq-service.bat11
-rw-r--r--scripts/rabbitmq.schema1578
7 files changed, 24 insertions, 1589 deletions
diff --git a/scripts/rabbitmq-defaults b/scripts/rabbitmq-defaults
index b5427eee46..b102b3619c 100644
--- a/scripts/rabbitmq-defaults
+++ b/scripts/rabbitmq-defaults
@@ -39,7 +39,7 @@ LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins
GENERATED_CONFIG_DIR=${SYS_PREFIX}/var/lib/rabbitmq/config
-RABBITMQ_CONFIG_ADDITIONAL=${SYS_PREFIX}/etc/rabbitmq/additional
+RABBITMQ_CONFIG_ADVANCED=${SYS_PREFIX}/etc/rabbitmq/advanced
PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
IO_THREAD_POOL_SIZE=64
diff --git a/scripts/rabbitmq-defaults.bat b/scripts/rabbitmq-defaults.bat
index 3c57b2ab34..7c351bf48a 100644
--- a/scripts/rabbitmq-defaults.bat
+++ b/scripts/rabbitmq-defaults.bat
@@ -42,7 +42,7 @@ set LOG_BASE=!RABBITMQ_BASE!\log
set MNESIA_BASE=!RABBITMQ_BASE!\db
set ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
set GENERATED_CONFIG_DIR=!RABBITMQ_BASE!\config
-set RABBITMQ_CONFIG_ADDITIONAL=!RABBITMQ_BASE!\additional
+set RABBITMQ_CONFIG_ADVANCED=!RABBITMQ_BASE!\advanced
REM PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
for /f "delims=" %%F in ("!TDP0!..\plugins") do set PLUGINS_DIR=%%~dpsF%%~nF%%~xF
diff --git a/scripts/rabbitmq-env b/scripts/rabbitmq-env
index 9a2b7acc3c..a360631a19 100644
--- a/scripts/rabbitmq-env
+++ b/scripts/rabbitmq-env
@@ -259,7 +259,8 @@ if [ "${RABBITMQ_DEV_ENV}" ]; then
RABBITMQ_ENABLED_PLUGINS_FILE="${enabled_plugins_file}"
fi
fi
-
+
+
if [ -d "${RABBITMQ_PLUGINS_DIR}" ]; then
# RabbitMQ was started with "make run-broker" from its own
# source tree. Take rabbit_common from the plugins directory.
diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server
index 1b95d9efb1..9f70c7f992 100755
--- a/scripts/rabbitmq-server
+++ b/scripts/rabbitmq-server
@@ -70,7 +70,7 @@ RABBITMQ_DIST_PORT=$RABBITMQ_DIST_PORT \
${RABBITMQ_NAME_TYPE} rabbitmqprelaunch$$ \
-conf_dir "${RABBITMQ_GENERATED_CONFIG_DIR}" \
-conf_script_dir "`dirname $0`" \
- -conf_additional "${RABBITMQ_CONFIG_ADDITIONAL}" \
+ -conf_advanced "${RABBITMQ_CONFIG_ADVANCED}" \
-extra "${RABBITMQ_NODENAME}"
PRELAUNCH_RESULT=$?
@@ -89,7 +89,11 @@ set -e
if [ -f "${RABBITMQ_CONFIG_FILE}.config" ]; then
RABBITMQ_CONFIG_ARG="-config ${RABBITMQ_CONFIG_FILE}"
elif [ -f "${RABBITMQ_CONFIG_FILE}.conf" ]; then
- RABBITMQ_CONFIG_ARG="-conf ${RABBITMQ_CONFIG_FILE} -conf_dir ${RABBITMQ_GENERATED_CONFIG_DIR} -conf_script_dir `dirname $0` -conf_additional ${RABBITMQ_CONFIG_ADDITIONAL}"
+ RABBITMQ_CONFIG_ARG="-conf ${RABBITMQ_CONFIG_FILE} \
+ -conf_dir ${RABBITMQ_GENERATED_CONFIG_DIR} \
+ -conf_script_dir `dirname $0` \
+ -conf_advanced ${RABBITMQ_CONFIG_ADVANCED} \
+ -conf_schema_dir ${RABBITMQ_HOME}/priv/schema"
fi
RABBITMQ_LISTEN_ARG=
diff --git a/scripts/rabbitmq-server.bat b/scripts/rabbitmq-server.bat
index d2c63d2036..2064dc1474 100644
--- a/scripts/rabbitmq-server.bat
+++ b/scripts/rabbitmq-server.bat
@@ -50,7 +50,8 @@ set RABBITMQ_CONFIG_FILE="!RABBITMQ_CONFIG_FILE!"
!RABBITMQ_NAME_TYPE! rabbitmqprelaunch!RANDOM!!TIME:~9! ^
-conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" ^
-conf_script_dir "%~dp0" ^
- -conf_additional "!RABBITMQ_CONFIG_ADDITIONAL!" ^
+ -conf_advanced "!RABBITMQ_CONFIG_ADVANCED!" ^
+ -conf_schema_dir "!RABBITMQ_HOME!\priv\schema" ^
-extra "!RABBITMQ_NODENAME!"
if ERRORLEVEL 2 (
@@ -66,7 +67,11 @@ set RABBITMQ_EBIN_PATH="-pa !RABBITMQ_EBIN_ROOT!"
if exist "!RABBITMQ_CONFIG_FILE!.config" (
set RABBITMQ_CONFIG_ARG=-config "!RABBITMQ_CONFIG_FILE!"
) else if exist "!RABBITMQ_CONFIG_FILE!.conf" (
- set RABBITMQ_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE!" -conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" -conf_script_dir "%~dp0" -conf_additional "!RABBITMQ_CONFIG_ADDITIONAL!"
+ set RABBITMQ_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE!" ^
+ -conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" ^
+ -conf_script_dir "%~dp0" ^
+ -conf_advanced "!RABBITMQ_CONFIG_ADVANCED!" ^
+ -conf_schema_dir "!RABBITMQ_HOME!\priv\schema"
) else (
set RABBITMQ_CONFIG_ARG=
)
diff --git a/scripts/rabbitmq-service.bat b/scripts/rabbitmq-service.bat
index 8de3330f2c..78ca812e8d 100644
--- a/scripts/rabbitmq-service.bat
+++ b/scripts/rabbitmq-service.bat
@@ -122,7 +122,8 @@ set RABBITMQ_CONFIG_FILE="!RABBITMQ_CONFIG_FILE!"
-s rabbit_prelaunch ^
-conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" ^
-conf_script_dir "!TDP0!" ^
- -conf_additional "!RABBITMQ_CONFIG_ADDITIONAL!" ^
+ -conf_advanced "!RABBITMQ_CONFIG_ADVANCED!" ^
+ -conf_schema_dir "!RABBITMQ_HOME!\priv\schema" ^
!RABBITMQ_NAME_TYPE! rabbitmqprelaunch!RANDOM!!TIME:~9!
if ERRORLEVEL 3 (
@@ -140,11 +141,13 @@ if ERRORLEVEL 3 (
if exist "!RABBITMQ_CONFIG_FILE!.config" (
set RABBITMQ_CONFIG_ARG=-config "!RABBITMQ_CONFIG_FILE!"
) else if exist "!RABBITMQ_CONFIG_FILE!.conf" (
- set RABBITMQ_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE!" -conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" -conf_script_dir "!TDP0!" -conf_additional "!RABBITMQ_CONFIG_ADDITIONAL!"
-) else (
rem Always specify generated config arguments, we cannot
rem assume generated file is available
- set RABBITMQ_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE!" -conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" -conf_script_dir "!TDP0!" -conf_additional "!RABBITMQ_CONFIG_ADDITIONAL!"
+ set RABBITMQ_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE!" ^
+ -conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" ^
+ -conf_script_dir "!TDP0!" ^
+ -conf_advanced "!RABBITMQ_CONFIG_ADVANCED!" ^
+ -conf_schema_dir "!RABBITMQ_HOME!\priv\schema"
)
set RABBITMQ_LISTEN_ARG=
diff --git a/scripts/rabbitmq.schema b/scripts/rabbitmq.schema
deleted file mode 100644
index b7663700cc..0000000000
--- a/scripts/rabbitmq.schema
+++ /dev/null
@@ -1,1578 +0,0 @@
-% ==============================
-% Rabbit app section
-% ==============================
-
-%%
-%% Network Connectivity
-%% ====================
-%%
-
-%% By default, RabbitMQ will listen on all interfaces, using
-%% the standard (reserved) AMQP port.
-%%
-%% {tcp_listeners, [5672]},
-%% To listen on a specific interface, provide a tuple of {IpAddress, Port}.
-%% For example, to listen only on localhost for both IPv4 and IPv6:
-%%
-%% {tcp_listeners, [{"127.0.0.1", 5672},
-%% {"::1", 5672}]},
-
-{mapping, "listeners.tcp.$name", "rabbit.tcp_listeners",[
- {datatype, [integer, ip]}
-]}.
-
-{translation, "rabbit.tcp_listeners",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("listeners.tcp", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-%% SSL listeners are configured in the same fashion as TCP listeners,
-%% including the option to control the choice of interface.
-%%
-%% {ssl_listeners, [5671]},
-
-{mapping, "listeners.ssl.$name", "rabbit.ssl_listeners",[
- {datatype, [integer, ip]}
-]}.
-
-{translation, "rabbit.ssl_listeners",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("listeners.ssl", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-%% Number of Erlang processes that will accept connections for the TCP
-%% and SSL listeners.
-%%
-%% {num_tcp_acceptors, 10},
-%% {num_ssl_acceptors, 1},
-
-{mapping, "num_acceptors.ssl", "rabbit.num_ssl_acceptors", [
- {datatype, integer}
-]}.
-
-{mapping, "num_acceptors.tcp", "rabbit.num_tcp_acceptors", [
- {datatype, integer}
-]}.
-
-
-%% Maximum time for AMQP 0-8/0-9/0-9-1 handshake (after socket connection
-%% and SSL handshake), in milliseconds.
-%%
-%% {handshake_timeout, 10000},
-
-{mapping, "handshake_timeout", "rabbit.handshake_timeout", [
- {datatype, integer}
-]}.
-
-%% Set to 'true' to perform reverse DNS lookups when accepting a
-%% connection. Hostnames will then be shown instead of IP addresses
-%% in rabbitmqctl and the management plugin.
-%%
-%% {reverse_dns_lookups, true},
-
-{mapping, "reverse_dns_lookups", "rabbit.reverse_dns_lookups", [
- {datatype, {enum, [true, false]}}
-]}.
-
-{mapping, "erlang.K", "vm_args.+K", [
- {default, "true"},
- {level, advanced}
-]}.
-
-%%
-%% Security / AAA
-%% ==============
-%%
-
-%% The default "guest" user is only permitted to access the server
-%% via a loopback interface (e.g. localhost).
-%% {loopback_users, [<<"guest">>]},
-%%
-%% Uncomment the following line if you want to allow access to the
-%% guest user from anywhere on the network.
-%% {loopback_users, []},
-
-{mapping, "loopback_users.$user", "rabbit.loopback_users", [
- {datatype, atom}
-]}.
-
-{translation, "rabbit.loopback_users",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("loopback_users", Conf),
- [ list_to_binary(U) || {["loopback_users", U], V} <- Settings, V == true ]
-end}.
-
-%% Configuring SSL.
-%% See http://www.rabbitmq.com/ssl.html for full documentation.
-%%
-%% {ssl_options, [{cacertfile, "/path/to/testca/cacert.pem"},
-%% {certfile, "/path/to/server/cert.pem"},
-%% {keyfile, "/path/to/server/key.pem"},
-%% {verify, verify_peer},
-%% {fail_if_no_peer_cert, false}]},
-
-%% SSL options section ========================================================
-
-{mapping, "ssl_options.verify", "rabbit.ssl_options.verify", [
- {datatype, {enum, [verify_peer, verify_none]}}]}.
-
-{mapping, "ssl_options.fail_if_no_peer_cert", "rabbit.ssl_options.fail_if_no_peer_cert", [
- {datatype, {enum, [true, false]}}]}.
-
-{mapping, "ssl_options.cacertfile", "rabbit.ssl_options.cacertfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "ssl_options.certfile", "rabbit.ssl_options.certfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "ssl_options.cacerts.$name", "rabbit.ssl_options.cacerts",
- [{datatype, string}]}.
-
-{translation, "rabbit.ssl_options.cacerts",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("ssl_options.cacerts", Conf),
- [ list_to_binary(V) || {_, V} <- Settings ]
-end}.
-
-{mapping, "ssl_options.cert", "rabbit.ssl_options.cert",
- [{datatype, string}]}.
-
-{translation, "rabbit.ssl_options.cert",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("ssl_options.cert", Conf))
-end}.
-
-{mapping, "ssl_options.client_renegotiation", "rabbit.ssl_options.client_renegotiation",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "ssl_options.crl_check", "rabbit.ssl_options.crl_check",
- [{datatype, [{enum, [true, false, peer, best_effort]}]}]}.
-
-{mapping, "ssl_options.depth", "rabbit.ssl_options.depth",
- [{datatype, integer}, {validators, ["byte"]}]}.
-
-{mapping, "ssl_options.dh", "rabbit.ssl_options.dh",
- [{datatype, string}]}.
-
-{translation, "rabbit.ssl_options.dh",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("ssl_options.dh", Conf))
-end}.
-
-{mapping, "ssl_options.dhfile", "rabbit.ssl_options.dhfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "ssl_options.honor_cipher_order", "rabbit.ssl_options.honor_cipher_order",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "ssl_options.key.RSAPrivateKey", "rabbit.ssl_options.key",
- [{datatype, string}]}.
-
-{mapping, "ssl_options.key.DSAPrivateKey", "rabbit.ssl_options.key",
- [{datatype, string}]}.
-
-{mapping, "ssl_options.key.PrivateKeyInfo", "rabbit.ssl_options.key",
- [{datatype, string}]}.
-
-{translation, "rabbit.ssl_options.key",
-fun(Conf) ->
- case cuttlefish_variable:filter_by_prefix("ssl_options.key", Conf) of
- [{[_,_,Key], Val}|_] -> {list_to_atom(Key), list_to_binary(Val)};
- _ -> undefined
- end
-end}.
-
-{mapping, "ssl_options.keyfile", "rabbit.ssl_options.keyfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "ssl_options.log_alert", "rabbit.ssl_options.log_alert",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "ssl_options.password", "rabbit.ssl_options.password",
- [{datatype, string}]}.
-
-{mapping, "ssl_options.psk_identity", "rabbit.ssl_options.psk_identity",
- [{datatype, string}]}.
-
-{mapping, "ssl_options.reuse_sessions", "rabbit.ssl_options.reuse_sessions",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "ssl_options.secure_renegotiate", "rabbit.ssl_options.secure_renegotiate",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "ssl_options.versions.$version", "rabbit.ssl_options.versions",
- [{datatype, atom}]}.
-
-{translation, "rabbit.ssl_options.versions",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("ssl_options.cacerts", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-%% ===========================================================================
-
-%% Choose the available SASL mechanism(s) to expose.
-%% The two default (built in) mechanisms are 'PLAIN' and
-%% 'AMQPLAIN'. Additional mechanisms can be added via
-%% plugins.
-%%
-%% See http://www.rabbitmq.com/authentication.html for more details.
-%%
-%% {auth_mechanisms, ['PLAIN', 'AMQPLAIN']},
-
-{mapping, "auth_mechanisms.$name", "rabbit.auth_mechanisms", [
- {datatype, atom}]}.
-
-{translation, "rabbit.auth_mechanisms",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("auth_mechanisms", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-
-%% Select an authentication database to use. RabbitMQ comes bundled
-%% with a built-in auth-database, based on mnesia.
-%%
-%% {auth_backends, [rabbit_auth_backend_internal]},
-
-{translation, "rabbit.auth_backends",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("auth_backends", Conf),
- BackendModule = fun
- (internal) -> rabbit_auth_backend_internal;
- (ldap) -> rabbit_auth_backend_ldap;
- (http) -> rabbit_auth_backend_http;
- (amqp) -> rabbit_auth_backend_amqp;
- (dummy) -> rabbit_auth_backend_dummy;
- (Other) when is_atom(Other) -> Other;
- (_) -> cuttlefish:invalid("Invalid auth backend")
- end,
- AuthBackends = [ {Num, {default, BackendModule(V)}} || {["auth_backends", Num], V} <- Settings ],
- AuthNBackends = [ {Num, {authn, BackendModule(V)}} || {["auth_backends", Num, "authn"], V} <- Settings ],
- AuthZBackends = [ {Num, {authz, BackendModule(V)}} || {["auth_backends", Num, "authz"], V} <- Settings ],
- Backends = lists:foldl(
- fun({NumStr, {Type, V}}, Acc) ->
- Num = case catch list_to_integer(NumStr) of
- N when is_integer(N) -> N;
- Err ->
- cuttlefish:invalid(
- iolist_to_binary(io_lib:format(
- "Auth backend number should be integer ~p", [Err])))
- end,
- NewVal = case dict:find(Num, Acc) of
- {ok, {AuthN, AuthZ}} ->
- case {Type, AuthN, AuthZ} of
- {authn, undefined, _} ->
- {V, AuthZ};
- {authz, _, undefined} ->
- {AuthN, V};
- _ ->
- cuttlefish:invalid(
- iolist_to_binary(
- io_lib:format(
- "Auth backend already defined for ~pth ~p backend",
- [Num, Type])))
- end;
- error ->
- case Type of
- authn -> {V, undefined};
- authz -> {undefined, V};
- default -> {V, V}
- end
- end,
- dict:store(Num, NewVal, Acc)
- end,
- dict:new(),
- AuthBackends ++ AuthNBackends ++ AuthZBackends),
- lists:map(
- fun
- ({Num, {undefined, AuthZ}}) ->
- cuttlefish:warn(
- io_lib:format(
- "Auth backend undefined for ~pth authz backend. Using ~p",
- [Num, AuthZ])),
- {AuthZ, AuthZ};
- ({Num, {AuthN, undefined}}) ->
- cuttlefish:warn(
- io_lib:format(
- "Auth backend undefined for ~pth authn backend. Using ~p",
- [Num, AuthN])),
- {AuthN, AuthN};
- ({_Num, {Auth, Auth}}) -> Auth;
- ({_Num, {AuthN, AuthZ}}) -> {AuthN, AuthZ}
- end,
- lists:keysort(1, dict:to_list(Backends)))
-end}.
-
-{mapping, "auth_backends.$num", "rabbit.auth_backends", [
- {datatype, atom}
-]}.
-
-{mapping, "auth_backends.$num.authn", "rabbit.auth_backends",[
- {datatype, atom}
-]}.
-
-{mapping, "auth_backends.$num.authz", "rabbit.auth_backends",[
- {datatype, atom}
-]}.
-
-%% This pertains to both the rabbitmq_auth_mechanism_ssl plugin and
-%% STOMP ssl_cert_login configurations. See the rabbitmq_stomp
-%% configuration section later in this file and the README in
-%% https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl for further
-%% details.
-%%
-%% To use the SSL cert's CN instead of its DN as the username
-%%
-%% {ssl_cert_login_from, common_name},
-
-{mapping, "ssl_cert_login_from", "rabbit.ssl_cert_login_from", [
- {datatype, {enum, [distinguished_name, common_name]}}
-]}.
-
-%% SSL handshake timeout, in milliseconds.
-%%
-%% {ssl_handshake_timeout, 5000},
-
-{mapping, "ssl_handshake_timeout", "rabbit.ssl_handshake_timeout", [
- {datatype, integer}
-]}.
-
-%% Password hashing implementation. Will only affect newly
-%% created users. To recalculate hash for an existing user
-%% it's necessary to update her password.
-%%
-%% When importing definitions exported from versions earlier
-%% than 3.6.0, it is possible to go back to MD5 (only do this
-%% as a temporary measure!) by setting this to rabbit_password_hashing_md5.
-%%
-%% To use SHA-512, set to rabbit_password_hashing_sha512.
-%%
-%% {password_hashing_module, rabbit_password_hashing_sha256},
-
-{mapping, "password_hashing_module", "rabbit.password_hashing_module", [
- {datatype, atom}
-]}.
-
-%%
-%% Default User / VHost
-%% ====================
-%%
-
-%% On first start RabbitMQ will create a vhost and a user. These
-%% config items control what gets created. See
-%% http://www.rabbitmq.com/access-control.html for further
-%% information about vhosts and access control.
-%%
-%% {default_vhost, <<"/">>},
-%% {default_user, <<"guest">>},
-%% {default_pass, <<"guest">>},
-%% {default_permissions, [<<".*">>, <<".*">>, <<".*">>]},
-
-{mapping, "default_vhost", "rabbit.default_vhost", [
- {datatype, string}
-]}.
-
-{translation, "rabbit.default_vhost",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("default_vhost", Conf))
-end}.
-
-{mapping, "default_user", "rabbit.default_user", [
- {datatype, string}
-]}.
-
-{translation, "rabbit.default_user",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("default_user", Conf))
-end}.
-
-{mapping, "default_pass", "rabbit.default_pass", [
- {datatype, string}
-]}.
-
-{translation, "rabbit.default_pass",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("default_pass", Conf))
-end}.
-
-{mapping, "default_permissions.configure", "rabbit.default_permissions", [
- {datatype, string}
-]}.
-
-{mapping, "default_permissions.read", "rabbit.default_permissions", [
- {datatype, string}
-]}.
-
-{mapping, "default_permissions.write", "rabbit.default_permissions", [
- {datatype, string}
-]}.
-
-{translation, "rabbit.default_permissions",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("default_permissions", Conf),
- Configure = proplists:get_value(["default_permissions", "configure"], Settings),
- Read = proplists:get_value(["default_permissions", "read"], Settings),
- Write = proplists:get_value(["default_permissions", "write"], Settings),
- [list_to_binary(Configure), list_to_binary(Read), list_to_binary(Write)]
-end}.
-
-%% Tags for default user
-%%
-%% For more details about tags, see the documentation for the
-%% Management Plugin at http://www.rabbitmq.com/management.html.
-%%
-%% {default_user_tags, [administrator]},
-
-{mapping, "default_user_tags.$tag", "rabbit.default_user_tags",
- [{datatype, {enum, [true, false]}}]}.
-
-{translation, "rabbit.default_user_tags",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("default_user_tags", Conf),
- [ list_to_atom(Key) || {[_,Key], Val} <- Settings, Val == true ]
-end}.
-
-%%
-%% Additional network and protocol related configuration
-%% =====================================================
-%%
-
-%% Set the default AMQP heartbeat delay (in seconds).
-%%
-%% {heartbeat, 600},
-
-{mapping, "heartbeat", "rabbit.heartbeat", [{datatype, integer}]}.
-
-%% Set the max permissible size of an AMQP frame (in bytes).
-%%
-%% {frame_max, 131072},
-
-{mapping, "frame_max", "rabbit.frame_max", [{datatype, bytesize}]}.
-
-%% Set the max frame size the server will accept before connection
-%% tuning occurs
-%%
-%% {initial_frame_max, 4096},
-
-{mapping, "initial_frame_max", "rabbit.initial_frame_max", [{datatype, bytesize}]}.
-
-%% Set the max permissible number of channels per connection.
-%% 0 means "no limit".
-%%
-%% {channel_max, 128},
-
-{mapping, "channel_max", "rabbit.channel_max", [{datatype, integer}]}.
-
-%% Customising Socket Options.
-%%
-%% See (http://www.erlang.org/doc/man/inet.html#setopts-2) for
-%% further documentation.
-%%
-%% {tcp_listen_options, [{backlog, 128},
-%% {nodelay, true},
-%% {exit_on_close, false}]},
-
-%% TCP listener section ======================================================
-
-{mapping, "tcp_listen_options.backlog", "rabbit.tcp_listen_options.backlog", [
- {datatype, integer}
-]}.
-
-{mapping, "tcp_listen_options.nodelay", "rabbit.tcp_listen_options.nodelay", [
- {datatype, {enum, [true, false]}}
-]}.
-
-{mapping, "tcp_listen_options.buffer", "rabbit.tcp_listen_options.buffer",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.delay_send", "rabbit.tcp_listen_options.delay_send",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "tcp_listen_options.dontroute", "rabbit.tcp_listen_options.dontroute",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "tcp_listen_options.exit_on_close", "rabbit.tcp_listen_options.exit_on_close",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "tcp_listen_options.fd", "rabbit.tcp_listen_options.fd",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.high_msgq_watermark", "rabbit.tcp_listen_options.high_msgq_watermark",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.high_watermark", "rabbit.tcp_listen_options.high_watermark",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.keepalive", "rabbit.tcp_listen_options.keepalive",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "tcp_listen_options.low_msgq_watermark", "rabbit.tcp_listen_options.low_msgq_watermark",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.low_watermark", "rabbit.tcp_listen_options.low_watermark",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.port", "rabbit.tcp_listen_options.port",
- [{datatype, integer}, {validators, ["port"]}]}.
-
-{mapping, "tcp_listen_options.priority", "rabbit.tcp_listen_options.priority",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.recbuf", "rabbit.tcp_listen_options.recbuf",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.send_timeout", "rabbit.tcp_listen_options.send_timeout",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.send_timeout_close", "rabbit.tcp_listen_options.send_timeout_close",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "tcp_listen_options.sndbuf", "rabbit.tcp_listen_options.sndbuf",
- [{datatype, integer}]}.
-
-{mapping, "tcp_listen_options.tos", "rabbit.tcp_listen_options.tos",
- [{datatype, integer}]}.
-
-%% ==========================================================================
-
-%%
-%% Resource Limits & Flow Control
-%% ==============================
-%%
-%% See http://www.rabbitmq.com/memory.html for full details.
-
-%% Memory-based Flow Control threshold.
-%%
-%% {vm_memory_high_watermark, 0.4},
-
-%% Alternatively, we can set a limit (in bytes) of RAM used by the node.
-%%
-%% {vm_memory_high_watermark, {absolute, 1073741824}},
-%%
-%% Or you can set absolute value using memory units (with RabbitMQ 3.6.0+).
-%%
-%% {vm_memory_high_watermark, {absolute, "1024M"}},
-%%
-%% Supported units suffixes:
-%%
-%% kb, KB: kibibytes (2^10 bytes)
-%% mb, MB: mebibytes (2^20)
-%% gb, GB: gibibytes (2^30)
-
-{mapping, "vm_memory_high_watermark.relative", "rabbit.vm_memory_high_watermark", [
- {datatype, float}]}.
-
-{mapping, "vm_memory_high_watermark.absolute", "rabbit.vm_memory_high_watermark", [
- {datatype, [integer, string]}]}.
-
-
-{translation, "rabbit.vm_memory_high_watermark",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("vm_memory_high_watermark", Conf),
- Absolute = proplists:get_value(["vm_memory_high_watermark", "absolute"], Settings),
- Relative = proplists:get_value(["vm_memory_high_watermark", "relative"], Settings),
- case {Absolute, Relative} of
- {undefined, undefined} -> cuttlefish:invalid("No vm watermark defined");
- {_, undefined} -> {absolute, Absolute};
- _ -> Relative
- end
-end}.
-
-%% Fraction of the high watermark limit at which queues start to
-%% page message out to disc in order to free up memory.
-%%
-%% Values greater than 0.9 can be dangerous and should be used carefully.
-%%
-%% {vm_memory_high_watermark_paging_ratio, 0.5},
-
-{mapping, "vm_memory_high_watermark_paging_ratio",
- "rabbit.vm_memory_high_watermark_paging_ratio",
- [{datatype, float}, {validators, ["less_than_1"]}]}.
-
-%% Interval (in milliseconds) at which we perform the check of the memory
-%% levels against the watermarks.
-%%
-%% {memory_monitor_interval, 2500},
-
-{mapping, "memory_monitor_interval", "rabbit.memory_monitor_interval",
- [{datatype, integer}]}.
-
-%% Set disk free limit (in bytes). Once free disk space reaches this
-%% lower bound, a disk alarm will be set - see the documentation
-%% listed above for more details.
-%%
-%% {disk_free_limit, 50000000},
-%%
-%% Or you can set it using memory units (same as in vm_memory_high_watermark)
-%% with RabbitMQ 3.6.0+.
-%% {disk_free_limit, "50MB"},
-%% {disk_free_limit, "50000kB"},
-%% {disk_free_limit, "2GB"},
-
-%% Alternatively, we can set a limit relative to total available RAM.
-%%
-%% Values lower than 1.0 can be dangerous and should be used carefully.
-%% {disk_free_limit, {mem_relative, 2.0}},
-
-{mapping, "disk_free_limit.relative", "rabbit.disk_free_limit", [
- {datatype, float}]}.
-
-{mapping, "disk_free_limit.absolute", "rabbit.disk_free_limit", [
- {datatype, [integer, string]}]}.
-
-
-{translation, "rabbit.disk_free_limit",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("disk_free_limit", Conf),
- Absolute = proplists:get_value(["disk_free_limit", "absolute"], Settings),
- Relative = proplists:get_value(["disk_free_limit", "relative"], Settings),
- case {Absolute, Relative} of
- {undefined, undefined} -> cuttlefish:invalid("No disk limit defined");
- {_, undefined} -> Absolute;
- _ -> {mem_relative, Relative}
- end
-end}.
-
-%%
-%% Clustering
-%% =====================
-%%
-
-%% How to respond to cluster partitions.
-%% See http://www.rabbitmq.com/partitions.html for further details.
-%%
-%% {cluster_partition_handling, ignore},
-
-{mapping, "cluster_partition_handling", "rabbit.cluster_partition_handling",
- [{datatype, {enum, [ignore, pause_minority, autoheal, pause_if_all_down]}}]}.
-
-{mapping, "cluster_partition_handling.pause_if_all_down.recover",
- "rabbit.cluster_partition_handling",
- [{datatype, {enum, [ignore, autoheal]}}]}.
-
-{mapping, "cluster_partition_handling.pause_if_all_down.node.$name",
- "rabbit.cluster_partition_handling",
- [{datatype, atom}]}.
-
-{translation, "rabbit.cluster_partition_handling",
-fun(Conf) ->
- case cuttlefish:conf_get("cluster_partition_handling", Conf) of
- pause_if_all_down ->
- PauseIfAllDownNodes = cuttlefish_variable:filter_by_prefix(
- "cluster_partition_handling.pause_if_all_down.node",
- Conf),
- case PauseIfAllDownNodes of
- [] ->
- cuttlefish:invalid("Nodes required for pause_if_all_down");
- _ ->
- Nodes = [ V || {K,V} <- PauseIfAllDownNodes ],
- PauseIfAllDownRecover = cuttlefish:conf_get(
- "cluster_partition_handling.pause_if_all_down.recover",
- Conf),
- case PauseIfAllDownRecover of
- Recover when Recover == ignore; Recover == autoheal ->
- {pause_if_all_down, Nodes, Recover};
- Invalid ->
- cuttlefish:invalid("Recover strategy required for pause_if_all_down")
- end
- end;
- Other -> Other
- end
-end}.
-
-%% Mirror sync batch size, in messages. Increasing this will speed
-%% up syncing but total batch size in bytes must not exceed 2 GiB.
-%% Available in RabbitMQ 3.6.0 or later.
-%%
-%% {mirroring_sync_batch_size, 4096},
-
-{mapping, "mirroring_sync_batch_size", "rabbit.mirroring_sync_batch_size",
- [{datatype, bytesize}, {validators, ["size_less_than_2G"]}]}.
-
-%% Make clustering happen *automatically* at startup - only applied
-%% to nodes that have just been reset or started for the first time.
-%% See http://www.rabbitmq.com/clustering.html#auto-config for
-%% further details.
-%%
-%% {cluster_nodes, {['rabbit@my.host.com'], disc}},
-
-{mapping, "cluster_nodes.disc.$node", "rabbit.cluster_nodes",
- [{datatype, atom}]}.
-
-{mapping, "cluster_nodes.ram.$node", "rabbit.cluster_nodes",
- [{datatype, atom}]}.
-
-{translation, "rabbit.cluster_nodes",
-fun(Conf) ->
- DiskNodes = [ V || {_, V} <- cuttlefish_variable:filter_by_prefix("cluster_nodes.disc", Conf)],
- RamNodes = [ V || {_, V} <- cuttlefish_variable:filter_by_prefix("cluster_nodes.ram", Conf)],
-
- case {DiskNodes, RamNodes} of
- {_, []} -> {DiskNodes, disc};
- {[], _} -> {RamNodes, ram}
- end
-end}.
-
-
-%% Interval (in milliseconds) at which we send keepalive messages
-%% to other cluster members. Note that this is not the same thing
-%% as net_ticktime; missed keepalive messages will not cause nodes
-%% to be considered down.
-%%
-%% {cluster_keepalive_interval, 10000},
-
-{mapping, "cluster_keepalive_interval", "rabbit.cluster_keepalive_interval",
- [{datatype, integer}]}.
-
-%%
-%% Statistics Collection
-%% =====================
-%%
-
-%% Set (internal) statistics collection granularity.
-%%
-%% {collect_statistics, none},
-
-{mapping, "collect_statistics", "rabbit.collect_statistics",
- [{datatype, {enum, [none, coarse, fine]}}]}.
-
-%% Statistics collection interval (in milliseconds). Increasing
-%% this will reduce the load on management database.
-%%
-%% {collect_statistics_interval, 5000},
-
-{mapping, "collect_statistics_interval", "rabbit.collect_statistics_interval",
- [{datatype, integer}]}.
-
-%%
-%% Misc/Advanced Options
-%% =====================
-%%
-%% NB: Change these only if you understand what you are doing!
-%%
-
-%% Explicitly enable/disable hipe compilation.
-%%
-%% {hipe_compile, true},
-
-{mapping, "hipe_compile", "rabbit.hipe_compile",
- [{datatype, {enum, [true, false]}}]}.
-
-%% Timeout used when waiting for Mnesia tables in a cluster to
-%% become available.
-%%
-%% {mnesia_table_loading_timeout, 30000},
-
-{mapping, "mnesia_table_loading_timeout", "rabbit.mnesia_table_loading_timeout",
- [{datatype, integer}]}.
-
-%% Size in bytes below which to embed messages in the queue index. See
-%% http://www.rabbitmq.com/persistence-conf.html
-%%
-%% {queue_index_embed_msgs_below, 4096}
-
-{mapping, "queue_index_embed_msgs_below", "rabbit.queue_index_embed_msgs_below",
- [{datatype, bytesize}]}.
-
-%% ----------------------------------------------------------------------------
-%% Advanced Erlang Networking/Clustering Options.
-%%
-%% See http://www.rabbitmq.com/clustering.html for details
-%% ----------------------------------------------------------------------------
-%% Sets the net_kernel tick time.
-%% Please see http://erlang.org/doc/man/kernel_app.html and
-%% http://www.rabbitmq.com/nettick.html for further details.
-%%
-%% {kernel, [{net_ticktime, 60}]},
-{mapping, "kernel.net_ticktime", "kernel.net_ticktime",
- [{datatype, integer}]}.
-
-{mapping, "kernel.inet_dist_listen_min", "kernel.inet_dist_listen_min",
- [{datatype, integer}]}.
-
-{mapping, "kernel.inet_dist_listen_max", "kernel.inet_dist_listen_max",
- [{datatype, integer}]}.
-
-%% ----------------------------------------------------------------------------
-%% RabbitMQ AMQP 1.0 Support
-%%
-%% See https://github.com/rabbitmq/rabbitmq-amqp1.0/blob/stable/README.md
-%% for details
-%% ----------------------------------------------------------------------------
-
-% {rabbitmq_amqp1_0,[
-%% Connections that are not authenticated with SASL will connect as this
-%% account. See the README for more information.
-%%
-%% Please note that setting this will allow clients to connect without
-%% authenticating!
-%%
-%% {default_user, "guest"},
-{mapping, "amqp1_0.default_user", "rabbitmq_amqp1_0.default_user",
- [{datatype, string}]}.
-%% Enable protocol strict mode. See the README for more information.
-%%
-%% {protocol_strict_mode, false}
-% ]},
-{mapping, "amqp1_0.protocol_strict_mode", "rabbitmq_amqp1_0.protocol_strict_mode",
- [{datatype, {enum, [true, false]}}]}.
-
-
-% ==========================
-% Lager section
-% ==========================
-
-{mapping, "log.dir", "lager.log_root", [
- {datatype, string},
- {validators, ["dir_writable"]}]}.
-
-{mapping, "log.console", "lager.handlers", [
- {datatype, {enum, [true, false]}}
-]}.
-
-{mapping, "log.syslog", "lager.handlers", [
- {datatype, {enum, [true, false]}}
-]}.
-{mapping, "log.file", "lager.handlers", [
- {datatype, [{enum, [false]}, string]}
-]}.
-
-{mapping, "log.file.level", "lager.handlers", [
- {datatype, {enum, [debug, info, warning, error]}}
-]}.
-{mapping, "log.$handler.level", "lager.handlers", [
- {datatype, {enum, [debug, info, warning, error]}}
-]}.
-{mapping, "log.file.rotation.date", "lager.handlers", [
- {datatype, string}
-]}.
-{mapping, "log.file.rotation.size", "lager.handlers", [
- {datatype, integer}
-]}.
-{mapping, "log.file.rotation.count", "lager.handlers", [
- {datatype, integer}
-]}.
-
-{mapping, "log.syslog.identity", "lager.handlers", [
- {datatype, string}
-]}.
-{mapping, "log.syslog.facility", "lager.handlers", [
- {datatype, atom}
-]}.
-
-{translation, "lager.handlers",
-fun(Conf) ->
- ConsoleHandler = case cuttlefish:conf_get("log.console", Conf, false) of
- true ->
- ConsoleLevel = cuttlefish:conf_get("log.console.level", Conf, info),
- [{lager_console_backend, ConsoleLevel}];
- false -> []
- end,
- FileHandler = case cuttlefish:conf_get("log.file", Conf, false) of
- false -> [];
- File ->
- FileLevel = cuttlefish:conf_get("log.file.level", Conf, info),
- RotationDate = cuttlefish:conf_get("log.file.rotation.date", Conf, ""),
- RotationSize = cuttlefish:conf_get("log.file.rotation.size", Conf, 0),
- RotationCount = cuttlefish:conf_get("log.file.rotation.count", Conf, 10),
- [{lager_file_backend, [{file, File},
- {level, FileLevel},
- {date, RotationDate},
- {size, RotationSize},
- {count, RotationCount}]}]
- end,
- SyslogHandler = case cuttlefish:conf_get("log.syslog", Conf, false) of
- false -> [];
- true ->
- SyslogLevel = cuttlefish:conf_get("log.syslog.level", Conf, info),
- Identity = cuttlefish:conf_get("log.syslog.identity", Conf),
- Facility = cuttlefish:conf_get("log.syslog.facility", Conf),
- [{lager_syslog_backend, [Identity, Facility, SyslogLevel]}]
- end,
- case ConsoleHandler ++ FileHandler ++ SyslogHandler of
- [] -> undefined;
- Other -> Other
- end
-end}.
-
-
-% ===============================
-% Validators
-% ===============================
-
-{validator, "size_less_than_2G", "Byte size should be less than 2G and greater than 0",
-fun(Size) when is_integer(Size) ->
- Size > 0 andalso Size < 2147483648
-end}.
-
-{validator, "less_than_1", "Flooat is not beetween 0 and 1",
-fun(Float) when is_float(Float) ->
- Float > 0 andalso Float < 1
-end}.
-
-{validator, "port", "Invalid port number",
-fun(Port) when is_integer(Port) ->
- Port > 0 andalso Port < 65535
-end}.
-
-{validator, "byte", "Integer is not 0<i<255",
-fun(Int) when is_integer(Int) ->
- Int > 0 andalso Int < 255
-end}.
-
-{validator, "dir_writable", "Cannot create file in dir",
-fun(Dir) ->
- TestFile = filename:join(Dir, "test_file"),
- file:delete(TestFile),
- Res = ok == file:write_file(TestFile, <<"test">>),
- file:delete(TestFile),
- Res
-end}.
-
-{validator, "file_accessible", "file doesnt exist",
-fun(File) ->
- ReadFile = file:read_file_info(File),
- element(1, ReadFile) == ok
-end}.
-%% ----------------------------------------------------------------------------
-%% RabbitMQ LDAP Plugin
-%%
-%% See http://www.rabbitmq.com/ldap.html for details.
-%%
-%% ----------------------------------------------------------------------------
-
-% {rabbitmq_auth_backend_ldap,
-% [
-%%
-%% Connecting to the LDAP server(s)
-%% ================================
-%%
-
-%% Specify servers to bind to. You *must* set this in order for the plugin
-%% to work properly.
-%%
-%% {servers, ["your-server-name-goes-here"]},
-
-{mapping, "ldap.servers.$server", "rabbitmq_auth_backend_ldap.servers",
- [{datatype, string}]}.
-
-{translation, "rabbitmq_auth_backend_ldap.servers",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("ldap.servers", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-%% Connect to the LDAP server using SSL
-%%
-%% {use_ssl, false},
-
-{mapping, "ldap.use_ssl", "rabbitmq_auth_backend_ldap.use_ssl",
- [{datatype, {enum, [true, false]}}]}.
-
-%% Specify the LDAP port to connect to
-%%
-%% {port, 389},
-
-{mapping, "ldap.port", "rabbitmq_auth_backend_ldap.port",
- [{datatype, integer}]}.
-
-%% LDAP connection timeout, in milliseconds or 'infinity'
-%%
-%% {timeout, infinity},
-
-{mapping, "ldap.timeout", "rabbitmq_auth_backend_ldap.timeout",
- [{datatype, [integer, {atom, infinity}]}]}.
-
-%% Enable logging of LDAP queries.
-%% One of
-%% - false (no logging is performed)
-%% - true (verbose logging of the logic used by the plugin)
-%% - network (as true, but additionally logs LDAP network traffic)
-%%
-%% Defaults to false.
-%%
-%% {log, false},
-
-{mapping, "ldap.log", "rabbitmq_auth_backend_ldap.log",
- [{datatype, {enum, [true, false, network]}}]}.
-
-%%
-%% Authentication
-%% ==============
-%%
-
-%% Pattern to convert the username given through AMQP to a DN before
-%% binding
-%%
-%% {user_dn_pattern, "cn=${username},ou=People,dc=example,dc=com"},
-
-{mapping, "ldap.user_dn_pattern", "rabbitmq_auth_backend_ldap.user_dn_pattern",
- [{datatype, string}]}.
-
-%% Alternatively, you can convert a username to a Distinguished
-%% Name via an LDAP lookup after binding. See the documentation for
-%% full details.
-
-%% When converting a username to a dn via a lookup, set these to
-%% the name of the attribute that represents the user name, and the
-%% base DN for the lookup query.
-%%
-%% {dn_lookup_attribute, "userPrincipalName"},
-%% {dn_lookup_base, "DC=gopivotal,DC=com"},
-
-{mapping, "ldap.dn_lookup_attribute", "rabbitmq_auth_backend_ldap.dn_lookup_attribute",
- [{datatype, string}]}.
-
-{mapping, "ldap.dn_lookup_base", "rabbitmq_auth_backend_ldap.dn_lookup_base",
- [{datatype, string}]}.
-
-%% Controls how to bind for authorisation queries and also to
-%% retrieve the details of users logging in without presenting a
-%% password (e.g., SASL EXTERNAL).
-%% One of
-%% - as_user (to bind as the authenticated user - requires a password)
-%% - anon (to bind anonymously)
-%% - {UserDN, Password} (to bind with a specified user name and password)
-%%
-%% Defaults to 'as_user'.
-%%
-%% {other_bind, as_user},
-
-{mapping, "ldap.other_bind", "rabbitmq_auth_backend_ldap.other_bind",
- [{datatype, {enum, [as_user, anon]}}]}.
-
-{mapping, "ldap.other_bind.user_dn", "rabbitmq_auth_backend_ldap.other_bind",
- [{datatype, string}]}.
-
-{mapping, "ldap.other_bind.password", "rabbitmq_auth_backend_ldap.other_bind",
- [{datatype, string}]}.
-
-{translation, "rabbitmq_auth_backend_ldap.other_bind",
-fun(Conf) ->
- case cuttlefish:conf_get("ldap.other_bind", Conf) of
- as_user -> as_user;
- anon -> anon;
- _ ->
- User = cuttlefish:conf_get("ldap.other_bind.user_dn", Conf),
- Pass = cuttlefish:conf_get("ldap.other_bind.password", Conf),
- case {User, Pass} of
- {undefined, _} -> as_user;
- {_, undefined} -> as_user;
- _ -> {User, Pass}
- end
- end
-end}.
-
-%%
-%% Authorisation
-%% =============
-%%
-
-%% The LDAP plugin can perform a variety of queries against your
-%% LDAP server to determine questions of authorisation. See
-%% http://www.rabbitmq.com/ldap.html#authorisation for more
-%% information.
-
-%% Set the query to use when determining vhost access
-%%
-%% {vhost_access_query, {in_group,
-%% "ou=${vhost}-users,ou=vhosts,dc=example,dc=com"}},
-
-%% Set the query to use when determining resource (e.g., queue) access
-%%
-%% {resource_access_query, {constant, true}},
-
-%% Set queries to determine which tags a user has
-%%
-%% {tag_queries, []}
-% ]},
- % %% ----------------------------------------------------------------------------
- % %% RabbitMQ Management Plugin
- % %%
- % %% See http://www.rabbitmq.com/management.html for details
- % %% ----------------------------------------------------------------------------
-
- % {rabbitmq_management,
- % [%% Pre-Load schema definitions from the following JSON file. See
-%% http://www.rabbitmq.com/management.html#load-definitions
-%%
-%% {load_definitions, "/path/to/schema.json"},
-{mapping, "management.load_definitions", "rabbitmq_management.load_definitions",
- [{datatype, string},
- {validators, ["file_accessible"]}]}.
-
-%% Log all requests to the management HTTP API to a file.
-%%
-%% {http_log_dir, "/path/to/access.log"},
-
-{mapping, "management.http_log_dir", "rabbitmq_management.http_log_dir",
- [{datatype, string},
- {validators, ["file_accessible"]}]}.
-
-
-%% Change the port on which the HTTP listener listens,
-%% specifying an interface for the web server to bind to.
-%% Also set the listener to use SSL and provide SSL options.
-%%
-%% {listener, [{port, 12345},
-%% {ip, "127.0.0.1"},
-%% {ssl, true},
-%% {ssl_opts, [{cacertfile, "/path/to/cacert.pem"},
-%% {certfile, "/path/to/cert.pem"},
-%% {keyfile, "/path/to/key.pem"}]}]},
-
-{mapping, "management.listeners.port", "rabbitmq_management.listeners.port",
- [{datatype, integer}]}.
-
-{mapping, "management.listeners.ip", "rabbitmq_management.listeners.ip",
- [{datatype, string},
- {validators, ["is_ip"]}]}.
-
-{mapping, "management.listeners.ssl", "rabbitmq_management.listeners.ssl",
- [{datatype, {enum, [true, false]}}]}.
-
-
-%% SSL options section ========================================================
-
-{mapping, "management.listeners.ssl_opts.verify", "rabbitmq_management.listeners.ssl_opts.verify", [
- {datatype, {enum, [verify_peer, verify_none]}}]}.
-
-{mapping, "management.listeners.ssl_opts.fail_if_no_peer_cert", "rabbitmq_management.listeners.ssl_opts.fail_if_no_peer_cert", [
- {datatype, {enum, [true, false]}}]}.
-
-{mapping, "management.listeners.ssl_opts.cacertfile", "rabbitmq_management.listeners.ssl_opts.cacertfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "management.listeners.ssl_opts.certfile", "rabbitmq_management.listeners.ssl_opts.certfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "management.listeners.ssl_opts.cacerts.$name", "rabbitmq_management.listeners.ssl_opts.cacerts",
- [{datatype, string}]}.
-
-{translation, "rabbitmq_management.listeners.ssl_opts.cacerts",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("management.listeners.ssl_opts.cacerts", Conf),
- [ list_to_binary(V) || {_, V} <- Settings ]
-end}.
-
-{mapping, "management.listeners.ssl_opts.cert", "rabbitmq_management.listeners.ssl_opts.cert",
- [{datatype, string}]}.
-
-{translation, "rabbitmq_management.listeners.ssl_opts.cert",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("management.listeners.ssl_opts.cert", Conf))
-end}.
-
-{mapping, "management.listeners.ssl_opts.client_renegotiation", "rabbitmq_management.listeners.ssl_opts.client_renegotiation",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "management.listeners.ssl_opts.crl_check", "rabbitmq_management.listeners.ssl_opts.crl_check",
- [{datatype, [{enum, [true, false, peer, best_effort]}]}]}.
-
-{mapping, "management.listeners.ssl_opts.depth", "rabbitmq_management.listeners.ssl_opts.depth",
- [{datatype, integer}, {validators, ["byte"]}]}.
-
-{mapping, "management.listeners.ssl_opts.dh", "rabbitmq_management.listeners.ssl_opts.dh",
- [{datatype, string}]}.
-
-{translation, "rabbitmq_management.listeners.ssl_opts.dh",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("management.listeners.ssl_opts.dh", Conf))
-end}.
-
-{mapping, "management.listeners.ssl_opts.dhfile", "rabbitmq_management.listeners.ssl_opts.dhfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "management.listeners.ssl_opts.honor_cipher_order", "rabbitmq_management.listeners.ssl_opts.honor_cipher_order",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "management.listeners.ssl_opts.key.RSAPrivateKey", "rabbitmq_management.listeners.ssl_opts.key",
- [{datatype, string}]}.
-
-{mapping, "management.listeners.ssl_opts.key.DSAPrivateKey", "rabbitmq_management.listeners.ssl_opts.key",
- [{datatype, string}]}.
-
-{mapping, "management.listeners.ssl_opts.key.PrivateKeyInfo", "rabbitmq_management.listeners.ssl_opts.key",
- [{datatype, string}]}.
-
-{translation, "rabbitmq_management.listeners.ssl_opts.key",
-fun(Conf) ->
- case cuttlefish_variable:filter_by_prefix("management.listeners.ssl_opts.key", Conf) of
- [{[_,_,Key], Val}|_] -> {list_to_atom(Key), list_to_binary(Val)};
- _ -> undefined
- end
-end}.
-
-{mapping, "management.listeners.ssl_opts.keyfile", "rabbitmq_management.listeners.ssl_opts.keyfile",
- [{datatype, string}, {validators, ["file_accessible"]}]}.
-
-{mapping, "management.listeners.ssl_opts.log_alert", "rabbitmq_management.listeners.ssl_opts.log_alert",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "management.listeners.ssl_opts.password", "rabbitmq_management.listeners.ssl_opts.password",
- [{datatype, string}]}.
-
-{mapping, "management.listeners.ssl_opts.psk_identity", "rabbitmq_management.listeners.ssl_opts.psk_identity",
- [{datatype, string}]}.
-
-{mapping, "management.listeners.ssl_opts.reuse_sessions", "rabbitmq_management.listeners.ssl_opts.reuse_sessions",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "management.listeners.ssl_opts.secure_renegotiate", "rabbitmq_management.listeners.ssl_opts.secure_renegotiate",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "management.listeners.ssl_opts.versions.$version", "rabbitmq_management.listeners.ssl_opts.versions",
- [{datatype, atom}]}.
-
-{translation, "rabbitmq_management.listeners.ssl_opts.versions",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("management.listeners.ssl_opts.cacerts", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-%% ===========================================================================
-
-
-%% One of 'basic', 'detailed' or 'none'. See
-%% http://www.rabbitmq.com/management.html#fine-stats for more details.
-%% {rates_mode, basic},
-{mapping, "management.rates_mode", "rabbitmq_management.rates_mode",
- [{datatype, {enum, [basic, detailed, none]}}]}.
-
-%% Configure how long aggregated data (such as message rates and queue
-%% lengths) is retained. Please read the plugin's documentation in
-%% http://www.rabbitmq.com/management.html#configuration for more
-%% details.
-%%
-%% {sample_retention_policies,
-%% [{global, [{60, 5}, {3600, 60}, {86400, 1200}]},
-%% {basic, [{60, 5}, {3600, 60}]},
-%% {detailed, [{10, 5}]}]}
-% ]},
-
-{mapping, "management.sample_retention_policies.$section.$interval",
- "rabbitmq_management.sample_retention_policies",
- [{datatype, integer}]}.
-
-{translation, "rabbitmq_management.sample_retention_policies",
-fun(Conf) ->
- Global = cuttlefish_variable:filter_by_prefix("management.sample_retention_policies.global", Conf),
- Basic = cuttlefish_variable:filter_by_prefix("management.sample_retention_policies.basic", Conf),
- Detailed = cuttlefish_variable:filter_by_prefix("management.sample_retention_policies.detailed", Conf),
- TranslateKey = fun("minute") -> 60;
- ("hour") -> 3600;
- ("day") -> 86400;
- (Other) -> list_to_integer(Other)
- end,
- TranslatePolicy = fun(Section) ->
- [ {TranslateKey(Key), Val} || {[_,_,_,Key], Val} <- Section ]
- end,
- [{global, TranslatePolicy(Global)},
- {basic, TranslatePolicy(Basic)},
- {detailed, TranslatePolicy(Detailed)}]
-end}.
-
-{validator, "file_accessible", "file exists",
-fun(File) ->
- ReadFile = file:read_file_info(File),
- element(1, ReadFile) == ok
-end}.
-
-{validator, "is_ip", "String is ip",
-fun(IpStr) ->
- Res = inet:parse_address(IpStr),
- element(1, Res) == ok
-end}.%% ----------------------------------------------------------------------------
-%% RabbitMQ MQTT Adapter
-%%
-%% See https://github.com/rabbitmq/rabbitmq-mqtt/blob/stable/README.md
-%% for details
-%% ----------------------------------------------------------------------------
-
-% {rabbitmq_mqtt,
-% [%% Set the default user name and password. Will be used as the default login
-%% if a connecting client provides no other login details.
-%%
-%% Please note that setting this will allow clients to connect without
-%% authenticating!
-%%
-%% {default_user, <<"guest">>},
-%% {default_pass, <<"guest">>},
-
-{mapping, "mqtt.default_user", "rabbitmq_mqtt.default_user", [
- {datatype, string}
-]}.
-
-{mapping, "mqtt.default_pass", "rabbitmq_mqtt.default_pass", [
- {datatype, string}
-]}.
-
-{translation, "rabbitmq_mqtt.default_user",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("mqtt.default_user", Conf))
-end}.
-
-{translation, "rabbitmq_mqtt.default_pass",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("mqtt.default_pass", Conf))
-end}.
-
-%% Enable anonymous access. If this is set to false, clients MUST provide
-%% login information in order to connect. See the default_user/default_pass
-%% configuration elements for managing logins without authentication.
-%%
-%% {allow_anonymous, true},
-
-{mapping, "mqtt.allow_anonymous", "rabbitmq_mqtt.allow_anonymous",
- [{datatype, {enum, [true, false]}}]}.
-
-%% If you have multiple chosts, specify the one to which the
-%% adapter connects.
-%%
-%% {vhost, <<"/">>},
-
-{mapping, "mqtt.vhost", "rabbitmq_mqtt.vhost", [{datatype, string}]}.
-
-{translation, "rabbitmq_mqtt.vhost",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("mqtt.vhost", Conf))
-end}.
-
-%% Specify the exchange to which messages from MQTT clients are published.
-%%
-%% {exchange, <<"amq.topic">>},
-
-{mapping, "mqtt.exchange", "rabbitmq_mqtt.exchange", [{datatype, string}]}.
-
-{translation, "rabbitmq_mqtt.exchange",
-fun(Conf) ->
- list_to_binary(cuttlefish:conf_get("mqtt.exchange", Conf))
-end}.
-
-%% Specify TTL (time to live) to control the lifetime of non-clean sessions.
-%%
-%% {subscription_ttl, 1800000},
-{mapping, "mqtt.subscription_ttl", "rabbitmq_mqtt.subscription_ttl", [
- {datatype, integer}
-]}.
-
-%% Set the prefetch count (governing the maximum number of unacknowledged
-%% messages that will be delivered).
-%%
-%% {prefetch, 10},
-{mapping, "mqtt.prefetch", "rabbitmq_mqtt.prefetch",
- [{datatype, integer}]}.
-
-%% TCP/SSL Configuration (as per the broker configuration).
-%%
-%% {tcp_listeners, [1883]},
-%% {ssl_listeners, []},
-
-{mapping, "mqtt.listeners.tcp.$name", "rabbitmq_mqtt.tcp_listeners",[
- {datatype, [integer, ip]}
-]}.
-
-{translation, "rabbitmq_mqtt.tcp_listeners",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("mqtt.listeners.tcp", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-{mapping, "mqtt.listeners.ssl.$name", "rabbitmq_mqtt.ssl_listeners",[
- {datatype, [integer, ip]}
-]}.
-
-{translation, "rabbitmq_mqtt.ssl_listeners",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("mqtt.listeners.ssl", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-%% Number of Erlang processes that will accept connections for the TCP
-%% and SSL listeners.
-%%
-%% {num_tcp_acceptors, 10},
-%% {num_ssl_acceptors, 1},
-
-{mapping, "mqtt.num_acceptors.ssl", "rabbitmq_mqtt.num_ssl_acceptors", [
- {datatype, integer}
-]}.
-
-{mapping, "mqtt.num_acceptors.tcp", "rabbitmq_mqtt.num_tcp_acceptors", [
- {datatype, integer}
-]}.
-
-
-%% TCP/Socket options (as per the broker configuration).
-%%
-%% {tcp_listen_options, [{backlog, 128},
-%% {nodelay, true}]}
-% ]},
-
-
-%% TCP listener section ======================================================
-
-{mapping, "mqtt.tcp_listen_options.backlog", "rabbitmq_mqtt.tcp_listen_options.backlog", [
- {datatype, integer}
-]}.
-
-{mapping, "mqtt.tcp_listen_options.nodelay", "rabbitmq_mqtt.tcp_listen_options.nodelay", [
- {datatype, {enum, [true, false]}}
-]}.
-
-{mapping, "mqtt.tcp_listen_options.buffer", "rabbitmq_mqtt.tcp_listen_options.buffer",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.delay_send", "rabbitmq_mqtt.tcp_listen_options.delay_send",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "mqtt.tcp_listen_options.dontroute", "rabbitmq_mqtt.tcp_listen_options.dontroute",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "mqtt.tcp_listen_options.exit_on_close", "rabbitmq_mqtt.tcp_listen_options.exit_on_close",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "mqtt.tcp_listen_options.fd", "rabbitmq_mqtt.tcp_listen_options.fd",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.high_msgq_watermark", "rabbitmq_mqtt.tcp_listen_options.high_msgq_watermark",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.high_watermark", "rabbitmq_mqtt.tcp_listen_options.high_watermark",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.keepalive", "rabbitmq_mqtt.tcp_listen_options.keepalive",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "mqtt.tcp_listen_options.low_msgq_watermark", "rabbitmq_mqtt.tcp_listen_options.low_msgq_watermark",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.low_watermark", "rabbitmq_mqtt.tcp_listen_options.low_watermark",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.port", "rabbitmq_mqtt.tcp_listen_options.port",
- [{datatype, integer}, {validators, ["port"]}]}.
-
-{mapping, "mqtt.tcp_listen_options.priority", "rabbitmq_mqtt.tcp_listen_options.priority",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.recbuf", "rabbitmq_mqtt.tcp_listen_options.recbuf",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.send_timeout", "rabbitmq_mqtt.tcp_listen_options.send_timeout",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.send_timeout_close", "rabbitmq_mqtt.tcp_listen_options.send_timeout_close",
- [{datatype, {enum, [true, false]}}]}.
-
-{mapping, "mqtt.tcp_listen_options.sndbuf", "rabbitmq_mqtt.tcp_listen_options.sndbuf",
- [{datatype, integer}]}.
-
-{mapping, "mqtt.tcp_listen_options.tos", "rabbitmq_mqtt.tcp_listen_options.tos",
- [{datatype, integer}]}.
-
-%% ==========================================================================
-%% ----------------------------------------------------------------------------
-%% RabbitMQ Stomp Adapter
-%%
-%% See http://www.rabbitmq.com/stomp.html for details
-%% ----------------------------------------------------------------------------
-
-% {rabbitmq_stomp,
-% [%% Network Configuration - the format is generally the same as for the broker
-
-%% Listen only on localhost (ipv4 & ipv6) on a specific port.
-%% {tcp_listeners, [{"127.0.0.1", 61613},
-%% {"::1", 61613}]},
-
-{mapping, "stomp.listeners.tcp.$name", "rabbitmq_stomp.tcp_listeners",[
- {datatype, [integer, ip]}
-]}.
-
-{translation, "rabbitmq_stomp.tcp_listeners",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("stomp.listeners.tcp", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-{mapping, "stomp.listeners.ssl.$name", "rabbitmq_stomp.ssl_listeners",[
- {datatype, [integer, ip]}
-]}.
-
-{translation, "rabbitmq_stomp.ssl_listeners",
-fun(Conf) ->
- Settings = cuttlefish_variable:filter_by_prefix("stomp.listeners.ssl", Conf),
- [ V || {_, V} <- Settings ]
-end}.
-
-%% Number of Erlang processes that will accept connections for the TCP
-%% and SSL listeners.
-%%
-%% {num_tcp_acceptors, 10},
-%% {num_ssl_acceptors, 1},
-
-{mapping, "stomp.num_acceptors.ssl", "rabbitmq_stomp.num_ssl_acceptors", [
- {datatype, integer}
-]}.
-
-{mapping, "stomp.num_acceptors.tcp", "rabbitmq_stomp.num_tcp_acceptors", [
- {datatype, integer}
-]}.
-
-%% Additional SSL options
-
-%% Extract a name from the client's certificate when using SSL.
-%%
-%% {ssl_cert_login, true},
-
-{mapping, "stomp.ssl_cert_login", "rabbitmq_stomp.ssl_cert_login",
- [{datatype, {enum, [true, false]}}]}.
-
-%% Set a default user name and password. This is used as the default login
-%% whenever a CONNECT frame omits the login and passcode headers.
-%%
-%% Please note that setting this will allow clients to connect without
-%% authenticating!
-%%
-%% {default_user, [{login, "guest"},
-%% {passcode, "guest"}]},
-
-{mapping, "stomp.default_user", "rabbitmq_stomp.default_user.login", [
- {datatype, string}
-]}.
-
-{mapping, "stomp.default_pass", "rabbitmq_stomp.default_user.passcode", [
- {datatype, string}
-]}.
-
-%% If a default user is configured, or you have configured use SSL client
-%% certificate based authentication, you can choose to allow clients to
-%% omit the CONNECT frame entirely. If set to true, the client is
-%% automatically connected as the default user or user supplied in the
-%% SSL certificate whenever the first frame sent on a session is not a
-%% CONNECT frame.
-%%
-%% {implicit_connect, true}
-% ]},
-{mapping, "stomp.implicit_connect", "rabbitmq_stomp.implicit_connect",
- [{datatype, {enum, [true, false]}}]}.
-
-%% ==========================================================================
-%% ----------------------------------------------------------------------------
-%% RabbitMQ HTTP Authorization
-%%
-%% ----------------------------------------------------------------------------
-
-{mapping, "http.user_path", "rabbitmq_auth_backend_http.user_path",
- [{datatype, string}, {validators, ["uri"]}]}.
-
-{mapping, "http.vhost_path", "rabbitmq_auth_backend_http.vhost_path",
- [{datatype, string}, {validators, ["uri"]}]}.
-
-{mapping, "http.resource_path", "rabbitmq_auth_backend_http.resource_path",
- [{datatype, string}, {validators, ["uri"]}]}.
-
-