User Generated Content - auch Aal-Prinzip genannt (andere arbeiten lassen) - ist mal wieder mächtig in. Ist so Web 2.0 mässig. Community-Site spriessen aus dem Boden. Beworben wird vielfach mit Chat und Dating - der ganze Social Network Quatsch halt. Damit sollen auch VCs gelockt werden. Die Rollenverteilung ist einfach: ich biete euch eine Plattform damit ihr sie füllt; ich kassiere am Ende die Kohle, damit ihr euch zum ficken treffen könnt. Virtuelle Zuhälterei - halbseidene Geschäftsideen.
Der GroovyClassLoader ermöglicht es, dass Groovy-Scripts im Sicherheitscontext einer JVM abgearbeitet werden können. Wird die JVM mit dem Property -Djava.security.manager gestartet, wird der SecurityManager mit seinem Kontext eingeschaltet. Mit dem Property -Djava.security.policy wird ein Verweis auf eine Policy-Datei übergeben. Damit das folgende Code-Snippet abgearbeitet werden kann, müssen in der Policy-Datei einige Security-Permissions gewährt werden.
Code-Snippet:
final ClassLoader parent = GroovySecurityTest.class.getClassLoader();
final GroovyClassLoader loader = new GroovyClassLoader(parent);
final String script = "println 'hello world'";
final GroovyCodeSource gcs = new GroovyCodeSource(script,
"HelloWorld",
"/speexx/test");
final Class groovyClass = loader.parseClass(gcs);
final GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
final Object[] arguments = new Object[] {};
groovyObject.invokeMethod("run", arguments);
Policy Grants:
grant {
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.lang.RuntimePermission "getProtectionDomain";
permission java.util.PropertyPermission "antlr.ast", "read";
permission java.util.PropertyPermission "groovy.ast", "read";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission groovy.security.GroovyCodeSourcePermission "/speexx/test";
};
