From df53b12c42252be8ffe9aa1eb1a9adf3002f1545 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 1 Aug 2017 15:45:48 +0200 Subject: Make proxy type detection more intelligent, decouple from target protocol --- .../firefox/FirefoxProxySearchStrategy.java | 30 ++++++++++++---------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'src/main/java/com/btr/proxy/search/browser/firefox/FirefoxProxySearchStrategy.java') 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 30c3be1..de576e4 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 @@ -1,6 +1,7 @@ package com.btr.proxy.search.browser.firefox; import java.io.IOException; +import java.net.Proxy; import java.net.ProxySelector; import java.util.Properties; @@ -8,8 +9,6 @@ import com.btr.proxy.search.ProxySearchStrategy; import com.btr.proxy.search.desktop.DesktopProxySearchStrategy; import com.btr.proxy.search.wpad.WpadProxySearchStrategy; import com.btr.proxy.selector.direct.NoProxySelector; -import com.btr.proxy.selector.fixed.FixedProxySelector; -import com.btr.proxy.selector.fixed.FixedSocksSelector; import com.btr.proxy.selector.misc.ProtocolDispatchSelector; import com.btr.proxy.selector.whitelist.ProxyBypassListSelector; import com.btr.proxy.util.Logger; @@ -204,9 +203,16 @@ public class FirefoxProxySearchStrategy implements ProxySearchStrategy { ************************************************************************/ private void installSharedProxy(ProtocolDispatchSelector ps) { - ProxySelector httpProxy = ps.getSelector("http"); + ProxySelector httpProxy; + httpProxy = ps.getSelector("socks"); if (httpProxy != null) { ps.setFallbackSelector(httpProxy); + return; + } + httpProxy = ps.getSelector("http"); + if (httpProxy != null) { + ps.setFallbackSelector(httpProxy); + return; } } @@ -218,12 +224,7 @@ public class FirefoxProxySearchStrategy implements ProxySearchStrategy { private void installSocksProxy(ProtocolDispatchSelector ps, Properties settings) throws NumberFormatException { - String proxyHost = settings.getProperty("network.proxy.socks", null); - int proxyPort = Integer.parseInt(settings.getProperty("network.proxy.socks_port", "0")); - if (proxyHost != null && proxyPort != 0) { - Logger.log(getClass(), LogLevel.TRACE, "Firefox socks proxy is {0}:{1}", proxyHost, proxyPort); - ps.setSelector("socks", new FixedSocksSelector(proxyHost, proxyPort)); - } + installSelectorForProtocol(ps, settings, "socks"); } /************************************************************************* @@ -236,10 +237,11 @@ public class FirefoxProxySearchStrategy implements ProxySearchStrategy { Properties settings) throws NumberFormatException { String proxyHost = settings.getProperty("network.proxy.ssl", null); int proxyPort = Integer.parseInt(settings.getProperty("network.proxy.ssl_port", "0")); - if (proxyHost != null && proxyPort != 0) { + if (proxyHost != null) { Logger.log(getClass(), LogLevel.TRACE, "Firefox secure proxy is {0}:{1}", proxyHost, proxyPort); - ps.setSelector("https", new FixedProxySelector(proxyHost, proxyPort)); - ps.setSelector("sftp", new FixedProxySelector(proxyHost, proxyPort)); + ProxySelector p = ProxyUtil.parseProxySettings(proxyHost, Proxy.Type.HTTP, proxyPort); + ps.setSelector("https", p); + ps.setSelector("sftp", p); } } @@ -257,9 +259,9 @@ 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 && proxyPort != 0) { + if (proxyHost != null) { Logger.log(getClass(), LogLevel.TRACE, "Firefox "+protocol+" proxy is {0}:{1}", proxyHost, proxyPort); - ps.setSelector(protocol, new FixedProxySelector(proxyHost, proxyPort)); + ps.setSelector(protocol, ProxyUtil.parseProxySettings(proxyHost, Proxy.Type.HTTP, proxyPort)); } } -- cgit v1.2.3-55-g7522