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 2011/11/20 20:00:58 UTC

svn commit: r1204210 - in /james/server/trunk: imapserver/src/main/java/org/apache/james/imapserver/netty/ lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/ pop3server/src/main/java/org/apache/james/pop3server/netty/ protocols-library/src/mai...

Author: norman
Date: Sun Nov 20 19:00:57 2011
New Revision: 1204210

URL: http://svn.apache.org/viewvc?rev=1204210&view=rev
Log:
Adjust for latest changes in protocols. See PROTOCOLS-51

Modified:
    james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
    james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
    james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
    james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
    james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java
    james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java

Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java?rev=1204210&r1=1204209&r2=1204210&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java Sun Nov 20 19:00:57 2011
@@ -31,6 +31,7 @@ import org.apache.james.imap.api.ImapCon
 import org.apache.james.imap.api.process.ImapProcessor;
 import org.apache.james.imap.decode.ImapDecoder;
 import org.apache.james.imap.encode.ImapEncoder;
+import org.apache.james.protocols.api.Secure;
 import org.apache.james.protocols.impl.ChannelGroupHandler;
 import org.apache.james.protocols.impl.ConnectionLimitUpstreamHandler;
 import org.apache.james.protocols.impl.ConnectionPerIpLimitUpstreamHandler;
@@ -140,10 +141,11 @@ public class IMAPServer extends Abstract
                 // don't strip the delimiter and use CRLF as delimiter
                 pipeline.addLast(FRAMER, new DelimiterBasedFrameDecoder(maxLineLength, false, Delimiters.lineDelimiter()));
                
