1 17 18 package org.apache.james.client; 19 20 import java.io.*; 21 import java.util.HashMap ; 22 import java.util.ArrayList ; 23 import java.util.Iterator ; 24 import java.util.StringTokenizer ; 25 import java.rmi.Naming ; 26 import java.rmi.RemoteException ; 27 import org.apache.james.remotemanager.UserManager; 28 import org.apache.james.remotemanager.UserManagerAdmin; 29 30 31 35 public class UserManagerAdminClient { 36 37 private UserManager userManager; 38 39 40 public UserManagerAdminClient() { 41 } 42 43 private void print(String text) { 44 System.out.print(text); 45 } 46 47 private void println(String text) { 48 print(text + "\n"); 49 } 50 51 52 public void execute(String rmiURL) 53 throws Exception { 54 BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 55 String login = null; 56 String password = null; 57 58 println("JAMES Remote UserManager Administration Tool"); 59 println("--------------------------------------------\n"); 60 println("Please enter your login and password"); 61 print("Login : "); 62 login = in.readLine(); 63 print("Password: "); 64 password = in.readLine(); 65 66 UserManagerAdmin uma = (UserManagerAdmin)Naming.lookup(rmiURL); 67 while ((userManager = uma.login(login, password)) == null) { 68 println("login failed!\n"); 69 print("Login : "); 70 login = in.readLine(); 71 print("Password: "); 72 password = in.readLine(); 73 } 74 75 println("Welcome " + login + "! HELP for a list of commands"); 76 print("> "); 77 while (parseCommand(in.readLine())) { 78 print("\n> "); 79 } 80 81 println("\nGoodbye..."); 82 } 83 84 private boolean parseCommand(String commandLine) { 85 if ((commandLine == null) || (commandLine.equals(""))) { 86 return true; 87 } 88 StringTokenizer commandLineTokenizer = new StringTokenizer (commandLine.trim(), " "); 89 int argumentCount = commandLineTokenizer.countTokens(); 90 if (argumentCount < 1) { 91 return true; 92 } 93 String command = commandLineTokenizer.nextToken(); 94 String [] arguments = null; 95 arguments = new String [argumentCount - 1]; 96 int i = 0; 97 while (commandLineTokenizer.hasMoreTokens()) { 98 arguments[i] = commandLineTokenizer.nextToken(); 99 i++; 100 } 101 102 try { 103 if (command.equalsIgnoreCase("quit") || 104 command.equalsIgnoreCase("exit")) { 105 return false; 106 } else if (command.equalsIgnoreCase("help")) { 107 help(); 108 } else if (command.equalsIgnoreCase("list")) { 109 listRepositories(arguments); 110 } else if (command.equalsIgnoreCase("select")) { 111 selectRepository(arguments); 112 } else if (command.equalsIgnoreCase("adduser")) { 113 addUser(arguments); 114 } else if (command.equalsIgnoreCase("deleteuser")) { 115 deleteUser(arguments); 116 } else if (command.equalsIgnoreCase("verifyuser")) { 117 verifyUser(arguments); 118 } else if (command.equalsIgnoreCase("listusers")) { 119 listUsers(); 120 } else if (command.equalsIgnoreCase("countusers")) { 121 countUsers(); 122 } else if (command.equalsIgnoreCase("setpassword")) { 123 setPassword(arguments); 124 } else if (command.equalsIgnoreCase("setalias")) { 125 setAlias(arguments); 126 } else if (command.equalsIgnoreCase("unsetalias")) { 127 unsetAlias(arguments); 128 } else if (command.equalsIgnoreCase("checkalias")) { 129 checkAlias(arguments); 130 } else if (command.equalsIgnoreCase("setforward")) { 131 setForward(arguments); 132 } else if (command.equalsIgnoreCase("unsetforward")) { 133 unsetForward(arguments); 134 } else if (command.equalsIgnoreCase("checkforward")) { 135 checkForward(arguments); 136 } else { 137 println("Unknown command!"); 138 } 139 } catch (RemoteException re) { 140 println(">EXCEPTION: " + re.getMessage()); 141 } 142 return true; 143 } 144 145 146 private void help() { 147 println("Currently implemented commmands:"); 148 println("help display this help"); 149 println("list list all repositories"); 150 println("select [name] select repository"); 151 println("adduser [username] [password] add a new user"); 152 println("deleteuser [username] delete existing user"); 153 println("verifyuser [username] verify if specified user exist"); 154 println("listusers display existing userss"); 155 println("countusers display number of existing users"); 156 println("setpassword [username] [newpassword] set new password for existing user"); 157 println("setalias [username] [alias] set alias for existing user"); 158 println("unsetalias [username] [alias] unset alias for existing user"); 159 println("checkalias [username] check if alias is set for existing user"); 160 println("setforward [username] [forward] set forward for existing user"); 161 println("unsetforward [username] [forward] unset forward for existing user"); 162 println("checkforward [username] check if forward is set for existing user"); 163 println("quit|exit quit Administration Tool"); 164 } 165 166 167 private void listRepositories(String [] args) 168 throws RemoteException { 169 ArrayList list = userManager.getRepositoryNames(); 170 Iterator iterator = list.iterator(); 171 println("Repositories:"); 172 while (iterator.hasNext()) { 173 println("-> " + (String )iterator.next()); 174 } 175 } 176 177 private void selectRepository(String [] args) 178 throws RemoteException { 179 if (args.length != 1) { 180 println("usage: select [name]"); 181 return; 182 } 183 184 String name = args[0]; 185 if (userManager.setRepository(name)) { 186 println("select new repository [" + name + "]"); 187 } else { 188 println("unknown repository!"); 189 } 190 } 191 192 private void addUser(String [] args) 193 throws RemoteException { 194 if (args.length != 2) { 195 println("usage: adduser [username] [password]"); 196 return; 197 } 198 String username = args[0]; 199 String password = args[1]; 200 if (userManager.verifyUser(username)) { 201 println("User " + username + " already exist!"); 202 } else { 203 if (userManager.addUser(username, password)) { 204 println("User " + username + " added."); 205 } else { 206 println("Error adding user " + username); 207 } 208 } 209 } 210 211 private void deleteUser(String [] args) 212 throws RemoteException { 213 if (args.length != 1) { 214 println("usage: deleteuser [username]"); 215 return; 216 } 217 String username = args[0]; 218 if (userManager.deleteUser(username)) { 219 println("User " + username + " deleted."); 220 } else { 221 println("Failed to delete User " + username); 222 } 223 } 224 225 private void verifyUser(String [] args) 226 throws RemoteException { 227 if (args.length != 1) { 228 println("usage: verifyuser [username]"); 229 return; 230 } 231 String username = args[0]; 232 if (userManager.verifyUser(username)) { 233 println("User " + username + " exist."); 234 } else { 235 println("User " + username + " does not exist."); 236 } 237 } 238 239 private void listUsers() 240 throws RemoteException { 241 countUsers(); 242 ArrayList list = userManager.getUserList(); 243 Iterator iterator = list.iterator(); 244 while (iterator.hasNext()) { 245 println("User: " + (String )iterator.next()); 246 } 247 } 248 249 private void countUsers() 250 throws RemoteException { 251 println("Existing users: " + userManager.getCountUsers()); 252 } 253 254 private void setPassword(String [] args) 255 throws RemoteException { 256 if (args.length != 2) { 257 println("usage: setpassword [username] [newpassword]"); 258 return; 259 } 260 String username = args[0]; 261 String password = args[1]; 262 if (userManager.setPassword(username, password)) { 263 println("Password for user " + username + " reset"); 264 } else { 265 println("Error resetting password for user " + username); 266 } 267 } 268 269 private void setAlias(String [] args) 270 throws RemoteException { 271 if (args.length != 2) { 272 println("usage: setalias [username] [alias]"); 273 return; 274 } 275 String username = args[0]; 276 String alias = args[1]; 277 if (userManager.setAlias(username, alias)) { 278 println("Alias for user " + username + " set to: " + alias); 279 } else { 280 println("Error setting alias " + alias + " for user " + username); 281 } 282 } 283 284 private void unsetAlias(String [] args) 285 throws RemoteException { 286 if (args.length != 1) { 287 println("usage: unsetalias [username]"); 288 return; 289 } 290 String username = args[0]; 291 if (userManager.unsetAlias(username)) { 292 println("Alias for user " + username + " unset!"); 293 } else { 294 println("Error unset alias for user " + username); 295 } 296 } 297 298 private void checkAlias(String [] args) 299 throws RemoteException { 300 if (args.length != 1) { 301 println("usage: checkalias [username]"); 302 return; 303 } 304 String username = args[0]; 305 String alias = userManager.checkAlias(username); 306 if (alias != null) { 307 println("Alias for user " + username + " is set to " + alias); 308 } else { 309 println("No alias is set for user " + username); 310 } 311 } 312 313 private void setForward(String [] args) 314 throws RemoteException { 315 if (args.length != 2) { 316 println("usage: setforward [username] [forward]"); 317 return; 318 } 319 String username = args[0]; 320 String forward = args[1]; 321 if (userManager.setForward(username, forward)) { 322 println("Forward for user " + username + " set to: " + forward); 323 } else { 324 println("Error setting forward " + forward + " for user " + username); 325 } 326 } 327 328 private void unsetForward(String [] args) 329 throws RemoteException { 330 if (args.length != 1) { 331 println("usage: unsetforward [username]"); 332 return; 333 } 334 String username = args[0]; 335 if (userManager.unsetForward(username)) { 336 println("Forward for user " + username + " unset!"); 337 } else { 338 println("Error unset forward for user " + username); 339 } 340 } 341 342 private void checkForward(String [] args) 343 throws RemoteException { 344 if (args.length != 1) { 345 println("usage: checkforward [username]"); 346 return; 347 } 348 String username = args[0]; 349 String forward = userManager.checkForward(username); 350 if (forward != null) { 351 println("Forward for user " + username + " is set to " + forward); 352 } else { 353 println("No forward is set for user " + username); 354 } 355 } 356 357 358 359 360 public static void main(String [] args) { 361 try { 362 if (args.length != 1) { 363 System.out.println("usage: UserManagerAdminClient <rmi-url>"); 364 return; 365 } 366 (new UserManagerAdminClient()).execute(args[0]); 367 } catch (Exception e) { 368 e.printStackTrace(); 369 } 370 } 371 372 } 373 | Popular Tags |