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:[EMAIL PROTECTED]";>Peter Donald</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>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 <[EMAIL PROTECTED]>
    * @author  <a href="mailto:[EMAIL PROTECTED]";>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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to