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/21 17:57:12 UTC

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

charlesb    01/05/21 08:57:11

  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/userrepository
                        UsersFileRepository.java
  Log:
  Implement aliases in proposal
  
  Revision  Changes    Path
  1.2       +3 -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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- james-config.xml	2001/05/16 14:00:19	1.1
  +++ james-config.xml	2001/05/21 15:56:34	1.2
  @@ -36,7 +36,9 @@
         </servernames>
   
         <!-- Set whether user names are case sensitive or insensitive -->
  -      <usernames ignoreCase="TRUE"/>
  +      <!-- Set whether to enable local aliases -->
  +      <usernames ignoreCase="TRUE" enableAliases="TRUE"/>
  +
   
         <!-- Set the type of permanent mailfolders to be used.
         If IMAP service is to be provided, storage must be 'IMAP'; if only POP3
  
  
  
  1.2       +21 -8     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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- James.java	2001/05/16 14:00:23	1.1
  +++ James.java	2001/05/21 15:56:43	1.2
  @@ -74,6 +74,7 @@
       private UsersRepository localusers;
       private Collection serverNames;
       private boolean ignoreCase;
  +    private boolean enableAliases;
   
       // this used to be long, but increment operations on long are not
       // thread safe. Changed to int. 'int' should be ok, because id generation
  @@ -171,7 +172,11 @@
           } else {
   	    ignoreCase = false;
   	}
  -
  +        if (userNamesConf.getAttribute("enableAliases").equals("TRUE")) {
  +            enableAliases = true;
  +        } else {
  +	    enableAliases = false;
  +	}
           //Get localusers
           try {
               localusers = (UsersRepository) usersStore.getRepository("LocalUsers");
  @@ -470,10 +475,24 @@
   
       public void storeMail(MailAddress sender, MailAddress recipient, MimeMessage message) {
   
  +        String username;
  +        if (ignoreCase) {
  +            username = localusers.getRealName(recipient.getUser());
  +        } else {
  +            username = recipient.getUser();
  +        }
  +	JamesUser user;
  +	if (enableAliases) {
  +	    user = (JamesUser) localusers.getUserByName(username);
  +	    if (user.getAliasing()) {
  +	        username = user.getAlias();
  +	    }
  +	}
  +
           if (useIMAPstorage) {
               ACLMailbox mbox = null;
               try {
  -                String folderName = "#users." + recipient.getUser() + ".INBOX";
  +                String folderName = "#users." + username + ".INBOX";
                   getLogger().debug("Want to store to: " + folderName);
                   mbox = imapHost.getMailbox(MailServer.MDA, folderName);
                   if(mbox.store(message,MailServer.MDA)) {
  @@ -496,12 +515,6 @@
               Collection recipients = new HashSet();
               recipients.add(recipient);
               MailImpl mailImpl = new MailImpl(getId(), sender, recipients, message);
  -	    String username;
  -	    if (ignoreCase) {
  -	        username = localusers.getRealName(recipient.getUser());
  -	    } else {
  -		username = recipient.getUser();
  -	    }
               getUserInbox(username).store(mailImpl);
           }
       }
  
  
  
  1.2       +65 -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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RemoteManagerHandler.java	2001/05/16 14:02:53	1.1
  +++ RemoteManagerHandler.java	2001/05/21 15:56:53	1.2
  @@ -41,8 +41,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/16 14:02:53 $
  - * $Revision: 1.1 $
  + * Last changed by: $Author: charlesb $ on $Date: 2001/05/21 15:56:53 $
  + * $Revision: 1.2 $
    *
    */
   public class RemoteManagerHandler
  @@ -271,6 +271,69 @@
               out.println("verify [username]               verify if specified user exist");
               out.println("quit                            close connection");
               out.flush();
  +        } else if (command.equalsIgnoreCase("SETALIAS")) {
  +	    if (argument == null || argument1 == null) {
  +                out.println("usage: setalias [username] [alias]");
  +                return true;
  +	    }
  +            String username = argument;
  +            String alias = argument1;
  +            if (username.equals("") || alias.equals("")) {
  +                out.println("usage: adduser [username] [alias]");
  +                return true;
  +	    }
  +	    JamesUser user = (JamesUser) users.getUserByName(username);
  +	    if (user == null) {
  +		out.println("No such user");
  +		return true;
  +	    }
  +	    JamesUser aliasUser = (JamesUser) users.getUserByName(alias);
  +	    if (aliasUser == null) {
  +		out.println("Alias unknown to server" 
  +                            + " - create that user first.");
  +		return true;
  +	    }
  +
  +  	    boolean success;
  +	    success = user.setAlias(alias);
  +	    if (success){
  +	        user.setAliasing(true);
  +		users.updateUser(user);
  +                out.println("Alias for " + username + " set to:" + alias);
  +                getLogger().info("Alias for " + username + " set to:" + alias);
  +	    } else {
  +                out.println("Error setting alias");
  +                getLogger().info("Error setting alias");
  +	    }
  +            out.flush();
  +	    return true;
  +        } else if (command.equalsIgnoreCase("UNSETALIAS")) {
  +	    if (argument == null) {
  +                out.println("usage: unsetalias [username]");
  +                return true;
  +	    }
  +            String username = argument;
  +            if (username.equals("")) {
  +                out.println("usage: adduser [username]");
  +                return true;
  +	    }
  +	    JamesUser user = (JamesUser) users.getUserByName(username);
  +	    if (user == null) {
  +		out.println("No such user");
  +		return true;
  +	    }
  +
  +	    if (user.getAliasing()){
  +	        user.setAliasing(false);
  +		users.updateUser(user);
  +                out.println("Alias for " + username + " unset");
  +                getLogger().info("Alias for " + username + " unset");
  +	    } else {
  +                out.println("Aliasing not active for" + username);
  +                getLogger().info("Aliasing not active for" + username);
  +	    }
  +            out.flush();
  +	    return true;
           } else if (command.equalsIgnoreCase("QUIT")) {
               out.println("bye");
               return false;
  
  
  
  1.2       +14 -8     jakarta-james/proposals/v1.3/java/org/apache/james/userrepository/UsersFileRepository.java
  
  Index: UsersFileRepository.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/userrepository/UsersFileRepository.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UsersFileRepository.java	2001/05/16 14:00:36	1.1
  +++ UsersFileRepository.java	2001/05/21 15:57:06	1.2
  @@ -38,8 +38,8 @@
    * @author  Federico Barbieri <sc...@pop.systemy.it>
    * @author  <a href="mailto:charles@benett1.demon.co.uk">Charles Benett</a>
    *
  - * Last changed by: $Author: charlesb $ on $Date: 2001/05/16 14:00:36 $
  - * $Revision: 1.1 $
  + * Last changed by: $Author: charlesb $ on $Date: 2001/05/21 15:57:06 $
  + * $Revision: 1.2 $
    */
   public class UsersFileRepository
       extends AbstractLoggable
  @@ -125,16 +125,22 @@
   	}
           else
           {
  -            throw new RuntimeException("Improper use of deprecated method - use addUser(User user)");
  +            throw new RuntimeException("Improper use of deprecated method" 
  +                                       + " - use addUser(User user)");
           }
       }
   
       public synchronized User getUserByName(String name) {
  -        try {
  -            return (User)or.get(name);
  -        } catch (Exception e) {
  -            throw new RuntimeException("Exception while retrieving user: " + e.getMessage());
  -        }
  +	if (contains(name)) {
  +            try {
  +                return (User)or.get(name);
  +            } catch (Exception e) {
  +                throw new RuntimeException("Exception while retrieving user: "
  +                                           + e.getMessage());
  +            }
  +	} else {
  +	    return null;
  +	}
       }
   
       public User getUserByNameCaseInsensitive(String name) {
  
  
  

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