/* * 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() { @SuppressWarnings("resource") // closing the scanner closes system.in 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)); @SuppressWarnings("resource") // closing the scanner closes system.in 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(); } }