Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.hub;
 
 
 
 
 /*
  */
 public class Foreground {
 	static public TaskRun lastdebugrequest = null
 	
 	public static void main(String[] args) {
 		String deployment = (args.length > 0) ? args[0] : null;
 		String squadid = (args.length > 1) ? args[1] : null;
 		String hubid = (args.length > 2) ? args[2] : null;
 		
 		HubResources resources = new HubResources(deploymentsquadidnullhubid);
 
 		OperationResult or = resources.init();
 		
 		if (or.hasErrors()) {
 			Logger.error("Unable to continue, hub resources not properly configured");
 			return;
 		}
 		
 		or = ..start(resources);
 		
 		if (or.hasErrors()) {
 			Logger.error("Unable to continue, hub resources not properly initialized");			
 			return;
 		}
 		
 			public void startDebugger(TaskRun run) {
 				if (!GraphicsEnvironment.isHeadless()) {
 					ScriptUtility.goSwing(run);
 				}
 				else {
 					..println("---------------------------------------------------------------------------");
 					..println("  Script Requesting Debugger: " + run.getTask().getTitle());
 					..println("---------------------------------------------------------------------------");
 					
 				}
 			}
 		});
 		
 		OperationContext.useNewRoot();
 		
 		final Scanner scan = new Scanner(."UTF-8");
 		
 		XElement croot = resources.getConfig();
 		
 		XElement cliel = croot.find("CommandLine");
 		
 		if ((cliel == null) || !cliel.hasAttribute("ClientClass")) {
			..println("Missing CommadLine configuration");
		}
		else {
			ModuleLoader loader = new ModuleLoader(Hub.class.getClassLoader());
			loader.init(orcliel);
			ILocalCommandLine cli = (ILocalCommandLineloader.getInstance(cliel.getAttribute("ClientClass"));
			ApiSession capi = null;
			boolean auth = true;
			String mode = cliel.getAttribute("Mode""root");
			String sess = cliel.getAttribute("Session");
			if ("root".equals(mode)) {
				if (StringUtil.isEmpty(sess))
					capi = ApiSession.createLocalSession(mode);
				else
					capi = ApiSession.createSessionFromConfig(sess);  //LocalSession("root");
				//System.out.print("Password: ");
				//String pass = scan.nextLine();
				Console cons = null;
				String pass = null
				char[] passwd = null;
				 
				if ((cons = System.console()) != null &&
				    (passwd = cons.readPassword("Password:")) != null) {
					pass = new String(passwd);
				}
				else {
					..print("Password: ");
					pass = scan.nextLine();
				}
				//System.out.println("Entered: " + pass);
				if (StringUtil.isEmpty(pass) || "0".equals(pass))
					..println("Stopping.");
				else if (capi.startSession("root"pass)) 
					cli.run(scancapi);
				else
					..println("Error logging in session");
			}
			else {
				while (true) {			
					..print("Domain (e.g. root): ");
					String domain = scan.nextLine();
					if ("-".equals(domain)) {
						..println("--------------------------------------------");
						continue;
					}
					if ("0".equals(domain)) {
						auth = false;
						break;
					}
					if ("*".equals(domain)) {
						capi = ApiSession.createSessionFromConfig(sess);  // LocalSession("root");
						if (capi.startSession("root""A1s2d3f4"))
							break;
					}
					capi = ApiSession.createSessionFromConfig(sess);  //  LocalSession(domain);
					//capi = CoreApi.createSessionFromConfig(domain);
					..print("UserName: ");
					String user = scan.nextLine();
					//System.out.print("Password: ");
					//String pass = scan.nextLine();
					Console cons = null;
					String pass = null
					char[] passwd = null;
					 
					if ((cons = System.console()) != null &&
					    (passwd = cons.readPassword("Password:")) != null) {
						pass = new String(passwd);
					}
					else {
						..print("Password: ");
						pass = scan.nextLine();
					}
					if (capi.startSession(userpass))
						break;
					..println("Failed");
				}
				if (auth)
					cli.run(scancapi);
			}
			if (capi != null)
				capi.stop();
		}
	}
	static public void utilityMenu(Scanner scan) { 	
		boolean running = true;
		while(running) {
			try {
				..println("-----------------------------------------------");
				..println("   Hub " + ..getResources().getHubId() + " Utility Menu");
				..println("-----------------------------------------------");
				..println("0)  Exit");
				..println("1)  Encrypt Setting");
				..println("2)  Hash Setting");
				//System.out.println("3)  Decrypt Setting");
				..println("4)  System Status");
				..println("100)  Enter Script Debugger");
				String opt = scan.nextLine();
				Long mopt = StringUtil.parseInt(opt);
				if (mopt == null)
					continue;
				switch (mopt.intValue()) {
				case 0:
					running = false;
					break;
				case 1: {
					..println("Enter setting to encrypt:");
					String val = scan.nextLine();
					break;
				}
				case 2: {
					..println("Enter setting to hash:");
					String val = scan.nextLine();
					break;
				}
				case 793: {
					..println("Enter setting to decrypt:");
					String val = scan.nextLine();
					break;
				}
				case 4: {
					Foreground.dumpStatus();
					break;
				}
				case 100: {
					Foreground.debugScript(scan);
					break;
				}
				}
			}
			catch(Exception x) {
				..println("CLI error: " + x);
			}
		}		
	}
	static void debugScript(Scanner scn) {
		if (r == null) {
			..println("No debugger requests are availabled.");
			return;
		}
		act.setInDebugger(true);
		AtomicLong lastinstrun = new AtomicLong(act.getRunCount());
		AtomicLong lastinstmrk = new AtomicLong(lastinstrun.get());
			public void run() {
				long cnt = act.getRunCount();
				if (lastinstrun.get() == cnt)
					return;
				lastinstrun.set(cnt);
				if (r.isComplete())
					..println("DEBUGGER: Press enter to exit or ? for help.");
				else {
					RecordStruct debuginfo = act.getDebugInfo();
					ListStruct stack = debuginfo.getFieldAsList("Stack");					
					RecordStruct currinst = stack.getItemAsRecord(stack.getSize() - 1);
					long line = currinst.getFieldAsInteger("Line");
					long col = currinst.getFieldAsInteger("Column");
					..println("DEBUGGER: (" + line + "," + col +") " + currinst.getFieldAsString("Command"));
					..println("DEBUGGER: Press enter to continue or ? for help.");
				}
			}
		}, 1);
		..println("DEBUGGER: Press enter to continue or ? for help.");
		while (!r.isComplete()) {
			String cmd = scn.nextLine();
			// dump
			if (cmd.startsWith("d")) {
				..println("------------------------------------------------------------------------");
				try {
				}
				catch (Exception x) {
					..println("DEBUGGER: unable to dump" + x);
				}
				..println("------------------------------------------------------------------------");
			}
			// help
			else if (cmd.startsWith("?")) {
				..println("(n)ext");
				..println("(r)un");
				..println("(s)top");
				..println("(d)ump stack");
			}
			// stop
			else if (cmd.startsWith("s")) {
				r.kill();
			}
			// run
			else if (cmd.startsWith("r")) {
				if (lastinstmrk.get() > lastinstrun.get()) {
					..println("DEBUGGER: Wait, script is executing...");
				}
				else {
					lastinstmrk.set(lastinstrun.get());
					lastinstmrk.incrementAndGet();
					..println("DEBUGGER: Running...");
					act.setDebugMode(false);
				}
			}
			// next
			else if (!r.isComplete()) {
				if (lastinstmrk.get() > lastinstrun.get()) {
					..println("DEBUGGER: Wait, script is executing...");
				}
				else {
					lastinstmrk.set(lastinstrun.get());
					lastinstmrk.incrementAndGet();
					..println("DEBUGGER: Executing...");
					act.setDebugMode(true);
				}
			}
		}
		..println("DEBUGGER: Script done.");
	}
	static public void dumpStatus() {
		..println(" ------------------------------------------- ");
		//System.out.println("        Pool: " + pool.getName());
		//System.out.println("    Back Log: " + pool.backlog());
		//System.out.println("  Busy Level: " + pool.howBusy());
		..println("   # Threads: " + pool.threadCount());
		..println("   # Created: " + pool.threadsCreated());
		..println("      # Hung: " + pool.threadsHung());
		..println(" ------------------------------------------- ");
		for (WorkBucket bucket : pool.getBuckets()) {
			..println(" Bucket:        " + bucket.getName());
			..println(" - In Progress: " + bucket.inprogress());
			for (TaskRun task : bucket.tasksInProgress()) {
				..println(" -- " + task.getTask().getId());
			}
		}
		..println(" Slow Sys Work Status: " + rep.getStatus() + " @ " + new DateTime(rep.getLast()));
		..println(" Fast Sys Work Status: " + rep.getStatus() + " @ " + new DateTime(rep.getLast()));
	}
New to GrepCode? Check out our FAQ X