From e70ee5b59306ea37dd0c72603c61b33b1555def9 Mon Sep 17 00:00:00 2001 From: Björn Hagemeister Date: Tue, 11 Nov 2014 14:40:18 +0100 Subject: Added proxy java classes. --- src/main/java/com/btr/proxy/util/ProxyUtil.java | 84 +++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/main/java/com/btr/proxy/util/ProxyUtil.java (limited to 'src/main/java/com/btr/proxy/util/ProxyUtil.java') diff --git a/src/main/java/com/btr/proxy/util/ProxyUtil.java b/src/main/java/com/btr/proxy/util/ProxyUtil.java new file mode 100644 index 0000000..aad9293 --- /dev/null +++ b/src/main/java/com/btr/proxy/util/ProxyUtil.java @@ -0,0 +1,84 @@ +package com.btr.proxy.util; + +import java.net.Proxy; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.btr.proxy.selector.fixed.FixedProxySelector; +import com.btr.proxy.selector.pac.PacProxySelector; +import com.btr.proxy.selector.pac.PacScriptSource; +import com.btr.proxy.selector.pac.UrlPacScriptSource; + +/***************************************************************************** + * Small helper class for some common utility methods. + * + * @author Bernd Rosstauscher (proxyvole@rosstauscher.de) Copyright 2009 + ****************************************************************************/ + +public class ProxyUtil { + + public static final int DEFAULT_PROXY_PORT = 80; + + private static List noProxyList; + private static Pattern pattern = Pattern.compile("\\w*?:?/*([^:/]+):?(\\d*)/?"); + + /************************************************************************* + * Parse host and port out of a proxy variable. + * @param proxyVar the proxy string. example: http://192.168.10.9:8080/ + * @return a FixedProxySelector using this settings, null on parse error. + ************************************************************************/ + + public static FixedProxySelector parseProxySettings(String proxyVar) { + if (proxyVar == null || proxyVar.trim().length() == 0) { + return null; + } + Matcher matcher = pattern.matcher(proxyVar); + if (matcher.matches()) { + String host = matcher.group(1); + int port; + if (!"".equals(matcher.group(2))) { + port = Integer.parseInt(matcher.group(2)); + } else { + port = DEFAULT_PROXY_PORT; + } + return new FixedProxySelector(host.trim(), port); + } else { + return null; + } + } + + /************************************************************************* + * Gets an unmodifiable proxy list that will have as it's only entry an DIRECT proxy. + * @return a list with a DIRECT proxy in it. + ************************************************************************/ + + public static synchronized List noProxyList() { + if (noProxyList == null) { + ArrayList list = new ArrayList(1); + list.add(Proxy.NO_PROXY); + noProxyList = Collections.unmodifiableList(list); + } + return noProxyList; + } + + /************************************************************************* + * Build a PAC proxy selector for the given URL. + * @param url to fetch the PAC script from. + * @return a PacProxySelector or null if it is not possible to build a working + * selector. + ************************************************************************/ + + public static PacProxySelector buildPacSelectorForUrl(String url) { + PacProxySelector result = null; + PacScriptSource pacSource = new UrlPacScriptSource(url); + if (pacSource.isScriptValid()) { + result = new PacProxySelector(pacSource); + } + return result; + } + + +} -- cgit v1.2.3-55-g7522