diff options
author | Michael Klishin <klishinm@vmware.com> | 2021-09-28 12:32:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-28 12:32:44 +0300 |
commit | d88129d3cafc919e1e2bcde0fcec5e551f8a6dbf (patch) | |
tree | df8760ff530b46feb82099205a4572f6c725a86c | |
parent | 5d86a7cacf489b2383066d4d1fc813a63836b8ab (diff) | |
parent | b9e6aad035dcc763e568c4c731bc97786104072d (diff) | |
download | rabbitmq-server-git-d88129d3cafc919e1e2bcde0fcec5e551f8a6dbf.tar.gz |
Merge pull request #3514 from carlhoerberg/advertised_tls_host
Support for advertising different hostname for TLS stream connections
4 files changed, 30 insertions, 3 deletions
diff --git a/deps/rabbitmq_stream/priv/schema/rabbitmq_stream.schema b/deps/rabbitmq_stream/priv/schema/rabbitmq_stream.schema index 9e9fc2f4b4..0a4fc277ac 100644 --- a/deps/rabbitmq_stream/priv/schema/rabbitmq_stream.schema +++ b/deps/rabbitmq_stream/priv/schema/rabbitmq_stream.schema @@ -193,10 +193,19 @@ fun(Conf) -> list_to_binary(cuttlefish:conf_get("stream.advertised_host", Conf)) end}. +{mapping, "stream.advertised_tls_host", "rabbitmq_stream.advertised_tls_host", [ + {datatype, string} +]}. + +{translation, "rabbitmq_stream.advertised_tls_host", +fun(Conf) -> + list_to_binary(cuttlefish:conf_get("stream.advertised_tls_host", Conf)) +end}. + {mapping, "stream.advertised_port", "rabbitmq_stream.advertised_port", [ {datatype, integer} ]}. {mapping, "stream.advertised_tls_port", "rabbitmq_stream.advertised_tls_port", [ {datatype, integer} -]}.
\ No newline at end of file +]}. diff --git a/deps/rabbitmq_stream/src/rabbit_stream.erl b/deps/rabbitmq_stream/src/rabbit_stream.erl index 9f22b1a11f..cbb4df51fd 100644 --- a/deps/rabbitmq_stream/src/rabbit_stream.erl +++ b/deps/rabbitmq_stream/src/rabbit_stream.erl @@ -20,6 +20,7 @@ -export([start/2, host/0, + tls_host/0, port/0, tls_port/0, kill_connection/1]). @@ -44,6 +45,15 @@ start(_Type, _Args) -> {queue_type, ?STREAM_QUEUE_TYPE}]), rabbit_stream_sup:start_link(). +tls_host() -> + case application:get_env(rabbitmq_stream, advertised_tls_host, undefined) + of + undefined -> + hostname_from_node(); + Host -> + rabbit_data_coercion:to_binary(Host) + end. + host() -> case application:get_env(rabbitmq_stream, advertised_host, undefined) of diff --git a/deps/rabbitmq_stream/src/rabbit_stream_reader.erl b/deps/rabbitmq_stream/src/rabbit_stream_reader.erl index 5b4acc5f3e..91c0df8be0 100644 --- a/deps/rabbitmq_stream/src/rabbit_stream_reader.erl +++ b/deps/rabbitmq_stream/src/rabbit_stream_reader.erl @@ -1374,7 +1374,13 @@ handle_frame_pre_auth(Transport, VirtualHost, {socket, S}, #{}), - AdvertisedHost = rabbit_stream:host(), + AdvertisedHost = + case TransportLayer of + tcp -> + rabbit_stream:host(); + ssl -> + rabbit_stream:tls_host() + end, AdvertisedPort = case TransportLayer of tcp -> diff --git a/deps/rabbitmq_stream/test/config_schema_SUITE_data/rabbitmq_stream.snippets b/deps/rabbitmq_stream/test/config_schema_SUITE_data/rabbitmq_stream.snippets index 76d10453bf..eb7f81b55b 100644 --- a/deps/rabbitmq_stream/test/config_schema_SUITE_data/rabbitmq_stream.snippets +++ b/deps/rabbitmq_stream/test/config_schema_SUITE_data/rabbitmq_stream.snippets @@ -54,9 +54,11 @@ [rabbitmq_stream]}, {advertised_host_port, "stream.advertised_host = some-host + stream.advertised_tls_host = some-other-host stream.advertised_port = 5556 stream.advertised_tls_port = 5553", [{rabbitmq_stream,[{advertised_host, <<"some-host">>}, + {advertised_tls_host, <<"some-other-host">>}, {advertised_port, 5556}, {advertised_tls_port, 5553}]}], [rabbitmq_stream]}, @@ -72,4 +74,4 @@ [{rabbitmq_stream,[{initial_credits, 100000}, {credits_required_for_unblocking, 25000}]}], [rabbitmq_stream]} -].
\ No newline at end of file +]. |