noel 2003/09/23 18:59:34 Modified: src/java/org/apache/james/remotemanager Tag: branch_2_1_fcs RemoteManagerHandler.java Log: Added two commands, showalias and showforwarding submitted by Jens A. Jensen Revision Changes Path No revision No revision 1.21.4.5 +89 -7 james-server/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java Index: RemoteManagerHandler.java =================================================================== RCS file: /home/cvs/james-server/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java,v retrieving revision 1.21.4.4 retrieving revision 1.21.4.5 diff -u -r1.21.4.4 -r1.21.4.5 --- RemoteManagerHandler.java 17 May 2003 07:20:14 -0000 1.21.4.4 +++ RemoteManagerHandler.java 24 Sep 2003 01:59:34 -0000 1.21.4.5 @@ -89,13 +89,7 @@ * Provides a really rude network interface to administer James. * Allow to add accounts. * TODO: -improve protocol - * -add remove user * -much more... - * @version 1.0.0, 24/04/1999 - * @author Federico Barbieri <[EMAIL PROTECTED]> - * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> - * @author <a href="mailto:[EMAIL PROTECTED]">Charles Benett</a> - * @author Peter M. Goldstein <[EMAIL PROTECTED]> * * @version $Revision$ * @@ -145,6 +139,11 @@ private static final String COMMAND_SETFORWARDING = "SETFORWARDING"; /** + * The text string for the SHOWFORWARDING command + */ + private static final String COMMAND_SHOWFORWARDING = "SHOWFORWARDING"; + + /** * The text string for the UNSETFORWARDING command */ private static final String COMMAND_UNSETFORWARDING = "UNSETFORWARDING"; @@ -155,6 +154,11 @@ private static final String COMMAND_SETALIAS = "SETALIAS"; /** + * The text string for the SHOWALIAS command + */ + private static final String COMMAND_SHOWALIAS = "SHOWALIAS"; + + /** * The text string for the UNSETALIAS command */ private static final String COMMAND_UNSETALIAS = "UNSETALIAS"; @@ -455,6 +459,10 @@ return doSETALIAS(argument); } else if (command.equals(COMMAND_SETFORWARDING)) { return doSETFORWARDING(argument); + } else if (command.equals(COMMAND_SHOWALIAS)) { + return doSHOWALIAS(argument); + } else if (command.equals(COMMAND_SHOWFORWARDING)) { + return doSHOWFORWARDING(argument); } else if (command.equals(COMMAND_UNSETALIAS)) { return doUNSETALIAS(argument); } else if (command.equals(COMMAND_UNSETFORWARDING)) { @@ -695,8 +703,10 @@ out.println("deluser [username] delete existing user"); out.println("setpassword [username] [password] sets a user's password"); out.println("setalias [user] [alias] locally forwards all email for 'user' to 'alias'"); + out.println("showalias [username] shows a user's current email alias"); out.println("unsetalias [user] unsets an alias for 'user'"); out.println("setforwarding [username] [emailaddress] forwards a user's email to another email address"); + out.println("showforwarding [username] shows a user's current email forwarding"); out.println("unsetforwarding [username] removes a forward"); out.println("user [repositoryname] change to another user repository"); out.println("shutdown kills the current JVM (convenient when James is run as a daemon)"); @@ -815,6 +825,78 @@ getLogger().error("Error setting forwarding"); } out.flush(); + return true; + } + + /** + * Handler method called upon receipt of an SHOWALIAS command. + * Returns whether further commands should be read off the wire. + * + * @param argument the user name + */ + private boolean doSHOWALIAS(String username) { + if ( username == null || username.equals("") ) { + writeLoggedFlushedResponse("Usage: showalias [username]"); + return true; + } + + JamesUser user = (JamesUser)users.getUserByName(username); + if ( user == null ) { + writeLoggedFlushedResponse("No such user " + username); + return true; + } + + if ( !user.getAliasing() ) { + writeLoggedFlushedResponse("User " + username + " does not currently have an alias"); + return true; + } + + String alias = user.getAlias(); + + if ( alias == null || alias.equals("") ) { // defensive programming -- neither should occur + String errmsg = "For user " + username + ", the system indicates that aliasing is set but no alias was found"; + out.println(errmsg); + getLogger().error(errmsg); + return true; + } + + writeLoggedFlushedResponse("Current alias for " + username + " is: " + alias); + return true; + } + + /** + * Handler method called upon receipt of an SHOWFORWARDING command. + * Returns whether further commands should be read off the wire. + * + * @param argument the user name + */ + private boolean doSHOWFORWARDING(String username) { + if ( username == null || username.equals("") ) { + writeLoggedFlushedResponse("Usage: showforwarding [username]"); + return true; + } + + JamesUser user = (JamesUser)users.getUserByName(username); + if ( user == null ) { + writeLoggedFlushedResponse("No such user " + username); + return true; + } + + if ( !user.getForwarding() ) { + writeLoggedFlushedResponse("User " + username + " is not currently being forwarded"); + return true; + } + + MailAddress fwdAddr = user.getForwardingDestination(); + + if ( fwdAddr == null ) { // defensive programming -- should not occur + String errmsg = "For user " + username + ", the system indicates that forwarding is set but no forwarding destination was found"; + out.println(errmsg); + getLogger().error(errmsg); + return true; + } + + writeLoggedFlushedResponse("Current forwarding destination for " + username + " is: " + fwdAddr); return true; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]