From 87b1885d0caf2fe60117d105059b3c56163fdb69 Mon Sep 17 00:00:00 2001 From: Igor Khrol Date: Tue, 18 Jul 2023 08:50:26 +0300 Subject: [PATCH 1/2] Respect system proxy settings in WebClient HTTP(S) proxy settings are applied only in some specific cases when `configureSsl` is called with some non-null params. They should be always used. --- .../com/provectus/kafka/ui/util/WebClientConfigurator.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java index e0815828e23..32a22e8e534 100644 --- a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java +++ b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java @@ -31,6 +31,10 @@ public class WebClientConfigurator { public WebClientConfigurator() { configureObjectMapper(defaultOM()); + var httpClient = HttpClient + .create() + .proxyWithSystemProperties(); + builder.clientConnector(new ReactorClientHttpConnector(httpClient)); } private static ObjectMapper defaultOM() { From e459c9e49403d02e9ceb50e31365e4b02e149ddb Mon Sep 17 00:00:00 2001 From: Igor Khrol Date: Tue, 18 Jul 2023 09:42:51 +0300 Subject: [PATCH 2/2] Create HttpClient once and DRY code a bit --- .../kafka/ui/util/WebClientConfigurator.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java index 32a22e8e534..c5aca5ad716 100644 --- a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java +++ b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java @@ -28,13 +28,12 @@ public class WebClientConfigurator { private final WebClient.Builder builder = WebClient.builder(); + private HttpClient httpClient = HttpClient + .create() + .proxyWithSystemProperties(); public WebClientConfigurator() { configureObjectMapper(defaultOM()); - var httpClient = HttpClient - .create() - .proxyWithSystemProperties(); - builder.clientConnector(new ReactorClientHttpConnector(httpClient)); } private static ObjectMapper defaultOM() { @@ -94,12 +93,7 @@ private WebClientConfigurator configureSsl( // Create webclient SslContext context = contextBuilder.build(); - var httpClient = HttpClient - .create() - .secure(t -> t.sslContext(context)) - .proxyWithSystemProperties(); - - builder.clientConnector(new ReactorClientHttpConnector(httpClient)); + httpClient = httpClient.secure(t -> t.sslContext(context)); return this; } @@ -135,6 +129,6 @@ public WebClientConfigurator configureCodecs(Consumer con } public WebClient build() { - return builder.build(); + return builder.clientConnector(new ReactorClientHttpConnector(httpClient)).build(); } }