Skip to content
This repository has been archived by the owner on Feb 28, 2024. It is now read-only.

Commit

Permalink
Merge pull request #85 from synopsys-sig/SIGINT-1178
Browse files Browse the repository at this point in the history
no_proxy support for wildcard
  • Loading branch information
kishorikumar authored Oct 4, 2023
2 parents 3a7e5d8 + cabda8b commit 2189c78
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
Expand Down Expand Up @@ -68,7 +69,7 @@ public static boolean isStringNullOrBlank(String str) {

public static HttpURLConnection getHttpURLConnection(URL url, EnvVars envVars, LoggerWrapper logger) {
try {
String proxy = getProxy(url, envVars);
String proxy = getProxy(url, envVars, logger);
if (proxy.equals(ApplicationConstants.NO_PROXY)) {
return (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);
} else {
Expand All @@ -78,8 +79,6 @@ public static HttpURLConnection getHttpURLConnection(URL url, EnvVars envVars, L
new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyURL.getHost(), proxyURL.getPort())));
setDefaultProxyAuthenticator(proxyURL.getUserInfo());

logger.info("Proxy is enabled");

return connection;
}
} catch (IOException e) {
Expand All @@ -89,21 +88,41 @@ public static HttpURLConnection getHttpURLConnection(URL url, EnvVars envVars, L
return null;
}

public static String getProxy(URL url, EnvVars envVars) {
public static String getProxy(URL url, EnvVars envVars, LoggerWrapper logger) throws IOException {
String noProxy = getEnvOrSystemProxyDetails(ApplicationConstants.NO_PROXY, envVars);
if (!isStringNullOrBlank(noProxy)) {
if (noProxy.contains(url.toString())) {
return ApplicationConstants.NO_PROXY;
logger.info("Found NO_PROXY configuration - " + noProxy);
String[] noProxies = noProxy.split(",");

if (noProxies.length > 0) {
for (String noProxyHost : noProxies) {
boolean hostFoundInNoProxy = false;
if (noProxyHost.startsWith("*") && noProxyHost.length() == 1) {
hostFoundInNoProxy = true;
} else if (noProxyHost.startsWith("*") && noProxyHost.length() > 2) {
noProxyHost = noProxyHost.substring(2);
}

if (!hostFoundInNoProxy && url.toString().contains(noProxyHost)) {
hostFoundInNoProxy = true;
}

if (hostFoundInNoProxy) {
return ApplicationConstants.NO_PROXY;
}
}
}
}

String httpsProxy = getEnvOrSystemProxyDetails(ApplicationConstants.HTTPS_PROXY, envVars);
if (!isStringNullOrBlank(httpsProxy)) {
logger.info("Found HTTPS_PROXY configuration - " + getMaskedProxyUrl(httpsProxy));
return httpsProxy;
}

String httpProxy = getEnvOrSystemProxyDetails(ApplicationConstants.HTTP_PROXY, envVars);
if (!isStringNullOrBlank(httpProxy)) {
logger.info("Found HTTP_PROXY configuration - " + getMaskedProxyUrl(httpProxy));
return httpProxy;
}

Expand Down Expand Up @@ -139,4 +158,14 @@ protected PasswordAuthentication getPasswordAuthentication() {
}
}

private static String getMaskedProxyUrl(String proxyUrlString) throws MalformedURLException {
URL proxyUrl = new URL(proxyUrlString);
String userInfo = proxyUrl.getUserInfo();
if (!isStringNullOrBlank(userInfo) && userInfo.split(":").length > 1) {
return proxyUrlString.replace(userInfo.split(":")[1], "*****");
}

return proxyUrlString;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -101,24 +101,24 @@ public void getHttpURLConnectionTest() {
}

@Test
public void getProxyTest() {
public void getProxyTest() throws IOException {
EnvVars envVars = new EnvVars();

assertEquals(ApplicationConstants.NO_PROXY, Utility.getProxy(url, envVars));
assertEquals(ApplicationConstants.NO_PROXY, Utility.getProxy(url, envVars, logger));

envVars.put("NO_PROXY", "https://test-url.com, https://fake-url.com");

assertEquals(ApplicationConstants.NO_PROXY, Utility.getProxy(url, envVars));
assertEquals(ApplicationConstants.NO_PROXY, Utility.getProxy(url, envVars, logger));

envVars.put("HTTP_PROXY", "https://fake-proxy.com:1010");
envVars.replace("NO_PROXY", "https://test-url.com");
envVars.put("HTTPS_PROXY", "https://fake-proxy.com:1010");

assertEquals(envVars.get("HTTPS_PROXY"), Utility.getProxy(url, envVars));
assertEquals(envVars.get("HTTPS_PROXY"), Utility.getProxy(url, envVars, logger));

envVars.remove("HTTPS_PROXY");

assertEquals(envVars.get("HTTP_PROXY"), Utility.getProxy(url, envVars));
assertEquals(envVars.get("HTTP_PROXY"), Utility.getProxy(url, envVars, logger));
}

@Test
Expand Down

0 comments on commit 2189c78

Please sign in to comment.