diff options
Diffstat (limited to 'src/main/java/com/btr/proxy/search')
4 files changed, 44 insertions, 26 deletions
diff --git a/src/main/java/com/btr/proxy/search/browser/firefox/FirefoxProxySearchStrategy.java b/src/main/java/com/btr/proxy/search/browser/firefox/FirefoxProxySearchStrategy.java index de576e4..228bc8c 100644 --- a/src/main/java/com/btr/proxy/search/browser/firefox/FirefoxProxySearchStrategy.java +++ b/src/main/java/com/btr/proxy/search/browser/firefox/FirefoxProxySearchStrategy.java @@ -260,8 +260,15 @@ public class FirefoxProxySearchStrategy implements ProxySearchStrategy { String proxyHost = settings.getProperty("network.proxy."+protocol, null); int proxyPort = Integer.parseInt(settings.getProperty("network.proxy."+protocol+"_port", "0")); if (proxyHost != null) { + Proxy.Type type; + if (protocol.startsWith("socks")) { + type = Proxy.Type.SOCKS; + protocol = "socket"; + } else { + type = Proxy.Type.HTTP; + } Logger.log(getClass(), LogLevel.TRACE, "Firefox "+protocol+" proxy is {0}:{1}", proxyHost, proxyPort); - ps.setSelector(protocol, ProxyUtil.parseProxySettings(proxyHost, Proxy.Type.HTTP, proxyPort)); + ps.setSelector(protocol, ProxyUtil.parseProxySettings(proxyHost, type, proxyPort)); } } diff --git a/src/main/java/com/btr/proxy/search/browser/ie/IEProxySearchStrategy.java b/src/main/java/com/btr/proxy/search/browser/ie/IEProxySearchStrategy.java index 6641aff..dd062cd 100644 --- a/src/main/java/com/btr/proxy/search/browser/ie/IEProxySearchStrategy.java +++ b/src/main/java/com/btr/proxy/search/browser/ie/IEProxySearchStrategy.java @@ -165,7 +165,15 @@ public class IEProxySearchStrategy implements ProxySearchStrategy { private void addFallbackSelector(Properties settings, ProtocolDispatchSelector ps) { String proxy = settings.getProperty("default"); if (proxy != null) { - ps.setFallbackSelector(ProxyUtil.parseProxySettings(proxy)); + Proxy defaultProxy = ProxyUtil.parseProxyString(proxy, Proxy.Type.HTTP, 0); + if (defaultProxy.type() == Proxy.Type.SOCKS) { + ps.setSelector("socket", new FixedProxySelector(defaultProxy)); + return; + } + FixedProxySelector fp = new FixedProxySelector(defaultProxy); + ps.setSelector("http", fp); + ps.setSelector("https", fp); + ps.setSelector("ftp", fp); } } @@ -180,8 +188,14 @@ public class IEProxySearchStrategy implements ProxySearchStrategy { private void addSelectorForProtocol(Properties settings, String protocol, ProtocolDispatchSelector ps) { String proxy = settings.getProperty(protocol); if (proxy != null) { - Proxy.Type fb = protocol.startsWith("socks") ? Proxy.Type.SOCKS : Proxy.Type.HTTP; - ProxySelector protocolSelector = ProxyUtil.parseProxySettings(proxy, fb, 0); + Proxy.Type type; + if (protocol.startsWith("socks")) { + type = Proxy.Type.SOCKS; + protocol = "socket"; + } else { + type = Proxy.Type.HTTP; + } + ProxySelector protocolSelector = ProxyUtil.parseProxySettings(proxy, type, 0); ps.setSelector(protocol, protocolSelector); } } 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; diff --git a/src/main/java/com/btr/proxy/search/wpad/WpadProxySearchStrategy.java b/src/main/java/com/btr/proxy/search/wpad/WpadProxySearchStrategy.java index e559d62..0d3e6dc 100644 --- a/src/main/java/com/btr/proxy/search/wpad/WpadProxySearchStrategy.java +++ b/src/main/java/com/btr/proxy/search/wpad/WpadProxySearchStrategy.java @@ -119,11 +119,8 @@ public class WpadProxySearchStrategy implements ProxySearchStrategy { return ret; } - BufferedReader br = null; String[] addresses = null; - try { - FileReader fr = new FileReader("/etc/resolv.conf"); - br = new BufferedReader(fr); + try (FileReader fr = new FileReader("/etc/resolv.conf"); BufferedReader br = new BufferedReader(fr)) { String input; while ((input = br.readLine()) != null) { if (input.startsWith("search")) { @@ -134,11 +131,6 @@ public class WpadProxySearchStrategy implements ProxySearchStrategy { } } catch (IOException e1) { Logger.log(getClass(), LogLevel.DEBUG, "Could not read resolv.conf"); - } finally { - try { - br.close(); - } catch (Exception e) { - } } if (addresses == null) { |