diff options
Diffstat (limited to 'src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java')
-rw-r--r-- | src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java b/src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java index 37bd0a1..f7b6483 100644 --- a/src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java +++ b/src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java @@ -4,11 +4,12 @@ import java.net.ProxySelector; import java.util.Properties; import com.btr.proxy.search.ProxySearchStrategy; +import com.btr.proxy.selector.fixed.FixedProxySelector; import com.btr.proxy.selector.misc.ProtocolDispatchSelector; import com.btr.proxy.selector.whitelist.ProxyBypassListSelector; import com.btr.proxy.util.Logger; -import com.btr.proxy.util.ProxyUtil; import com.btr.proxy.util.Logger.LogLevel; +import com.btr.proxy.util.ProxyUtil; /***************************************************************************** * Reads some environment variables and extracts the proxy settings from them. @@ -96,26 +97,30 @@ public class EnvProxySearchStrategy implements ProxySearchStrategy { public ProxySelector getProxySelector() { Logger.log(getClass(), LogLevel.TRACE, "Inspecting environment variables."); + ProtocolDispatchSelector ps = new ProtocolDispatchSelector(); - // Check if http_proxy var is set. - ProxySelector httpPS = ProxyUtil.parseProxySettings(this.httpProxy); - if (httpPS == null) { - return null; + FixedProxySelector httpPS = ProxyUtil.parseProxySettings(this.httpProxy); + if (httpPS != null) { + Logger.log(getClass(), LogLevel.TRACE, "Http Proxy is {0}", this.httpProxy); + ps.setSelector("http", httpPS); } - - Logger.log(getClass(), LogLevel.TRACE, "Http Proxy is {0}", this.httpProxy); - ProtocolDispatchSelector ps = new ProtocolDispatchSelector(); - ps.setSelector("http", httpPS); - ProxySelector httpsPS = ProxyUtil.parseProxySettings(this.httpsProxy); - Logger.log(getClass(), LogLevel.TRACE, "Https Proxy is {0}", httpsPS == null? this.httpsProxy: httpsPS); - ps.setSelector("https", httpsPS != null? httpsPS: httpPS); + FixedProxySelector httpsPS = ProxyUtil.parseProxySettings(this.httpsProxy); + if (httpsPS != null) { + Logger.log(getClass(), LogLevel.TRACE, "Https Proxy is {0}", this.httpsProxy); + ps.setSelector("https", httpsPS); + } - ProxySelector ftpPS = ProxyUtil.parseProxySettings(this.ftpProxy); + FixedProxySelector ftpPS = ProxyUtil.parseProxySettings(this.ftpProxy); if (ftpPS != null) { Logger.log(getClass(), LogLevel.TRACE, "Ftp Proxy is {0}", this.ftpProxy); ps.setSelector("ftp", ftpPS); } + + ps.setFallbackSocksSelector(httpPS, httpsPS, ftpPS); + + if (ps.isEmpty()) + return null; // Wrap with white list support ProxySelector result = ps; |