summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/process
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-02-14 22:54:45 +0100
committerAndrew Branson <andrew.branson@cern.ch>2013-02-14 22:54:45 +0100
commit65ed02984f004ce736744e56540bc04324f311c4 (patch)
tree6cbdc7f8f2975301042f07ef37ff4743c51a6c4e /src/main/java/com/c2kernel/process
parent48027b943a833f6639ddce33178a5694529ac91a (diff)
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.
Diffstat (limited to 'src/main/java/com/c2kernel/process')
-rw-r--r--src/main/java/com/c2kernel/process/ClientShell.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/main/java/com/c2kernel/process/ClientShell.java b/src/main/java/com/c2kernel/process/ClientShell.java
new file mode 100644
index 0000000..5bb1246
--- /dev/null
+++ b/src/main/java/com/c2kernel/process/ClientShell.java
@@ -0,0 +1,82 @@
+/*
+ * ClientShell.java
+ *
+ * Copyright (c) 2013, The CRISTAL Consortium. All rights reserved.
+ *
+ * CRISTAL kernel is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see:
+ * http://www.gnu.org/licenses/
+ */
+
+package com.c2kernel.process;
+
+import java.util.Scanner;
+
+import com.c2kernel.entity.proxy.AgentProxy;
+import com.c2kernel.scripting.Script;
+
+public class ClientShell extends StandardClient {
+
+ AgentProxy user;
+ Script console;
+
+ public ClientShell(String username, String pass) throws Exception {
+ user = Gateway.connect(username, pass);
+ console = new Script("javascript", user, System.out);
+ }
+
+ public void run() {
+ Scanner scan = new Scanner(System.in);
+ System.out.print("> ");
+ while (scan.hasNextLine()) {
+ String command = scan.nextLine();
+ console.setScript(command);
+ try {
+ Object response = console.execute();
+ if (response == null)
+ System.out.println("Ok");
+ else
+ System.out.println(response);
+ } catch (Throwable ex) {
+ ex.printStackTrace();
+ }
+ System.out.print("> ");
+ }
+ close();
+ }
+
+ public static void main(String[] args) throws Exception {
+ Gateway.init(readC2KArgs(args));
+ Scanner scan = new Scanner(System.in);
+ int loginAttempts = 0;
+ ClientShell shell = null;
+ while (shell == null && loginAttempts++ < 3) {
+ System.out.print("User:");
+ String username = scan.nextLine();
+ System.out.print("Password:");
+ String pass = scan.nextLine();
+ try {
+ shell = new ClientShell(username, pass);
+ } catch (Exception ex) {
+ System.err.println(ex.getMessage());
+ }
+ }
+ if (shell == null) {
+ System.err.println("Bye");
+ System.exit(0);
+ }
+ shell.run();
+
+ }
+
+}