home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 March / maximum-cd-1999-03.iso / Feature / Lotus / ORGANIZE / COMPNENT / LTOUIN21.ZIP / sun / activator / ActivatorProxyHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-12  |  3.4 KB  |  141 lines

  1. package sun.activator;
  2.  
  3. import java.net.URL;
  4. import java.util.Hashtable;
  5. import sun.activator.protocol.ProxyHandler;
  6. import sun.activator.protocol.ProxyInfo;
  7. import sun.activator.protocol.ProxyType;
  8.  
  9. public class ActivatorProxyHandler implements ProxyHandler, ProxyType {
  10.    int proxyType = 0;
  11.    String proxyList = null;
  12.    String proxyOverride = null;
  13.    Hashtable proxyTable = null;
  14.  
  15.    ActivatorProxyHandler(int var1, String var2, String var3) {
  16.       this.proxyType = var1;
  17.       this.proxyList = var2;
  18.       this.proxyOverride = var3;
  19.       this.proxyTable = new Hashtable();
  20.    }
  21.  
  22.    ProxyInfo extractAutoProxySetting(String var1) {
  23.       System.out.println("AutoConfig string: " + var1);
  24.       int var2 = var1.indexOf("PROXY");
  25.       if (var2 != -1) {
  26.          int var3 = var1.indexOf(";", var2);
  27.          return var3 != -1 ? new ProxyInfo(var1.substring(var2 + 6, var3)) : new ProxyInfo(var1.substring(var2 + 6));
  28.       } else {
  29.          return new ProxyInfo((String)null, -1);
  30.       }
  31.    }
  32.  
  33.    native String findProxyForURL(String var1);
  34.  
  35.    public synchronized ProxyInfo getProxyInfo(URL var1) {
  36.       Object var2 = null;
  37.  
  38.       try {
  39.          ProxyInfo var8 = (ProxyInfo)this.proxyTable.get(var1.getProtocol() + var1.getHost() + var1.getPort());
  40.          if (var8 != null) {
  41.             return var8;
  42.          }
  43.  
  44.          if (this.proxyType != 0 && (this.proxyType != 1 || !this.isProxyBypass(this.proxyOverride, var1))) {
  45.             if (this.proxyType == 1) {
  46.                String var3 = var1.getProtocol();
  47.                int var4 = this.proxyList.indexOf(var3 + "=");
  48.                if (var4 == -1) {
  49.                   var7 = new ProxyInfo(this.proxyList);
  50.                } else {
  51.                   int var5 = this.proxyList.indexOf(";", var4);
  52.                   if (var5 == -1) {
  53.                      var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1));
  54.                   } else {
  55.                      var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1, var5));
  56.                   }
  57.                }
  58.             } else {
  59.                String var9 = this.findProxyForURL(var1.toString());
  60.                var7 = this.extractAutoProxySetting(var9);
  61.             }
  62.          } else {
  63.             var7 = new ProxyInfo((String)null, -1);
  64.          }
  65.  
  66.          this.proxyTable.put(var1.getProtocol() + var1.getHost() + var1.getPort(), var7);
  67.       } catch (Exception var6) {
  68.          System.err.println(((Throwable)var6).getMessage());
  69.          ((Throwable)var6).printStackTrace();
  70.          System.out.println("Proxy is defaulted to DIRECT.");
  71.          var7 = new ProxyInfo((String)null, -1);
  72.       }
  73.  
  74.       return var7;
  75.    }
  76.  
  77.    boolean isProxyBypass(String var1, URL var2) {
  78.       if (var1 != null && !var1.equals("")) {
  79.          String var3 = var2.getHost();
  80.          int var4 = 0;
  81.  
  82.          for(int var5 = 0; var5 <= var1.length(); ++var5) {
  83.             if (var5 == var1.length() || var1.charAt(var5) == ',') {
  84.                String var6 = var1.substring(var4, var5);
  85.                System.out.println("Pattern: " + var6);
  86.                if (var6.equals("<local>") && var3.indexOf(".") == -1) {
  87.                   return true;
  88.                }
  89.  
  90.                if (this.shExpMatch(var3, var6)) {
  91.                   return true;
  92.                }
  93.  
  94.                var4 = var5 + 1;
  95.             }
  96.          }
  97.  
  98.          return false;
  99.       } else {
  100.          return false;
  101.       }
  102.    }
  103.  
  104.    boolean shExpMatch(String var1, String var2) {
  105.       int var3 = 0;
  106.       int var4 = 0;
  107.       int var5 = 0;
  108.       Object var6 = null;
  109.       if (var1 != null && var2 != null && !var1.equals("") && !var2.equals("")) {
  110.          var1 = var1.toLowerCase();
  111.          var2 = var2.toLowerCase();
  112.          var3 = var2.indexOf("*");
  113.          if (var3 > 0) {
  114.             String var12 = var2.substring(0, var3);
  115.             var5 = var3;
  116.             if (!var12.equals(var1.substring(0, var3))) {
  117.                return false;
  118.             }
  119.          } else if (var3 == -1) {
  120.             return var1.equals(var2);
  121.          }
  122.  
  123.          while((var4 = var2.indexOf("*", var3 + 1)) != -1) {
  124.             String var13 = var2.substring(var3 + 1, var4);
  125.             var5 = var1.indexOf(var13, var5);
  126.             if (var5 == -1) {
  127.                return false;
  128.             }
  129.  
  130.             var5 += var13.length();
  131.             var3 = var4;
  132.          }
  133.  
  134.          String var14 = var2.substring(var3 + 1);
  135.          return var5 + var14.length() <= var1.length() ? var14.equals(var1.substring(var1.length() - var14.length())) : false;
  136.       } else {
  137.          return false;
  138.       }
  139.    }
  140. }
  141.