From a860387c9fe15460adabd25d0d26131b0bf22c5d Mon Sep 17 00:00:00 2001 From: walterhiggins Date: Sat, 5 Jan 2013 16:08:08 +0000 Subject: [PATCH] Only console user can load scripts - players cant load scripts because it prompts a file open dialog --- .../scriptcraft/ScriptCraftEvaluator.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/bukkit/ScriptCraft/src/net/walterhiggins/scriptcraft/ScriptCraftEvaluator.java b/bukkit/ScriptCraft/src/net/walterhiggins/scriptcraft/ScriptCraftEvaluator.java index 82cc360..cf227ec 100644 --- a/bukkit/ScriptCraft/src/net/walterhiggins/scriptcraft/ScriptCraftEvaluator.java +++ b/bukkit/ScriptCraft/src/net/walterhiggins/scriptcraft/ScriptCraftEvaluator.java @@ -4,6 +4,7 @@ import org.mozilla.javascript.*; import java.util.List; import java.io.*; import javax.swing.JFileChooser; +import org.bukkit.entity.Player; public class ScriptCraftEvaluator { @@ -54,9 +55,17 @@ public class ScriptCraftEvaluator { return (ScriptableObject)this.scope; } + // + // wph 20130105 - Only the console user should be able to load a script + // players should not be able to open scripts + // + private static Object invoker = null; + public Object eval(String javascript, Object invoker) { + ScriptCraftEvaluator.invoker = invoker; + ScriptCraftEvaluator.sc.setInvoker(invoker); ScriptCraftEvaluator.sc.notifyAdministrators("js> " + javascript); Object result = null; @@ -81,6 +90,13 @@ public class ScriptCraftEvaluator */ public static Object load(Context cx, Scriptable thisObj, Object[] args, Function funObj) { + if (ScriptCraftEvaluator.invoker instanceof Player){ + ScriptCraftEvaluator.sc.notifyAdministrators(invoker.toString() + " tried to load a script.\n" + + "Only the console user can load scripts.\n" + + "Players cannot load scripts."); + return null; + } + Object result = null; File scriptFile = null;