summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/search
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/btr/proxy/search')
-rw-r--r--src/main/java/com/btr/proxy/search/browser/firefox/FirefoxProxySearchStrategy.java9
-rw-r--r--src/main/java/com/btr/proxy/search/browser/ie/IEProxySearchStrategy.java20
-rw-r--r--src/main/java/com/btr/proxy/search/env/EnvProxySearchStrategy.java31
-rw-r--r--src/main/java/com/btr/proxy/search/wpad/WpadProxySearchStrategy.java10
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) {