diff --git a/README.md b/README.md
index e40c6fc..a8e8646 100644
--- a/README.md
+++ b/README.md
@@ -115,6 +115,10 @@ network:
proxy:
enable: true # allows disabling auto-config; enabled by default
+ alwaysPrint: false #allow the info log showing the proxy used every time a call is made
+
+ exclusions: []# remove log for this hosts while alwaysprint is enabled
+
# explicit list of proxy servers with settings
servers:
# 1: the intranet proxy (doesn't require any authentication)
diff --git a/pom.xml b/pom.xml
index db73c93..854662f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
com.orange.common
spring-boot-autoconfigure-proxy
- 1.0.2
+ 1.0.3
spring-boot-autoconfigure-proxy
Spring Boot AutoConfigure Proxy
diff --git a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java
index 2e530ec..7036abe 100644
--- a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java
+++ b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/MultiProxySelector.java
@@ -8,6 +8,8 @@
import java.util.*;
import java.util.regex.PatternSyntaxException;
import java.util.stream.Collectors;
+import org.springframework.util.CollectionUtils;
+
/**
* This is a {@link ProxySelector} implementation able to manage several {@link Proxy} depending on the uri scheme and host
@@ -85,10 +87,17 @@ public int hashCode() {
private final List proxies;
+ private final boolean alwaysPrint;
+
+ private final List exclusions;
+
private Map> hostname2Proxies = new HashMap<>();
- private MultiProxySelector(List proxies) {
+ private MultiProxySelector(List proxies, boolean alwaysPrint,
+ List exclusions) {
this.proxies = proxies;
+ this.alwaysPrint = alwaysPrint;
+ this.exclusions = exclusions;
}
@Override
@@ -126,7 +135,13 @@ public List select(URI uri) {
throw new IllegalArgumentException("protocol = " + protocol + " host = " + host);
}
- return hostname2Proxies.computeIfAbsent(new SchemeAndHost(protocol, host), this::doGetProxies);
+ SchemeAndHost schemeAndHost = new SchemeAndHost(protocol, host);
+ List proxiesList =
+ hostname2Proxies.computeIfAbsent(schemeAndHost, this::doGetProxies);
+ if (alwaysPrint && !CollectionUtils.contains(exclusions.iterator(), host)) {
+ LOGGER.info("Proxies for [{}] : {}", schemeAndHost, proxiesList);
+ }
+ return proxiesList;
}
private List doGetProxies(SchemeAndHost schemeAndHost) {
@@ -151,7 +166,8 @@ public String toString() {
'}';
}
- static MultiProxySelector build(List proxies) {
+ static MultiProxySelector build(List proxies,
+ boolean alwaysPrint, List exclusions) {
List proxyEntries = new ArrayList<>();
for (int i = 0; i < proxies.size(); i++) {
NetworkProxyProperties.ProxyServerConfig cfg = proxies.get(i);
@@ -190,6 +206,6 @@ static MultiProxySelector build(List p
proxyEntries.add(new ProxyEntry(cfg, proxy, positiveMatchers, negativeMatchers));
}
- return new MultiProxySelector(proxyEntries);
+ return new MultiProxySelector(proxyEntries, alwaysPrint, exclusions);
}
}
diff --git a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java
index 0b346e5..816fb09 100644
--- a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java
+++ b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyAutoConfiguration.java
@@ -38,7 +38,8 @@ public void setupProxyConfiguration() {
LOGGER.info("Configuring proxies from Spring Boot configuration");
// install proxy selector
- ProxySelector.setDefault(MultiProxySelector.build(properties.getServers()));
+ ProxySelector.setDefault(MultiProxySelector.build(properties.getServers(),
+ properties.isAlwaysPrint(), properties.getExclusions()));
// set password authentication for every proxy that need one
for (NetworkProxyProperties.ProxyServerConfig cfg : properties.getServers()) {
diff --git a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java
index 85b2f22..5df784f 100644
--- a/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java
+++ b/src/main/java/com/orange/common/springboot/autoconfigure/proxy/NetworkProxyProperties.java
@@ -21,6 +21,18 @@ public class NetworkProxyProperties implements Validator {
*/
private boolean enabled = true;
+ /**
+ * Whether to enable the print of the proxy used every time.
+ */
+ private boolean alwaysPrint = false;
+
+
+ /**
+ * Exclude logs for those hosts
+ */
+ private List exclusions = Collections.emptyList();
+
+
/**
* Explicit network proxy servers configuration
*/
@@ -43,10 +55,28 @@ public void setServers(List servers) {
this.servers = servers;
}
+ public List getExclusions() {
+ return exclusions;
+ }
+
+ public void setExclusions(List exclusions) {
+ this.exclusions = exclusions;
+ }
+
+ public boolean isAlwaysPrint() {
+ return alwaysPrint;
+ }
+
+ public void setAlwaysPrint(boolean alwaysPrint) {
+ this.alwaysPrint = alwaysPrint;
+ }
+
@Override
public String toString() {
return "NetworkProxyProperties{" +
"enabled=" + enabled +
+ ", alwaysPrint= " +alwaysPrint +
+ ", exclusions= " +exclusions +
", servers=" + servers +
'}';
}