summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java
diff options
context:
space:
mode:
authorSimon Rettberg2017-08-09 16:36:25 +0200
committerSimon Rettberg2017-08-09 16:36:25 +0200
commit90349ff2bf27a81ef7412f15b22769ff6ca6bd6e (patch)
treef518e1d90917377039017078359f6d2574d224cb /src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java
parentRewrite proxy string parsing, regex was a bit wonky (diff)
downloadproxy-vole-90349ff2bf27a81ef7412f15b22769ff6ca6bd6e.tar.gz
proxy-vole-90349ff2bf27a81ef7412f15b22769ff6ca6bd6e.tar.xz
proxy-vole-90349ff2bf27a81ef7412f15b22769ff6ca6bd6e.zip
Sophisticate proxy parsing and generating, fix misinterpretation if SOCKS proxies
This is a quick and dirty fix; it seems a major redesign is appropriate. We should also switch to some maintained version of proxy-vole from github. This one looks halfway active: https://github.com/MarkusBernhardt/proxy-vole or maybe one of its forks...
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.java31
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;