From 65ed02984f004ce736744e56540bc04324f311c4 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 14 Feb 2013 22:54:45 +0100 Subject: Fold script console environment into Script. Add support for 'textFiles/consoleScript.lang.txt' console function declarations in kernel and modules. Use that context for ScriptConsole network consoles and new ShellConsole client process. --- .../java/com/c2kernel/scripting/ScriptConsole.java | 50 ++++++++-------------- 1 file changed, 17 insertions(+), 33 deletions(-) (limited to 'src/main/java/com/c2kernel/scripting/ScriptConsole.java') diff --git a/src/main/java/com/c2kernel/scripting/ScriptConsole.java b/src/main/java/com/c2kernel/scripting/ScriptConsole.java index 826ab88..9b70641 100644 --- a/src/main/java/com/c2kernel/scripting/ScriptConsole.java +++ b/src/main/java/com/c2kernel/scripting/ScriptConsole.java @@ -13,13 +13,12 @@ import java.util.StringTokenizer; import javax.script.Bindings; import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; import org.tanukisoftware.wrapper.WrapperManager; +import com.c2kernel.entity.proxy.AgentProxy; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; import com.c2kernel.utils.server.SocketHandler; /************************************************************************** @@ -139,19 +138,21 @@ public class ScriptConsole implements SocketHandler { // get system objects try { Logger.addLogStream(output, 0); - - engine = new ScriptEngineManager().getEngineByName("JavaScript"); - beans = engine.createBindings(); - beans.put("storage", Gateway.getStorage()); - beans.put("db", Gateway.getStorage().getDb()); - beans.put("proxy", Gateway.getProxyManager()); - beans.put("lookup", Gateway.getLDAPLookup()); - beans.put("orb", Gateway.getORB()); + AgentProxy user = Gateway.getCurrentUser(); try { - beans.put("system", Gateway.getProxyManager().getProxy( - Gateway.getLDAPLookup().getRoleManager().getAgentPath("system"))); + if (user == null) user = (AgentProxy)Gateway.getProxyManager().getProxy( + Gateway.getLDAPLookup().getRoleManager().getAgentPath("system")); + } catch (Exception ex) { + output.println("System agent unavailable"); + } + Script context; + try { + context = new Script("javascript", user, output); } catch (Exception ex) { - output.println("System agent unavailable"); + output.println("Error initializing console script context"); + ex.printStackTrace(output); + shutdown(); + return; } StringBuffer commandBuffer = new StringBuffer(); @@ -176,24 +177,6 @@ public class ScriptConsole implements SocketHandler { shutdown(); continue; } - else if(command.startsWith("log")) { - try { - int newLogLevel = Integer.parseInt(command.substring(4)); - Logger.removeLogStream(output); - Logger.addLogStream(output, newLogLevel); - Logger.msg("Log level for "+socket.getInetAddress()+" set to "+newLogLevel); - continue; - } catch (NumberFormatException ex) { } - } - else if(command.equals("help")) { - output.println(Resource.findTextResource("textFiles/consoleHelp.txt")); - continue; - } - else if(command.equals("version")) { - output.println("Kernel version: "+Resource.getKernelVersion()); - output.println("Modules loaded: "+Gateway.getModuleManager().getModuleVersions()); - continue; - } try { if (command.endsWith("\\")) { commandBuffer.append(command.substring(0,command.length()-1)); @@ -206,10 +189,11 @@ public class ScriptConsole implements SocketHandler { // process control if (command.equals("shutdown")) { - WrapperManager.stop(0); + WrapperManager.stop(0); } else { - Object response = engine.eval(command, beans); + context.setScript(command); + Object response = context.execute(); if (response == null) output.println("Ok"); else -- cgit v1.2.3