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