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 no...@apache.org on 2009/11/29 16:09:12 UTC

svn commit: r885237 - in /james/server/trunk: ./ imapserver-function/src/main/java/org/apache/james/imapserver/ imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ phoenix-deployment/src/conf/ stage/org.apache.james/jars/

Author: norman
Date: Sun Nov 29 15:09:11 2009
New Revision: 885237

URL: http://svn.apache.org/viewvc?rev=885237&view=rev
Log:
SieveMailet now handle virtualhosting which allows the usage of IMAP when virtualhosting is enabled (JAMES-938)
Remove unused repository in config

Added:
    james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar   (with props)
    james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar   (with props)
Removed:
    james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.3.jar
    james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.3.jar
Modified:
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java
    james/server/trunk/include.properties
    james/server/trunk/phoenix-deployment/src/conf/james-config.xml
    james/server/trunk/pom.xml

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java Sun Nov 29 15:09:11 2009
@@ -38,6 +38,7 @@
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.main.ImapRequestHandler;
 import org.apache.james.services.FileSystem;
+import org.apache.james.services.MailServer;
 import org.apache.james.socket.api.ProtocolHandler;
 import org.apache.james.socket.shared.AbstractProtocolHandlerFactory;
 import org.apache.jsieve.mailet.Poster;
@@ -63,6 +64,8 @@
 
     private FileSystem fSystem;
 
+    private MailServer mailServer;
+
     @Resource(name="org.apache.james.api.user.UsersRepository")
     public void setUsersRepository(UsersRepository usersRepos) {
         this.usersRepos = usersRepos;
@@ -73,6 +76,11 @@
         this.fSystem = fSystem;
     }
     
+    @Resource(name="org.apache.james.services.MailServer")
+    public void setMailSerer(MailServer mailServer) {
+        this.mailServer = mailServer;
+    }
+    
 
     @PostConstruct
     @Override
