From ed09a3ad33bd7c58f3f1f9817984cb50454abcd8 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 29 Feb 2024 20:23:42 -0500 Subject: [PATCH] EnableBannedClasses Config Option --- .../java/noppes/npcs/config/ConfigScript.java | 16 +++++++---- .../npcs/controllers/ScriptController.java | 27 ++++++++++--------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/main/java/noppes/npcs/config/ConfigScript.java b/src/main/java/noppes/npcs/config/ConfigScript.java index 655a55635..32af30968 100644 --- a/src/main/java/noppes/npcs/config/ConfigScript.java +++ b/src/main/java/noppes/npcs/config/ConfigScript.java @@ -52,6 +52,9 @@ public class ConfigScript public static Property ScriptDevIDsProperty; public static String ScriptDevIDs = ""; + public static Property EnableBannedClassesProperty; + public static boolean EnableBannedClasses = false; + public static Property BannedClassesProperty; public final static HashSet BannedClasses = new HashSet<>(); @@ -100,6 +103,14 @@ public class ConfigScript "If left empty and ScriptsOpsOnly is false, anyone can see and edit scripts with a scripter."); ScriptDevIDs = ScriptDevIDsProperty.getString(); + EnableBannedClassesProperty = config.get(CUSTOMIZATION, "Enable Banned Classes", false, "Enables the Banned Classes Functionality"); + EnableBannedClasses = EnableBannedClassesProperty.getBoolean(false); + + BannedClassesProperty = config.get(CUSTOMIZATION, "Banned Classes", "java.net.URL,java.net.URI", + "Comma separated list of classes that cannot be used in scripts through Java.for().\n" + + "Classes must be fully written out with library names preceding them.\n" + + "This is a feature ONLY AVAILABLE ON NASHORN."); + // Convert to Legacy if(CustomNpcs.legacyExist){ ScriptingEnabled = LegacyConfig.ScriptingEnabled; @@ -138,12 +149,7 @@ public class ConfigScript } } catch (Exception ignored) {} - BannedClassesProperty = config.get(CUSTOMIZATION, "Banned Classes", "java.net.URL,java.net.URI", - "Comma separated list of classes that cannot be used in scripts through Java.for().\n" + - "Classes must be fully written out with library names preceding them.\n" + - "This is a feature ONLY AVAILABLE ON NASHORN."); String bannedClassesString = BannedClassesProperty.getString(); - try { BannedClasses.clear(); BannedClasses.addAll(Arrays.asList(bannedClassesString.split(","))); diff --git a/src/main/java/noppes/npcs/controllers/ScriptController.java b/src/main/java/noppes/npcs/controllers/ScriptController.java index ddd75ab9a..2ff38be7b 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptController.java +++ b/src/main/java/noppes/npcs/controllers/ScriptController.java @@ -251,19 +251,22 @@ public class ScriptController { public ScriptEngine getEngineByName(String language) { if (nashornNames.contains(language) && this.nashornFactory != null) { ScriptEngine scriptEngine; - - try { - ClassFilter filter = s -> { - for (String className : ConfigScript.BannedClasses) { - if (s.compareTo(className) == 0) { - return false; + if(ConfigScript.EnableBannedClasses){ + try { + ClassFilter filter = s -> { + for (String className : ConfigScript.BannedClasses) { + if (s.compareTo(className) == 0) { + return false; + } } - } - return true; - }; - NashornScriptEngineFactory nashornScriptEngineFactory = (NashornScriptEngineFactory) this.nashornFactory; - scriptEngine = nashornScriptEngineFactory.getScriptEngine(filter); - } catch (Exception e) { + return true; + }; + NashornScriptEngineFactory nashornScriptEngineFactory = (NashornScriptEngineFactory) this.nashornFactory; + scriptEngine = nashornScriptEngineFactory.getScriptEngine(filter); + } catch (Exception e) { + scriptEngine = this.nashornFactory.getScriptEngine(); + } + } else { scriptEngine = this.nashornFactory.getScriptEngine(); } scriptEngine.setBindings(this.manager.getBindings(), ScriptContext.GLOBAL_SCOPE);