-                if (isSSLSocket()) {
+                Secure secure = getSecure();
+                if (secure != null && !secure.isStartTLS()) {
                     // We need to set clientMode to false.
                     // See https://issues.apache.org/jira/browse/JAMES-1025
-                    SSLEngine engine = getSSLContext().createSSLEngine();
+                    SSLEngine engine = secure.getContext().createSSLEngine();
                     engine.setUseClientMode(false);
                     pipeline.addFirst(SSL_HANDLER, new SslHandler(engine));
 
@@ -174,8 +176,9 @@ public class IMAPServer extends Abstract
     @Override
     protected ChannelUpstreamHandler createCoreHandler() {
         ImapChannelUpstreamHandler coreHandler;
-        if (isStartTLSSupported()) {
-           coreHandler = new ImapChannelUpstreamHandler(hello, processor, encoder, getLogger(), compress, plainAuthDisallowed, getSSLContext(), getEnabledCipherSuites());
+        Secure secure = getSecure();
+        if (secure!= null && secure.isStartTLS()) {
+           coreHandler = new ImapChannelUpstreamHandler(hello, processor, encoder, getLogger(), compress, plainAuthDisallowed, secure.getContext(), getEnabledCipherSuites());
         } else {
            coreHandler = new ImapChannelUpstreamHandler(hello, processor, encoder, getLogger(), compress, plainAuthDisallowed);
         }

Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java?rev=1204210&r1=1204209&r2=1204210&view=diff
==============================================================================
--- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java (original)
+++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java Sun Nov 20 19:00:57 2011
@@ -19,8 +19,6 @@
 package org.apache.james.lmtpserver.netty;
 
 
-import javax.net.ssl.SSLContext;
-
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.lmtpserver.CoreCmdHandlerLoader;
@@ -143,17 +141,6 @@ public class LMTPServer extends Abstract
         return new SMTPChannelUpstreamHandler(protocol, getLogger());
     }
 
-
-    @Override
-    protected SSLContext getSSLContext() {
-        return null;
-    }
-
-    @Override
-    protected boolean isSSLSocket() {
-        return false;
-    }
-
     @Override
     protected Class<? extends HandlersPackage> getCoreHandlersPackage() {
         return CoreCmdHandlerLoader.class;

Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java?rev=1204210&r1=1204209&r2=1204210&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java (original)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java Sun Nov 20 19:00:57 2011
@@ -21,7 +21,6 @@ package org.apache.james.pop3server.nett
 
 import org.apache.james.pop3server.core.CoreCmdHandlerLoader;
 import org.apache.james.pop3server.jmx.JMXHandlersLoader;
-import org.apache.james.protocols.api.Secure;
 import org.apache.james.protocols.api.handler.HandlersPackage;
 import org.apache.james.protocols.impl.BasicChannelUpstreamHandler;
 import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
@@ -66,26 +65,14 @@ public class POP3Server extends Abstract
         public String getHelloName() {
             return POP3Server.this.getHelloName();
         }
-
-        /**
-         * @see org.apache.james.pop3server.POP3HandlerConfiguration#isStartTLSSupported()
-         */
-        public boolean isStartTLSSupported() {
-            return POP3Server.this.isStartTLSSupported();
-        }
     }
 
     @Override
     protected void preInit() throws Exception {
         super.preInit();
         POP3Protocol protocol = new POP3Protocol(getProtocolHandlerChain(), theConfigData);
-        Secure secure;
-        if (isStartTLSSupported()) {
-            secure = Secure.createStartTls(getSSLContext(), getEnabledCipherSuites());
-        } else {
-            secure = Secure.createTls(getSSLContext(), getEnabledCipherSuites());
-        }
-        coreHandler = new BasicChannelUpstreamHandler(protocol, getLogger(), secure);
+        
+        coreHandler = new BasicChannelUpstreamHandler(protocol, getLogger(), getSecure());
     }
 
 

Modified: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java?rev=1204210&r1=1204209&r2=1204210&view=diff
==============================================================================
--- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java (original)
+++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java Sun Nov 20 19:00:57 2011
@@ -43,6 +43,7 @@ import org.apache.james.filesystem.api.F
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.lifecycle.api.LogEnabled;
 
+import org.apache.james.protocols.api.Secure;
 import org.apache.james.protocols.impl.AbstractAsyncServer;
 import org.apache.james.protocols.lib.jmx.ServerMBean;
 import org.apache.james.util.concurrent.JMXEnabledThreadPoolExecutor;
@@ -101,7 +102,7 @@ public abstract class AbstractConfigurab
 
     private String secret;
 
-    private SSLContext context;
+    private Secure secure;
 
     protected String jmxName;
 
@@ -385,22 +386,8 @@ public abstract class AbstractConfigurab
         return helloName;
     }
 
-    /**
-     * Return if startTLS is supported by this server
-     * 
-     * @return startTlsSupported
-     */
-    protected boolean isStartTLSSupported() {
-        return useStartTLS;
-    }
-
-    /**
-     * Return if the socket is using SSL
-     * 
-     * @return useSSL
-     */
-    protected boolean isSSLSocket() {
-        return useSSL;
+    protected Secure getSecure() {
+        return secure;
     }
 
     /**
@@ -422,8 +409,13 @@ public abstract class AbstractConfigurab
                 kmf.init(ks, secret.toCharArray());
 
                 // Initialize the SSLContext to work with our key managers.
-                context = SSLContext.getInstance("TLS");
+                SSLContext context = SSLContext.getInstance("TLS");
                 context.init(kmf.getKeyManagers(), null, null);
+                if (useStartTLS) {
+                    secure = Secure.createStartTls(context, enabledCipherSuites);
+                } else {
+                    secure = Secure.createTls(context, enabledCipherSuites);
+                }
             } finally {
                 if (fis != null) {
                     fis.close();
@@ -440,14 +432,6 @@ public abstract class AbstractConfigurab
      */
     protected abstract int getDefaultPort();
 
-    /**
-     * Return the SSLContext to use
-     * 
-     * @return sslContext
-     */
-    protected SSLContext getSSLContext() {
-        return context;
-    }
 
     /**
      * Return the socket type. The Socket type can be secure or plain
@@ -455,7 +439,7 @@ public abstract class AbstractConfigurab
      * @return the socket type ('plain' or 'secure')
      */
     public String getSocketType() {
-        if (isSSLSocket()) {
+        if (secure != null && !secure.isStartTLS()) {
             return "secure";
         }
         return "plain";
@@ -465,7 +449,7 @@ public abstract class AbstractConfigurab
      * @see org.apache.james.protocols.lib.jmx.ServerMBean#getStartTLSSupported()
      */
     public boolean getStartTLSSupported() {
-        return isStartTLSSupported();
+        return secure != null && secure.isStartTLS();
     }
 
     /**
@@ -597,13 +581,16 @@ public abstract class AbstractConfigurab
         return new AbstractExecutorAwareChannelPipelineFactory(getTimeout(), connectionLimit, connPerIP, group, enabledCipherSuites, getExecutionHandler()) {
             @Override
             protected SSLContext getSSLContext() {
-                return AbstractConfigurableAsyncServer.this.getSSLContext();
-
+                if (secure == null) {
+                    return null;
+                } else {
+                    return secure.getContext();
+                }
             }
 
             @Override
             protected boolean isSSLSocket() {
-                return AbstractConfigurableAsyncServer.this.isSSLSocket();
+                return secure != null && !secure.isStartTLS();
             }
 
 

Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java?rev=1204210&r1=1204209&r2=1204210&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java Sun Nov 20 19:00:57 2011
@@ -27,6 +27,7 @@ import org.apache.james.smtpserver.SMTPC
 import org.jboss.netty.channel.ChannelHandler.Sharable;
 import org.jboss.netty.channel.ChannelHandlerContext;
 import org.jboss.netty.channel.ChannelUpstreamHandler;
+import org.jboss.netty.channel.ExceptionEvent;
 import org.slf4j.Logger;
 
 /**
@@ -61,4 +62,10 @@ public class SMTPChannelUpstreamHandler 
         super.cleanup(ctx);
     }
 
+    @Override
+    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
+        e.getCause().printStackTrace();
+        super.exceptionCaught(ctx, e);
+    }
+
 }

Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java?rev=1204210&r1=1204209&r2=1204210&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java Sun Nov 20 19:00:57 2011
@@ -28,7 +28,6 @@ import org.apache.james.dnsservice.api.D
 import org.apache.james.dnsservice.library.netmatcher.NetMatcher;
 import org.apache.james.protocols.api.ProtocolSession;
 import org.apache.james.protocols.api.ProtocolTransport;
-import org.apache.james.protocols.api.Secure;
 import org.apache.james.protocols.api.handler.HandlersPackage;
 import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
 import org.apache.james.protocols.smtp.SMTPConfiguration;
@@ -121,13 +120,7 @@ public class SMTPServer extends Abstract
             }
             
         };
-        Secure secure;
-        if (isStartTLSSupported()) {
-            secure = Secure.createStartTls(getSSLContext(), getEnabledCipherSuites());
-        } else {
-            secure = Secure.createTls(getSSLContext(), getEnabledCipherSuites());
-        }
-        coreHandler = new SMTPChannelUpstreamHandler(transport, getLogger(), secure);
+        coreHandler = new SMTPChannelUpstreamHandler(transport, getLogger(), getSecure());
         
     }
 
@@ -284,13 +277,6 @@ public class SMTPServer extends Abstract
         }
 
         /**
-         * @see org.apache.james.protocols.smtp.SMTPConfiguration#isStartTLSSupported()
-         */
-        public boolean isStartTLSSupported() {
-            return SMTPServer.this.isStartTLSSupported();
-        }
-
-        /**
          * Return true if the username and mail from must match for a authorized
          * user
          * 



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