diff --git a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt index f59f06629..7d81bc443 100644 --- a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt +++ b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt @@ -25,11 +25,9 @@ package com.script.rhino import org.mozilla.javascript.Context -import org.mozilla.javascript.NativeJavaObject import org.mozilla.javascript.Scriptable import org.mozilla.javascript.WrapFactory import java.lang.reflect.Member -import java.lang.reflect.Modifier /** * This wrap factory is used for security reasons. JSR 223 script @@ -52,67 +50,18 @@ object RhinoWrapFactory : WrapFactory() { javaObject: Any, staticType: Class<*>? ): Scriptable? { - scope?.delete("Packages") - val sm = System.getSecurityManager() val classShutter = RhinoClassShutter - return if (javaObject is ClassLoader) { - sm?.checkPermission(RuntimePermission("getClassLoader")) - super.wrapAsJavaObject(cx, scope, javaObject, staticType) - } else { - var name: String? = null - if (javaObject is Class<*>) { - name = javaObject.name - } else if (javaObject is Member) { - if (sm != null && !Modifier.isPublic(javaObject.modifiers)) { - return null - } - name = javaObject.declaringClass.name - } - if (name != null) { - if (!classShutter.visibleToScripts(name)) null else super.wrapAsJavaObject( - cx, - scope, - javaObject, - staticType - ) - } else { - var dynamicType: Class<*>? = javaObject.javaClass - name = dynamicType!!.name + return when (javaObject) { + is ClassLoader, is Class<*>, is Member, is android.content.Context -> null + else -> { + val name = javaObject.javaClass.name if (classShutter.visibleToScripts(name)) { super.wrapAsJavaObject(cx, scope, javaObject, staticType) } else { - var type: Class<*>? = null - if (staticType != null && staticType.isInterface) { - type = staticType - } else { - while (dynamicType != null) { - dynamicType = dynamicType.superclass - name = dynamicType.name - if (classShutter.visibleToScripts(name)) { - type = dynamicType - break - } - } - assert(type != null) { "java.lang.Object 不可访问" } - } - RhinoJavaObject(scope, javaObject, type) + null } } } } - private class RhinoJavaObject( - scope: Scriptable?, - obj: Any?, - type: Class<*>? - ) : NativeJavaObject(scope, null, type) { - init { - javaObject = obj - } - - override fun get(name: String, start: Scriptable): Any { - return if (name != "getClass" && name != "exec") super.get(name, start) else NOT_FOUND - } - } - } \ No newline at end of file