home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2003 January / maximum-cd-2003-01.iso / Software / Apps / OperawithJava / ow32enen700b1j.exe / OPERA.JAR / opera / LiveConnectPrivilegedActions.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-11-05  |  4.5 KB  |  108 lines

  1. package opera;
  2.  
  3. import java.io.FilePermission;
  4. import java.lang.reflect.Constructor;
  5. import java.lang.reflect.Field;
  6. import java.lang.reflect.Method;
  7. import java.net.InetAddress;
  8. import java.net.MalformedURLException;
  9. import java.net.SocketPermission;
  10. import java.net.URL;
  11. import java.net.UnknownHostException;
  12. import java.security.AccessControlContext;
  13. import java.security.AccessController;
  14. import java.security.CodeSource;
  15. import java.security.PermissionCollection;
  16. import java.security.Policy;
  17. import java.security.ProtectionDomain;
  18. import java.security.cert.Certificate;
  19.  
  20. public class LiveConnectPrivilegedActions {
  21.    public static Object newObject(Constructor var0, Object[] var1, String var2) throws Exception {
  22.       originCheck(var2, var0.getDeclaringClass());
  23.       return AccessController.doPrivileged(new PrivilegedNewObject(var0, var1), createAccessControllerContext(var2));
  24.    }
  25.  
  26.    public static Object invoke(Object var0, Method var1, Object[] var2, String var3) throws Exception {
  27.       originCheck(var3, var1.getDeclaringClass());
  28.       return AccessController.doPrivileged(new PrivilegedInvoke(var0, var1, var2), createAccessControllerContext(var3));
  29.    }
  30.  
  31.    public static Object getField(Field var0, Object var1, String var2) throws Exception {
  32.       originCheck(var2, var0.getDeclaringClass());
  33.       return AccessController.doPrivileged(new PrivilegedGetField(var0, var1), createAccessControllerContext(var2));
  34.    }
  35.  
  36.    public static void setField(Field var0, Object var1, Object var2, String var3) throws Exception {
  37.       originCheck(var3, var0.getDeclaringClass());
  38.       AccessController.doPrivileged(new PrivilegedSetField(var0, var1, var2), createAccessControllerContext(var3));
  39.    }
  40.  
  41.    private static void originCheck(String var0, Class var1) throws OriginNotAllowedException {
  42.       ProtectionDomain var2 = var1.getProtectionDomain();
  43.       CodeSource var3 = var2.getCodeSource();
  44.       if (var3 != null && var1.getClassLoader() != ClassLoader.getSystemClassLoader()) {
  45.          URL var4 = var3.getLocation();
  46.          URL var5 = null;
  47.          if (var0 != null) {
  48.             try {
  49.                var5 = new URL(var0);
  50.             } catch (MalformedURLException var10) {
  51.                var10.printStackTrace();
  52.                return;
  53.             }
  54.          }
  55.  
  56.          if (var4 != null && var5 != null) {
  57.             InetAddress var6 = null;
  58.             InetAddress var7 = null;
  59.  
  60.             try {
  61.                var6 = InetAddress.getByName(var4.getHost());
  62.                var7 = InetAddress.getByName(var5.getHost());
  63.             } catch (UnknownHostException var9) {
  64.             }
  65.  
  66.             if (var4.getProtocol().equalsIgnoreCase(var5.getProtocol()) && (var6 != null && var6.equals(var7) || var4.getHost().equalsIgnoreCase(var5.getHost())) && var4.getPort() == var5.getPort()) {
  67.                return;
  68.             }
  69.          }
  70.  
  71.          throw new OriginNotAllowedException("LiveConnect origin check failed for JavaScript trying to access Java object, caller=" + var5 + ", callee=" + var4);
  72.       }
  73.    }
  74.  
  75.    private static ProtectionDomain getProtectionDomain(String var0) {
  76.       URL var1 = null;
  77.       if (var0 != null) {
  78.          try {
  79.             var1 = new URL(var0);
  80.          } catch (MalformedURLException var6) {
  81.          }
  82.       }
  83.  
  84.       Policy var2 = Policy.getPolicy();
  85.       CodeSource var3 = new CodeSource(var1, (Certificate[])null);
  86.       PermissionCollection var4 = var2.getPermissions(var3);
  87.       if (var1.getProtocol().equals("file")) {
  88.          var4.add(new FilePermission("<<ALL FILES>>", "read"));
  89.          var4.add(new SocketPermission("localhost", "connect,accept"));
  90.          AccessController.doPrivileged(new 1(var4));
  91.       } else {
  92.          String var5 = var1.getHost();
  93.          if (var5 == null) {
  94.             var5 = "localhost";
  95.          }
  96.  
  97.          var4.add(new SocketPermission(var5, "connect,accept"));
  98.       }
  99.  
  100.       return new LiveConnectProtectionDomain(var4);
  101.    }
  102.  
  103.    private static AccessControlContext createAccessControllerContext(String var0) throws Exception {
  104.       ProtectionDomain[] var1 = new ProtectionDomain[]{getProtectionDomain(var0)};
  105.       return new AccessControlContext(var1);
  106.    }
  107. }
  108.