1 23 24 package com.sun.enterprise.cli.commands; 25 26 import com.sun.appserv.management.client.prefs.LoginInfo; 27 import com.sun.appserv.management.client.prefs.LoginInfoStore; 28 import com.sun.appserv.management.client.prefs.LoginInfoStoreFactory; 29 import com.sun.enterprise.cli.framework.*; 30 31 import java.io.IOException ; 32 import javax.management.MBeanServerConnection ; 33 34 public class LoginCommand extends S1ASCommand 35 { 36 37 42 public boolean validateOptions() throws CommandValidationException 43 { 44 return super.validateOptions(); 45 } 46 47 48 52 public void runCommand() throws CommandException, CommandValidationException 53 { 54 validateOptions(); 55 String userName = getUser(); 56 String password = getPassword(); 57 final String host = getHost(); 58 final int port = getPort(); 59 authenticate(host, port, userName, password); 60 saveLogin(host, port, userName, password); 61 } 62 63 protected String getUser() throws CommandValidationException 64 { 65 try { 66 InputsAndOutputs.getInstance().getUserOutput().print( 67 getLocalizedString("AdminUserPrompt")); 68 return InputsAndOutputs.getInstance().getUserInput().getLine(); 69 } 70 catch (IOException ioe) 71 { 72 throw new CommandValidationException(getLocalizedString("CannotReadOption", 73 new Object []{"user"})); 74 } 75 } 76 77 78 protected String getPassword() throws CommandValidationException 79 { 80 String passwordValue; 81 82 try 83 { 84 InputsAndOutputs.getInstance().getUserOutput().print( 85 getLocalizedString("AdminPasswordPrompt")); 86 passwordValue = new CliUtil().getPassword(); 87 } 88 catch (java.lang.NoClassDefFoundError e) 89 { 90 passwordValue = readInput(); 91 } 92 catch (java.lang.UnsatisfiedLinkError e) 93 { 94 passwordValue = readInput(); 95 } 96 catch (Exception e) 97 { 98 throw new CommandValidationException(e); 99 } 100 return passwordValue; 101 } 102 103 104 private void authenticate(final String host, final int port, final String user, final String password) 105 throws CommandException, CommandValidationException { 106 try { 107 final Object [] params = new Object [] {host, ""+port}; 108 CLILogger.getInstance().printMessage(getLocalizedString("AuthenticatingMsg", params)); 109 final MBeanServerConnection mbsc = super.getMBeanServerConnection(host, port, user, password); 110 final String dd = mbsc.getDefaultDomain(); final String msg = "Authentication succeeded to: " + host + "and port: " + port; 112 CLILogger.getInstance().printDebugMessage(msg); 113 } 114 catch(final IOException ioe) { 115 throw new CommandException(ioe); 116 } 117 } 118 119 120 private void saveLogin(final String host, final int port, final String user, final String password) 121 throws CommandException { 122 try { 123 final LoginInfoStore store = LoginInfoStoreFactory.getStore(null); 124 final LoginInfo login = new LoginInfo(host, port, user, password); 125 String msg = null; 126 final boolean storeIt = handleExists(store, login); 127 if (storeIt) { 128 store.store(login, true); 129 final Object [] params = new Object [] {login.getUser(), login.getHost(), ""+login.getPort(), store.getName()}; 130 msg = getLocalizedString("LoginInfoStored", params); 131 } 132 else { 133 final Object [] params = new Object [] {login.getHost(), ""+login.getPort()}; 134 msg = getLocalizedString("LoginInfoNotStored", params); 135 } 136 CLILogger.getInstance().printMessage(msg); 137 } 138 catch(final Exception e) { 139 throw new CommandException(e); 140 } 141 } 142 143 144 private boolean handleExists(final LoginInfoStore store, final LoginInfo login) throws Exception { 145 boolean storeIt = true; 146 if (store.exists(login.getHost(), login.getPort())) { 147 storeIt = promptOnce(login); 148 } 149 return ( storeIt ); 150 } 151 152 153 private boolean promptOnce(final LoginInfo login) throws Exception { 154 boolean userPressedYes = false; 155 final String YES = "y"; 156 final Object [] loginId = new Object [] {login.getHost(), ""+login.getPort()}; 157 final String prompt = getLocalizedString("ShouldOverwriteLogin", loginId); 158 final InputsAndOutputs io = InputsAndOutputs.getInstance(); 159 io.getUserOutput().print(prompt); 160 final String in = io.getUserInput().getLine(); 161 userPressedYes = YES.equalsIgnoreCase(in); 162 return ( userPressedYes ); 163 } 164 } | Popular Tags |