Search in sources :

Example 36 with SocketPermission

use of java.net.SocketPermission in project lwjgl by LWJGL.

the class AppletLoader method updateClassPath.

/**
	 * Edits the ClassPath at runtime to include the jars
	 * that have just been downloaded and then adds the
	 * lwjgl natives folder property.
	 *
	 * @param path location where applet is stored
	 * @throws Exception if it fails to add classpath
	 */
protected void updateClassPath(final String path) throws Exception {
    setState(STATE_UPDATING_CLASSPATH);
    percentage = 95;
    URL[] urls = new URL[urlList.length];
    for (int i = 0; i < urlList.length; i++) {
        String file = new File(path, getJarName(urlList[i])).toURI().toString();
        // fix JVM bug where ! is not escaped
        file = file.replace("!", "%21");
        urls[i] = new URL(file);
    }
    // get AppletLoader certificates
    final Certificate[] certs = getCurrentCertificates();
    // detect if we are running on a mac and save result as boolean
    String osName = System.getProperty("os.name");
    final boolean isMacOS = (osName.startsWith("Mac") || osName.startsWith("Darwin"));
    // add downloaded jars to the classpath with required permissions
    classLoader = new URLClassLoader(urls) {

        protected PermissionCollection getPermissions(CodeSource codesource) {
            PermissionCollection perms = null;
            try {
                // no permissions
                perms = new Permissions();
                // if certificates match the AppletLoader certificates then we should be all set
                if (certificatesMatch(certs, codesource.getCertificates())) {
                    perms.add(new AllPermission());
                    return perms;
                }
                String host = getCodeBase().getHost();
                if (host != null && (host.length() > 0)) {
                    // add permission for downloaded jars to access host they were from
                    perms.add(new SocketPermission(host, "connect,accept"));
                } else if ("file".equals(codesource.getLocation().getProtocol())) {
                    // if running locally add file permission
                    String path = codesource.getLocation().getFile().replace('/', File.separatorChar);
                    perms.add(new FilePermission(path, "read"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return perms;
        }

        // allow non lwjgl native to be found from cache directory
        protected String findLibrary(String libname) {
            String libPath = path + "natives" + File.separator + LWJGLUtil.mapLibraryName(libname);
            if (new File(libPath).exists()) {
                return libPath;
            }
            return super.findLibrary(libname);
        }
    };
    debug_sleep(2000);
    // unload natives loaded by a previous instance of this lwjgl applet
    unloadNatives(path);
    // add natives files path to native class path
    System.setProperty("org.lwjgl.librarypath", path + "natives");
    // Make sure jinput knows about the new path too
    System.setProperty("net.java.games.input.librarypath", path + "natives");
    // set the library path, useful for non lwjgl natives
    System.setProperty("java.library.path", path + "natives");
    // mark natives as loaded
    natives_loaded = true;
}
Also used : PermissionCollection(java.security.PermissionCollection) SocketPermission(java.net.SocketPermission) CodeSource(java.security.CodeSource) FilePermission(java.io.FilePermission) URL(java.net.URL) AccessControlException(java.security.AccessControlException) IOException(java.io.IOException) URLClassLoader(java.net.URLClassLoader) Permissions(java.security.Permissions) AllPermission(java.security.AllPermission) JarFile(java.util.jar.JarFile) ZipFile(java.util.zip.ZipFile) File(java.io.File) Certificate(java.security.cert.Certificate)

Example 37 with SocketPermission

use of java.net.SocketPermission in project jdk8u_jdk by JetBrains.

the class MailToURLConnection method getPermission.

@Override
public Permission getPermission() throws IOException {
    if (permission == null) {
        connect();
        String host = client.getMailHost() + ":" + 25;
        permission = new SocketPermission(host, "connect");
    }
    return permission;
}
Also used : SocketPermission(java.net.SocketPermission)

Example 38 with SocketPermission

use of java.net.SocketPermission in project jdk8u_jdk by JetBrains.

the class MyBasicPermission method trySockPC.

static void trySockPC() throws Exception {
    try {
        SocketPermission p0 = new SocketPermission("example.com", "connect");
        PermissionCollection pc = p0.newPermissionCollection();
        // this should lock out future adds
        pc.setReadOnly();
        //
        SocketPermission p1 = new SocketPermission("example.net", "connect");
        pc.add(p1);
        throw new Exception("Failed...SocketPermission added to readonly SocketPermissionCollection.");
    } catch (SecurityException se) {
        System.out.println("SocketPermissionCollection passed");
    }
}
Also used : SocketPermission(java.net.SocketPermission)

Example 39 with SocketPermission

use of java.net.SocketPermission in project jdk8u_jdk by JetBrains.

the class EmptyInputStream method followRedirect.

/* Tells us whether to follow a redirect.  If so, it
     * closes the connection (break any keep-alive) and
     * resets the url, re-connects, and resets the request
     * property.
     */
private boolean followRedirect() throws IOException {
    if (!getInstanceFollowRedirects()) {
        return false;
    }
    final int stat = getResponseCode();
    if (stat < 300 || stat > 307 || stat == 306 || stat == HTTP_NOT_MODIFIED) {
        return false;
    }
    final String loc = getHeaderField("Location");
    if (loc == null) {
        /* this should be present - if not, we have no choice
             * but to go forward w/ the response we got
             */
        return false;
    }
    URL locUrl;
    try {
        locUrl = new URL(loc);
        if (!url.getProtocol().equalsIgnoreCase(locUrl.getProtocol())) {
            return false;
        }
    } catch (MalformedURLException mue) {
        // treat loc as a relative URI to conform to popular browsers
        locUrl = new URL(url, loc);
    }
    final URL locUrl0 = locUrl;
    // force recalculation
    socketPermission = null;
    SocketPermission p = URLtoSocketPermission(locUrl);
    if (p != null) {
        try {
            return AccessController.doPrivilegedWithCombiner(new PrivilegedExceptionAction<Boolean>() {

                public Boolean run() throws IOException {
                    return followRedirect0(loc, stat, locUrl0);
                }
            }, null, p);
        } catch (PrivilegedActionException e) {
            throw (IOException) e.getException();
        }
    } else {
        // run without additional permission
        return followRedirect0(loc, stat, locUrl);
    }
}
Also used : MalformedURLException(java.net.MalformedURLException) PrivilegedActionException(java.security.PrivilegedActionException) SocketPermission(java.net.SocketPermission) URL(java.net.URL)

Example 40 with SocketPermission

use of java.net.SocketPermission in project jdk8u_jdk by JetBrains.

the class FtpURLConnection method getPermission.

/**
     * Gets the <code>Permission</code> associated with the host & port.
     *
     * @return  The <code>Permission</code> object.
     */
@Override
public Permission getPermission() {
    if (permission == null) {
        int urlport = url.getPort();
        urlport = urlport < 0 ? FtpClient.defaultPort() : urlport;
        String urlhost = this.host + ":" + urlport;
        permission = new SocketPermission(urlhost, "connect");
    }
    return permission;
}
Also used : SocketPermission(java.net.SocketPermission)

Aggregations

SocketPermission (java.net.SocketPermission)52 Deployment (org.jboss.arquillian.container.test.api.Deployment)13 FilePermission (java.io.FilePermission)12 WebArchive (org.jboss.shrinkwrap.api.spec.WebArchive)10 AccessControlContext (java.security.AccessControlContext)9 PropertyPermission (java.util.PropertyPermission)9 Test (org.testng.annotations.Test)8 StringAsset (org.jboss.shrinkwrap.api.asset.StringAsset)7 URL (java.net.URL)6 IOException (java.io.IOException)5 DatagramSocket (java.net.DatagramSocket)5 InetAddress (java.net.InetAddress)4 InetSocketAddress (java.net.InetSocketAddress)4 MulticastSocket (java.net.MulticastSocket)4 ServerSocket (java.net.ServerSocket)3 Permissions (java.security.Permissions)3 PrivilegedActionException (java.security.PrivilegedActionException)3 Properties (java.util.Properties)3 JavaArchive (org.jboss.shrinkwrap.api.spec.JavaArchive)3 File (java.io.File)2