summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/selector
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/btr/proxy/selector')
-rw-r--r--src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java16
-rw-r--r--src/main/java/com/btr/proxy/selector/pac/UrlPacScriptSource.java3
-rw-r--r--src/main/java/com/btr/proxy/selector/whitelist/IpRangeFilter.java3
3 files changed, 17 insertions, 5 deletions
diff --git a/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java b/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java
index 765a376..a8441d6 100644
--- a/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java
+++ b/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java
@@ -8,8 +8,11 @@ import java.net.SocketAddress;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
+
+import com.btr.proxy.selector.direct.NoProxySelector;
import com.btr.proxy.util.Logger;
import com.btr.proxy.util.Logger.LogLevel;
+import com.btr.proxy.util.MiscUtil;
import com.btr.proxy.util.ProxyUtil;
@@ -123,6 +126,9 @@ public class PacProxySelector extends ProxySelector {
List<Proxy> proxies = new ArrayList<Proxy>();
String parseResult = this.pacScriptParser.evaluate(uri.toString(),
uri.getHost());
+ if (parseResult == null) {
+ return ProxyUtil.noProxyList();
+ }
String[] proxyDefinitions = parseResult.split("[;]");
for (String proxyDef : proxyDefinitions) {
if (proxyDef.trim().length() > 0) {
@@ -162,19 +168,23 @@ public class PacProxySelector extends ProxySelector {
// Check proxy type.
Proxy.Type type = Proxy.Type.HTTP;
+ Integer port = ProxyUtil.DEFAULT_HTTP_PROXY_PORT;
+
if (proxyDef.toUpperCase().startsWith(PAC_SOCKS)) {
type = Proxy.Type.SOCKS;
+ port = ProxyUtil.DEFAULT_SOCKS_PROXY_PORT;
}
- String host = proxyDef.substring(6);
- Integer port = ProxyUtil.DEFAULT_HTTP_PROXY_PORT;
+ String host = proxyDef.substring(6).trim(); // because PROXY and SOCKS are both 5 chars... ;)
// Split port from host
int indexOfPort = host.indexOf(':');
if (indexOfPort != -1) {
- port = Integer.parseInt(host.substring(indexOfPort+1).trim());
+ port = MiscUtil.parseInt(host.substring(indexOfPort+1).trim());
host = host.substring(0, indexOfPort).trim();
}
+ if (port < 0 || port > 65535)
+ return Proxy.NO_PROXY;
SocketAddress adr = InetSocketAddress.createUnresolved(host, port);
return new Proxy(type, adr);
diff --git a/src/main/java/com/btr/proxy/selector/pac/UrlPacScriptSource.java b/src/main/java/com/btr/proxy/selector/pac/UrlPacScriptSource.java
index c31b2d0..085d056 100644
--- a/src/main/java/com/btr/proxy/selector/pac/UrlPacScriptSource.java
+++ b/src/main/java/com/btr/proxy/selector/pac/UrlPacScriptSource.java
@@ -14,6 +14,7 @@ import java.net.URL;
import com.btr.proxy.util.Logger;
import com.btr.proxy.util.Logger.LogLevel;
+import com.btr.proxy.util.MiscUtil;
/*****************************************************************************
* Script source that will load the content of a PAC file from an webserver.
@@ -207,7 +208,7 @@ public class UrlPacScriptSource implements PacScriptSource {
String prop = System.getProperty(overrideProperty);
if (prop != null && prop.trim().length() > 0) {
try {
- timeout = Integer.parseInt(prop.trim());
+ timeout = MiscUtil.parseInt(prop.trim());
} catch (NumberFormatException e) {
Logger.log(getClass(), LogLevel.DEBUG, "Invalid override property : {0}={1}", overrideProperty, prop);
// In this case use the default value.
diff --git a/src/main/java/com/btr/proxy/selector/whitelist/IpRangeFilter.java b/src/main/java/com/btr/proxy/selector/whitelist/IpRangeFilter.java
index 293f520..9084d9a 100644
--- a/src/main/java/com/btr/proxy/selector/whitelist/IpRangeFilter.java
+++ b/src/main/java/com/btr/proxy/selector/whitelist/IpRangeFilter.java
@@ -4,6 +4,7 @@ import java.net.InetAddress;
import java.net.URI;
import java.net.UnknownHostException;
+import com.btr.proxy.util.MiscUtil;
import com.btr.proxy.util.UriFilter;
/*****************************************************************************
@@ -39,7 +40,7 @@ public class IpRangeFilter implements UriFilter {
throw new IllegalArgumentException("IP range is not valid:"+matchTo);
}
- this.numOfBits = Integer.parseInt(parts[1].trim());
+ this.numOfBits = MiscUtil.parseInt(parts[1].trim());
}
/*************************************************************************