@@ -139,11 +147,12 @@
                     // TODO: when user missing, append to a default location
                     throw new MessagingException("Shared mailbox is not supported");
                 } else {
-                    final String user = url.substring(startOfUser, endOfUser);
+                    String user = url.substring(startOfUser, endOfUser);
                     final int startOfHost = endOfUser + 1;
                     final int endOfHost  = url.indexOf('/', startOfHost);
                     final String host = url.substring(startOfHost, endOfHost);
-                    if (!"localhost".equals(host)) {
+                    //if (!"localhost".equals(host)) {
+                    if (mailServer.isLocalServer(host) == false) {
                         //TODO: possible support for clustering?
                         throw new MessagingException("Only local mailboxes are supported");
                     } else {
@@ -154,6 +163,12 @@
                         } else {
                             urlPath = url.substring(endOfHost, length);
                         }
+                        
+                        // check if we should use the full emailaddress as username
+                        if (mailServer.supportVirtualHosting()) {
+                            user = user + "@" + host;
+                        } 
+                        
                         final MailboxManager mailboxManager = factory.getMailbox();
                         final MailboxSession session = mailboxManager.createSystemSession(user, getLogger());
                         // This allows Sieve scripts to use a standard delimiter regardless of mailbox implementation

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java Sun Nov 29 15:09:11 2009
@@ -32,9 +32,24 @@
  */
 public class ResourceLocatorImpl implements ResourceLocator {
 
+    private boolean virtualHosting;
+
+    public ResourceLocatorImpl(boolean virtualHosting) {
+        this.virtualHosting = virtualHosting;
+    }
+    
     public InputStream get(String uri) throws IOException {
         // This is a toy implementation
-        String username = uri.substring(2, uri.indexOf('@'));
+        
+        // Use the complete emailaddress for finding the sieve file
+        uri = uri.substring(2);
+        
+        String username;
+        if (virtualHosting) {
+            username = uri.substring(0,uri.indexOf("/"));
+        } else {
+            username = uri.substring(0,uri.indexOf("@"));
+        }
         String sieveFileName = "../apps/james/var/sieve/"+username+".sieve";
         return new FileInputStream(sieveFileName);
     }

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java Sun Nov 29 15:09:11 2009
@@ -20,19 +20,43 @@
 package org.apache.james.imapserver.sieve;
 
 import javax.annotation.Resource;
+import javax.mail.MessagingException;
 
+import org.apache.james.services.MailServer;
 import org.apache.jsieve.mailet.Poster;
 import org.apache.jsieve.mailet.SieveMailboxMailet;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.MailetConfig;
 
 /**
  * Contains resource bindings.
  */
 public class SieveMailet extends SieveMailboxMailet {
 
+    private MailServer mailServer;
+
+    @Resource(name="org.apache.james.services.MailServer")
+    public void setMailSerer(MailServer mailServer) {
+        this.mailServer = mailServer;
+    }
+    
+
+
+
+    @Override
+    public void init(MailetConfig config) throws MessagingException {
+        // ATM Fixed implementation
+        setLocator(new ResourceLocatorImpl(mailServer.supportVirtualHosting()));
+        
+        super.init(config);
+    }
+
+
+
+
     public SieveMailet() {
         super();
-        // ATM Fixed implementation
-        setLocator(new ResourceLocatorImpl());
+
     }
 
     @Resource(name="org.apache.jsieve.mailet.Poster")
@@ -40,5 +64,15 @@
     public void setPoster(Poster poster) {
         super.setPoster(poster);
     }
+   
+    /**
+     * Return the username to use for sieve processing for the given MailAddress
+     * 
+     * @param m
+     * @return username
+     */
+    protected String getUsername(MailAddress m) {
+        return m.toString();
+    }
     
 }

Modified: james/server/trunk/include.properties
URL: http://svn.apache.org/viewvc/james/server/trunk/include.properties?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/include.properties (original)
+++ james/server/trunk/include.properties Sun Nov 29 15:09:11 2009
@@ -271,9 +271,9 @@
 javax.management=${path.lib.mx4j}/${jarname.javax.management}
 
 # ----- sieve-----
-jarname.jsieve.jar=apache-jsieve-0.3.jar
+jarname.jsieve.jar=apache-jsieve-0.4-SNAPSHOT.jar
 jsieve.jar=${path.lib.james}/${jarname.jsieve.jar}
-jarname.jsieve-mailet.jar=apache-jsieve-mailet-0.3.jar
+jarname.jsieve-mailet.jar=apache-jsieve-mailet-0.4-SNAPSHOT.jar
 jsieve-mailet.jar=${path.lib.james}/${jarname.jsieve-mailet.jar}
 jarname.commons-digester.jar=commons-digester-1.8.jar
 commons-digester.jar=${path.lib.commonsdigester}/${jarname.commons-digester.jar}

Modified: james/server/trunk/phoenix-deployment/src/conf/james-config.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/conf/james-config.xml?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/conf/james-config.xml (original)
+++ james/server/trunk/phoenix-deployment/src/conf/james-config.xml Sun Nov 29 15:09:11 2009
@@ -1242,17 +1242,6 @@
    <!-- The Mailstore block -->
    <mailstore>
       <repositories>
-        <repository class="org.apache.james.mailboxmanager.repository.MailboxManagerMailRepository">
-            <protocols>
-               <protocol>mailboxmanager</protocol>
-            </protocols>
-            <types>
-               <type>MAIL</type>
-            </types>
-            <config>
-               <sqlFile>file://conf/mailboxManagerSqlResources.xml</sqlFile>
-            </config>
-         </repository>
          <!-- File based repositories.  These repositories store all message data -->
          <!-- in the file system. -->
          <repository class="org.apache.james.mailrepository.FileMailRepository">

Modified: james/server/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Sun Nov 29 15:09:11 2009
@@ -606,12 +606,12 @@
     <dependency>
       <groupId>org.apache.james</groupId>
       <artifactId>apache-jsieve</artifactId>
-      <version>0.3</version>
+      <version>0.4-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>
       <artifactId>apache-jsieve-mailet</artifactId>
-      <version>0.3</version>
+      <version>0.4-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>

Added: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar
URL: http://svn.apache.org/viewvc/james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar?rev=885237&view=auto
==============================================================================
Binary file - no diff available.

Propchange: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar
URL: http://svn.apache.org/viewvc/james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar?rev=885237&view=auto
==============================================================================
Binary file - no diff available.

Propchange: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



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