summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2021-09-28 12:32:44 +0300
committerGitHub <noreply@github.com>2021-09-28 12:32:44 +0300
commitd88129d3cafc919e1e2bcde0fcec5e551f8a6dbf (patch)
treedf8760ff530b46feb82099205a4572f6c725a86c
parent5d86a7cacf489b2383066d4d1fc813a63836b8ab (diff)
parentb9e6aad035dcc763e568c4c731bc97786104072d (diff)
downloadrabbitmq-server-git-d88129d3cafc919e1e2bcde0fcec5e551f8a6dbf.tar.gz
Merge pull request #3514 from carlhoerberg/advertised_tls_host
Support for advertising different hostname for TLS stream connections
-rw-r--r--deps/rabbitmq_stream/priv/schema/rabbitmq_stream.schema11
-rw-r--r--deps/rabbitmq_stream/src/rabbit_stream.erl10
-rw-r--r--deps/rabbitmq_stream/src/rabbit_stream_reader.erl8
-rw-r--r--deps/rabbitmq_stream/test/config_schema_SUITE_data/rabbitmq_stream.snippets4
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
+].