From 92a42df115c4546c4d5f444812a09fc0dced602d Mon Sep 17 00:00:00 2001 From: Thomas Powell Date: Tue, 1 Oct 2024 16:30:19 +0100 Subject: [PATCH 1/2] Support proxy scheme. --- .../com/databricks/sdk/core/ProxyConfig.java | 10 +++++++++ .../databricks/sdk/core/utils/ProxyUtils.java | 21 +++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java index 8374bb3a5..7a00a0764 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ProxyConfig.java @@ -6,6 +6,7 @@ public class ProxyConfig { private String username; private String password; private ProxyAuthType proxyAuthType; + private String scheme; private Boolean useSystemProperties; // a list of hosts that should be reached directly, bypassing the proxy. // This is a list of patterns separated by '|'. The patterns may start or end with a '*' for @@ -70,6 +71,15 @@ public ProxyConfig setProxyAuthType(ProxyAuthType proxyAuthType) { return this; } + public String getScheme() { + return scheme; + } + + public ProxyConfig setScheme(String scheme) { + this.scheme = scheme; + return this; + } + public Boolean getUseSystemProperties() { return useSystemProperties; } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java index b02a38d39..681250300 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java @@ -33,14 +33,15 @@ public static void setupProxy(ProxyConfig config, HttpClientBuilder builder) { Integer proxyPort = null; String proxyUser = null; String proxyPassword = null; + String proxyScheme = null; ProxyConfig.ProxyAuthType proxyAuthType = null; if (config.getUseSystemProperties() != null && config.getUseSystemProperties()) { builder.useSystemProperties(); - String protocol = System.getProperty("https.proxyHost") != null ? "https" : "http"; - proxyHost = System.getProperty(protocol + ".proxyHost"); - proxyPort = Integer.parseInt(System.getProperty(protocol + ".proxyPort")); - proxyUser = System.getProperty(protocol + ".proxyUser"); - proxyPassword = System.getProperty(protocol + ".proxyPassword"); + proxyScheme = System.getProperty("https.proxyHost") != null ? "https" : "http"; + proxyHost = System.getProperty(proxyScheme + ".proxyHost"); + proxyPort = Integer.parseInt(System.getProperty(proxyScheme + ".proxyPort")); + proxyUser = System.getProperty(proxyScheme + ".proxyUser"); + proxyPassword = System.getProperty(proxyScheme + ".proxyPassword"); proxyAuthType = config.getProxyAuthType(); } // Override system properties if proxy configuration is explicitly set @@ -50,7 +51,8 @@ public static void setupProxy(ProxyConfig config, HttpClientBuilder builder) { proxyUser = config.getUsername(); proxyPassword = config.getPassword(); proxyAuthType = config.getProxyAuthType(); - builder.setProxy(new HttpHost(proxyHost, proxyPort)); + proxyScheme = config.getScheme(); + builder.setProxy(new HttpHost(proxyHost, proxyPort, proxyScheme)); } if (proxyHost == null) { // No proxy is set in system properties or in the config @@ -58,9 +60,9 @@ public static void setupProxy(ProxyConfig config, HttpClientBuilder builder) { } if (config.getNonProxyHosts() != null) { builder.setRoutePlanner( - new CustomRoutePlanner(new HttpHost(proxyHost, proxyPort), config.getNonProxyHosts())); + new CustomRoutePlanner(new HttpHost(proxyHost, proxyPort, proxyScheme), config.getNonProxyHosts())); } - setupProxyAuth(proxyHost, proxyPort, proxyAuthType, proxyUser, proxyPassword, builder); + setupProxyAuth(proxyHost, proxyPort, proxyAuthType, proxyUser, proxyPassword, proxyScheme, builder); } /** @@ -79,11 +81,12 @@ public static void setupProxyAuth( ProxyConfig.ProxyAuthType proxyAuthType, String proxyUser, String proxyPassword, + String proxyScheme, HttpClientBuilder builder) { if (proxyAuthType == null) { return; } - AuthScope authScope = new AuthScope(proxyHost, proxyPort); + AuthScope authScope = new AuthScope(proxyHost, proxyPort, null, proxyScheme); switch (proxyAuthType) { case NONE: break; From 9c1e1913e56d4511020f743ccf00ac1080f43b4d Mon Sep 17 00:00:00 2001 From: Thomas Powell Date: Tue, 1 Oct 2024 19:06:57 +0100 Subject: [PATCH 2/2] fix --- .../main/java/com/databricks/sdk/core/utils/ProxyUtils.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java index 681250300..ef1a1cb60 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/utils/ProxyUtils.java @@ -62,7 +62,7 @@ public static void setupProxy(ProxyConfig config, HttpClientBuilder builder) { builder.setRoutePlanner( new CustomRoutePlanner(new HttpHost(proxyHost, proxyPort, proxyScheme), config.getNonProxyHosts())); } - setupProxyAuth(proxyHost, proxyPort, proxyAuthType, proxyUser, proxyPassword, proxyScheme, builder); + setupProxyAuth(proxyHost, proxyPort, proxyAuthType, proxyUser, proxyPassword, builder); } /** @@ -81,12 +81,11 @@ public static void setupProxyAuth( ProxyConfig.ProxyAuthType proxyAuthType, String proxyUser, String proxyPassword, - String proxyScheme, HttpClientBuilder builder) { if (proxyAuthType == null) { return; } - AuthScope authScope = new AuthScope(proxyHost, proxyPort, null, proxyScheme); + AuthScope authScope = new AuthScope(proxyHost, proxyPort); switch (proxyAuthType) { case NONE: break;