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/process/ClientShell.java | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/main/java/com/c2kernel/process/ClientShell.java (limited to 'src/main/java/com/c2kernel/process') 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(); + + } + +} -- cgit v1.2.3