home *** CD-ROM | disk | FTP | other *** search
- package sun.activator;
-
- import java.net.URL;
- import java.util.Hashtable;
- import sun.activator.protocol.ProxyHandler;
- import sun.activator.protocol.ProxyInfo;
- import sun.activator.protocol.ProxyType;
-
- public class ActivatorProxyHandler implements ProxyHandler, ProxyType {
- int proxyType = 0;
- String proxyList = null;
- String proxyOverride = null;
- Hashtable proxyTable = null;
-
- ActivatorProxyHandler(int var1, String var2, String var3) {
- this.proxyType = var1;
- this.proxyList = var2;
- this.proxyOverride = var3;
- this.proxyTable = new Hashtable();
- }
-
- ProxyInfo extractAutoProxySetting(String var1) {
- System.out.println("AutoConfig string: " + var1);
- int var2 = var1.indexOf("PROXY");
- if (var2 != -1) {
- int var3 = var1.indexOf(";", var2);
- return var3 != -1 ? new ProxyInfo(var1.substring(var2 + 6, var3)) : new ProxyInfo(var1.substring(var2 + 6));
- } else {
- return new ProxyInfo((String)null, -1);
- }
- }
-
- native String findProxyForURL(String var1);
-
- public synchronized ProxyInfo getProxyInfo(URL var1) {
- Object var2 = null;
-
- try {
- ProxyInfo var8 = (ProxyInfo)this.proxyTable.get(var1.getProtocol() + var1.getHost() + var1.getPort());
- if (var8 != null) {
- return var8;
- }
-
- if (this.proxyType != 0 && (this.proxyType != 1 || !this.isProxyBypass(this.proxyOverride, var1))) {
- if (this.proxyType == 1) {
- String var3 = var1.getProtocol();
- int var4 = this.proxyList.indexOf(var3 + "=");
- if (var4 == -1) {
- var7 = new ProxyInfo(this.proxyList);
- } else {
- int var5 = this.proxyList.indexOf(";", var4);
- if (var5 == -1) {
- var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1));
- } else {
- var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1, var5));
- }
- }
- } else {
- String var9 = this.findProxyForURL(var1.toString());
- var7 = this.extractAutoProxySetting(var9);
- }
- } else {
- var7 = new ProxyInfo((String)null, -1);
- }
-
- this.proxyTable.put(var1.getProtocol() + var1.getHost() + var1.getPort(), var7);
- } catch (Exception var6) {
- System.err.println(((Throwable)var6).getMessage());
- ((Throwable)var6).printStackTrace();
- System.out.println("Proxy is defaulted to DIRECT.");
- var7 = new ProxyInfo((String)null, -1);
- }
-
- return var7;
- }
-
- boolean isProxyBypass(String var1, URL var2) {
- if (var1 != null && !var1.equals("")) {
- String var3 = var2.getHost();
- int var4 = 0;
-
- for(int var5 = 0; var5 <= var1.length(); ++var5) {
- if (var5 == var1.length() || var1.charAt(var5) == ',') {
- String var6 = var1.substring(var4, var5);
- System.out.println("Pattern: " + var6);
- if (var6.equals("<local>") && var3.indexOf(".") == -1) {
- return true;
- }
-
- if (this.shExpMatch(var3, var6)) {
- return true;
- }
-
- var4 = var5 + 1;
- }
- }
-
- return false;
- } else {
- return false;
- }
- }
-
- boolean shExpMatch(String var1, String var2) {
- int var3 = 0;
- int var4 = 0;
- int var5 = 0;
- Object var6 = null;
- if (var1 != null && var2 != null && !var1.equals("") && !var2.equals("")) {
- var1 = var1.toLowerCase();
- var2 = var2.toLowerCase();
- var3 = var2.indexOf("*");
- if (var3 > 0) {
- String var12 = var2.substring(0, var3);
- var5 = var3;
- if (!var12.equals(var1.substring(0, var3))) {
- return false;
- }
- } else if (var3 == -1) {
- return var1.equals(var2);
- }
-
- while((var4 = var2.indexOf("*", var3 + 1)) != -1) {
- String var13 = var2.substring(var3 + 1, var4);
- var5 = var1.indexOf(var13, var5);
- if (var5 == -1) {
- return false;
- }
-
- var5 += var13.length();
- var3 = var4;
- }
-
- String var14 = var2.substring(var3 + 1);
- return var5 + var14.length() <= var1.length() ? var14.equals(var1.substring(var1.length() - var14.length())) : false;
- } else {
- return false;
- }
- }
- }
-