You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ch...@apache.org on 2001/05/22 14:03:37 UTC

cvs commit: jakarta-james/proposals/v1.3/java/org/apache/james/userrepository DefaultJamesUser.java

charlesb    01/05/22 05:03:36

  Modified:    proposals/v1.3/conf james-config.xml
               proposals/v1.3/java/org/apache/james James.java
               proposals/v1.3/java/org/apache/james/remotemanager
                        RemoteManagerHandler.java
               proposals/v1.3/java/org/apache/james/services JamesUser.java
               proposals/v1.3/java/org/apache/james/userrepository
                        DefaultJamesUser.java
  Log:
  Implement per-user mail forwarding
  
  Revision  Changes    Path
  1.3       +2 -1      jakarta-james/proposals/v1.3/conf/james-config.xml
  
  Index: james-config.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-james/proposals/v1.3/conf/james-config.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- james-config.xml	2001/05/21 15:56:34	1.2
  +++ james-config.xml	2001/05/22 12:02:55	1.3
  @@ -37,7 +37,8 @@
   
         <!-- Set whether user names are case sensitive or insensitive -->
         <!-- Set whether to enable local aliases -->
  -      <usernames ignoreCase="TRUE" enableAliases="TRUE"/>
  +      <usernames ignoreCase="TRUE" enableAliases="TRUE"
  +                                   enableForwarding="TRUE"/>
   
   
         <!-- Set the type of permanent mailfolders to be used.
  
  
  
  1.3       +24 -2     jakarta-james/proposals/v1.3/java/org/apache/james/James.java
  
  Index: James.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/James.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- James.java	2001/05/21 15:56:43	1.2
  +++ James.java	2001/05/22 12:03:05	1.3
  @@ -75,6 +75,7 @@
       private Collection serverNames;
       private boolean ignoreCase;
       private boolean enableAliases;
  +    private boolean enableForwarding;
   
       // this used to be long, but increment operations on long are not
       // thread safe. Changed to int. 'int' should be ok, because id generation
  @@ -177,6 +178,12 @@
           } else {
   	    enableAliases = false;
   	}
  +        if (userNamesConf.getAttribute("enableForwarding").equals("TRUE")) {
  +            enableForwarding = true;
  +        } else {
  +	    enableForwarding = false;
  +	}
  +
           //Get localusers
           try {
               localusers = (UsersRepository) usersStore.getRepository("LocalUsers");
  @@ -482,10 +489,25 @@
               username = recipient.getUser();
           }
   	JamesUser user;
  -	if (enableAliases) {
  +	if (enableAliases || enableForwarding) {
   	    user = (JamesUser) localusers.getUserByName(username);
  -	    if (user.getAliasing()) {
  +	    if (enableAliases && user.getAliasing()) {
   	        username = user.getAlias();
  +	    }
  +	    if (enableForwarding && user.getForwarding()) {
  +		MailAddress forwardTo = user.getForwardingDestination();
  +		Collection recipients = new HashSet();
  +		recipients.add(forwardTo);
  +		try {
  +		    sendMail(sender, recipients, message);
  +		    getLogger().info("Mail for " + username + " forwarded to "
  +                                 +  forwardTo.toString());
  +		    return;
  +		} catch (MessagingException me) {
  +		    getLogger().error("Error forwarding mail to "
  +				      + forwardTo.toString()
  +				      + "attempting local delivery");
  +		}
   	    }
   	}
   
  
  
  
  1.3       +47 -2     jakarta-james/proposals/v1.3/java/org/apache/james/remotemanager/RemoteManagerHandler.java
  
  Index: RemoteManagerHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/remotemanager/RemoteManagerHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RemoteManagerHandler.java	2001/05/21 15:56:53	1.2
  +++ RemoteManagerHandler.java	2001/05/22 12:03:14	1.3
  @@ -10,6 +10,7 @@
   import java.io.*;
   import java.net.*;
   import java.util.*;
  +import javax.mail.internet.ParseException;
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
  @@ -29,6 +30,7 @@
   import org.apache.james.services.JamesUser;
   import org.apache.james.services.UsersRepository;
   import org.apache.james.services.UsersStore;
  +import org.apache.mailet.MailAddress;
   
   /**
    * Provides a really rude network interface to administer James.
  @@ -41,8 +43,8 @@
    * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
    * @author <a href="mailto:charles@benett1.demon.co.uk">Charles Benett</a>
    *
  - * Last changed by: $Author: charlesb $ on $Date: 2001/05/21 15:56:53 $
  - * $Revision: 1.2 $
  + * Last changed by: $Author: charlesb $ on $Date: 2001/05/22 12:03:14 $
  + * $Revision: 1.3 $
    *
    */
   public class RemoteManagerHandler
  @@ -304,6 +306,49 @@
   	    } else {
                   out.println("Error setting alias");
                   getLogger().info("Error setting alias");
  +	    }
  +            out.flush();
  +	    return true;
  +        } else if (command.equalsIgnoreCase("SETFORWARDING")) {
  +	    if (argument == null || argument1 == null) {
  +                out.println("usage: setforwarding [username] [emailaddress]");
  +                return true;
  +	    }
  +            String username = argument;
  +            String forward = argument1;
  +            if (username.equals("") || forward.equals("")) {
  +                out.println("usage: adduser [username] [emailaddress]");
  +                return true;
  +	    }
  +	    // Verify user exists
  +	    JamesUser user = (JamesUser) users.getUserByName(username);
  +	    if (user == null) {
  +		out.println("No such user");
  +		return true;
  +	    }
  +	    // Veriy acceptable email address
  +	    MailAddress forwardAddr;
  +            try {
  +                 forwardAddr = new MailAddress(forward);
  +            } catch(ParseException pe) {
  +		out.println("Parse exception with that email address: "
  +                            + pe.getMessage());
  +		out.println("Forwarding address not added for " + username);
  +	        return true;
  +	    }
  +
  +  	    boolean success;
  +	    success = user.setForwardingDestination(forwardAddr);
  +	    if (success){
  +	        user.setForwarding(true);
  +		users.updateUser(user);
  +                out.println("Forwarding destination for " + username
  +                             + " set to:" + forwardAddr.toString());
  +                getLogger().info("Forwarding destination for " + username
  +                                 + " set to:" + forwardAddr.toString());
  +	    } else {
  +                out.println("Error setting forwarding");
  +                getLogger().info("Error setting forwarding");
   	    }
               out.flush();
   	    return true;
  
  
  
  1.2       +6 -4      jakarta-james/proposals/v1.3/java/org/apache/james/services/JamesUser.java
  
  Index: JamesUser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/services/JamesUser.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JamesUser.java	2001/05/16 14:00:29	1.1
  +++ JamesUser.java	2001/05/22 12:03:22	1.2
  @@ -7,13 +7,15 @@
    */
   package org.apache.james.services;
   
  +import org.apache.mailet.MailAddress;
  +
   /**
    * Interface for objects representing users of an email/ messaging system.
    *
    * @author Charles Benett <ch...@benett1.demon.co.uk>
    *
  - * Last changed by: $Author: charlesb $ on $Date: 2001/05/16 14:00:29 $
  - * $Revision: 1.1 $
  + * Last changed by: $Author: charlesb $ on $Date: 2001/05/22 12:03:22 $
  + * $Revision: 1.2 $
    */
   
   public interface JamesUser extends User {
  @@ -38,12 +40,12 @@
        * Set destination for forwading mail
        * Should we use a MailAddress?
        */
  -    boolean setForwardingDestination(String address);
  +    boolean setForwardingDestination(MailAddress address);
   
       /**
        * Return the destination to which email should be forwarded
        */
  -    String getForwardingDestination();
  +    MailAddress getForwardingDestination();
   
       /**
        * Indicate if mail received for this user should be delivered locally to
  
  
  
  1.2       +7 -6      jakarta-james/proposals/v1.3/java/org/apache/james/userrepository/DefaultJamesUser.java
  
  Index: DefaultJamesUser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/userrepository/DefaultJamesUser.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultJamesUser.java	2001/05/16 14:00:35	1.1
  +++ DefaultJamesUser.java	2001/05/22 12:03:32	1.2
  @@ -11,14 +11,15 @@
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.james.services.User;
   import org.apache.james.services.JamesUser;
  +import org.apache.mailet.MailAddress;
   
   /**
    * Implementation of User Interface.
    *
    * @author Charles Benett <ch...@benett1.demon.co.uk>
    *
  - * Last changed by: $Author: charlesb $ on $Date: 2001/05/16 14:00:35 $
  - * $Revision: 1.1 $
  + * Last changed by: $Author: charlesb $ on $Date: 2001/05/22 12:03:32 $
  + * $Revision: 1.2 $
    */
   
   public class DefaultJamesUser 
  @@ -26,7 +27,7 @@
           implements JamesUser, Initializable {
   
       private boolean forwarding;
  -    private String forwardingDestination;
  +    private MailAddress forwardingDestination;
       private boolean aliasing;
       private String alias;
   
  @@ -39,7 +40,7 @@
        */
       public void initialize() {
   	forwarding = false;
  -	forwardingDestination = "";
  +	forwardingDestination = null;
   	aliasing = false;
   	alias = "";
       }
  @@ -57,13 +58,13 @@
       }
   
       
  -    public boolean setForwardingDestination(String address) {
  +    public boolean setForwardingDestination(MailAddress address) {
   	/* Some verification would be good */
   	forwardingDestination = address;
   	return true;
       }
   
  -    public String getForwardingDestination() {
  +    public MailAddress getForwardingDestination() {
   	return forwardingDestination;
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: james-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: james-dev-help@jakarta.apache.org