diff options
Diffstat (limited to 'src/main/java/com/btr/proxy/selector/pac')
-rw-r--r-- | src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java | 16 | ||||
-rw-r--r-- | src/main/java/com/btr/proxy/selector/pac/UrlPacScriptSource.java | 3 |
2 files changed, 15 insertions, 4 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. |