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/19 20:28:42 UTC

svn commit: r1204047 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ impl/src/main/java/org/apache/james/protocols/impl/ lmtp/src/main/java/org/apache/james/protocols/lmtp/ pop3/ pop3/src/main/java/org/apache/james/protoc...

Author: norman
Date: Sat Nov 19 19:28:41 2011
New Revision: 1204047

URL: http://svn.apache.org/viewvc?rev=1204047&view=rev
Log:
Make configuration of STARTLS more consistent. See PROTOCOLS-51

Added:
    james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java   (with props)
    james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/Secure.java   (with props)
Modified:
    james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java
    james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java
    james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPConfigurationImpl.java
    james/protocols/trunk/pop3/.classpath
    james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3HandlerConfiguration.java
    james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3Protocol.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfiguration.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfigurationImpl.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java

Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java Sat Nov 19 19:28:41 2011
@@ -40,12 +40,5 @@ public interface Protocol {
      * @return session
      */
     ProtocolSession newSession(ProtocolTransport transport);
-    
-    /**
-     * Returns <code>true</code> if STARTTLS is supported
-     * 
-     * @return starttlsSupported
-     */
-    boolean isStartTLSSupported();
 
 }

Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java?rev=1204047&view=auto
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java (added)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java Sat Nov 19 19:28:41 2011
@@ -0,0 +1,25 @@
+package org.apache.james.protocols.api;
+
+import org.apache.james.protocols.api.handler.ProtocolHandlerChain;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProtocolImpl implements Protocol{
+    protected final Logger logger = LoggerFactory.getLogger(getClass());
+    private ProtocolHandlerChain chain;
+
+    public ProtocolImpl(ProtocolHandlerChain chain) {
+        this.chain = chain;
+    }
+    
+    @Override
+    public ProtocolHandlerChain getProtocolChain() {
+        return chain;
+    }
+
+    @Override
+    public ProtocolSession newSession(ProtocolTransport transport) {
+        return new ProtocolSessionImpl(logger, transport);
+    }
+
+}

Propchange: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java (original)
+++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java Sat Nov 19 19:28:41 2011
@@ -35,25 +35,25 @@ import org.slf4j.LoggerFactory;
  */
 public class NettyServer extends AbstractAsyncServer {
 
-    protected Protocol protocol;
+    protected final Protocol protocol;
     
-    protected Logger logger = LoggerFactory.getLogger(NettyServer.class);
-
-    protected SSLContext context;
+    protected final Logger logger = LoggerFactory.getLogger(NettyServer.class);
 
     private ExecutionHandler eHandler;
     
     private ChannelUpstreamHandler coreHandler;
 
+    protected final  Secure secure;
+
     public NettyServer(Protocol protocol) {
         this(protocol, null);
     }
     
     
-    public NettyServer(Protocol protocol, SSLContext context) {
+    public NettyServer(Protocol protocol, Secure secure) {
         super();
         this.protocol = protocol;
-        this.context = context;
+        this.secure = secure;
     }
     
     protected ExecutionHandler createExecutionHandler(int size) {
@@ -75,7 +75,11 @@ public class NettyServer extends Abstrac
     
   
     protected ChannelUpstreamHandler createCoreHandler() {
-        return new BasicChannelUpstreamHandler(protocol, logger, context, null);
+        SSLContext sslContext = null;
+        if (secure != null) {
+            sslContext = secure.getContext();
+        } 
+        return new BasicChannelUpstreamHandler(protocol, logger, sslContext, null);
     }
     
     @Override
@@ -96,12 +100,16 @@ public class NettyServer extends Abstrac
 
             @Override
             protected boolean isSSLSocket() {
-                return context != null && !protocol.isStartTLSSupported();
+                return getSSLContext() != null && secure != null && !secure.isStartTLS();
             }
 
             @Override
             protected SSLContext getSSLContext() {
-                return context;
+                if (secure != null) {
+                    return secure.getContext();
+                } else  {
+                    return null;
+                }
             }
         };
 

Added: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/Secure.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/Secure.java?rev=1204047&view=auto
==============================================================================
--- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/Secure.java (added)
+++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/Secure.java Sat Nov 19 19:28:41 2011
@@ -0,0 +1,49 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.protocols.impl;
+
+import javax.net.ssl.SSLContext;
+
+public final class Secure {
+
+    private final SSLContext context;
+    private final boolean starttls;
+
+    private Secure(SSLContext context, boolean starttls) {
+        this.context = context;
+        this.starttls = starttls;
+    }
+    
+    public static Secure createTls(SSLContext context) {
+        return new Secure(context, false);
+    }
+    
+    public static Secure createStartTls(SSLContext context) {
+        return new Secure(context, true);
+    }
+    
+    public SSLContext getContext() {
+        return context;
+    }
+    
+    public boolean isStartTLS() {
+        return starttls;
+    }
+}

Propchange: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/Secure.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPConfigurationImpl.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPConfigurationImpl.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPConfigurationImpl.java (original)
+++ james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPConfigurationImpl.java Sat Nov 19 19:28:41 2011
@@ -23,7 +23,6 @@ public class LMTPConfigurationImpl exten
     private String helloName = "localhost";
     private long maxMessageSize = 0;
     private String greeting = "JAMES Protocols LMTP Server";
-	private boolean startTLSsupported = false;
 
     @Override
     public String getHelloName() {
@@ -53,13 +52,4 @@ public class LMTPConfigurationImpl exten
     public void setGreeting(String greeting) {
         this.greeting = greeting;
     }
-    
-    @Override
-    public boolean isStartTLSSupported() {
-        return startTLSsupported;
-    }
-
-    public void setStartTLSSupported(boolean startTLSsupported) {
-        this.startTLSsupported  = startTLSsupported;
-    }
 }

Modified: james/protocols/trunk/pop3/.classpath
URL: http://svn.apache.org/viewvc/james/protocols/trunk/pop3/.classpath?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/pop3/.classpath (original)
+++ james/protocols/trunk/pop3/.classpath Sat Nov 19 19:28:41 2011
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/test/java"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3HandlerConfiguration.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3HandlerConfiguration.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3HandlerConfiguration.java (original)
+++ james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3HandlerConfiguration.java Sat Nov 19 19:28:41 2011
@@ -31,11 +31,4 @@ public interface POP3HandlerConfiguratio
      */
     String getHelloName();
 
-    /**
-     * Return if starttls is supported by the POP3Server
-     * 
-     * @return startTLSSupported
-     */
-    boolean isStartTLSSupported();
-
 }

Modified: james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3Protocol.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3Protocol.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3Protocol.java (original)
+++ james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/POP3Protocol.java Sat Nov 19 19:28:41 2011
@@ -19,26 +19,18 @@
 
 package org.apache.james.protocols.pop3;
 
-import org.apache.james.protocols.api.Protocol;
+import org.apache.james.protocols.api.ProtocolImpl;
 import org.apache.james.protocols.api.ProtocolSession;
 import org.apache.james.protocols.api.ProtocolTransport;
 import org.apache.james.protocols.api.handler.ProtocolHandlerChain;
-import org.slf4j.Logger;
 
-public class POP3Protocol implements Protocol{
+public class POP3Protocol extends ProtocolImpl{
 
-    private ProtocolHandlerChain chain;
-    private POP3HandlerConfiguration config;
-    private Logger logger;
+    private final POP3HandlerConfiguration config;
     
-    public POP3Protocol(ProtocolHandlerChain chain, POP3HandlerConfiguration config, Logger logger) {
-        this.chain = chain;
+    public POP3Protocol(ProtocolHandlerChain chain, POP3HandlerConfiguration config) {
+        super(chain);
         this.config = config;
-        this.logger = logger;
-    }
-    @Override
-    public ProtocolHandlerChain getProtocolChain() {
-        return chain;
     }
 
     
@@ -47,9 +39,4 @@ public class POP3Protocol implements Pro
         return new POP3SessionImpl(logger, transport, config);
     }
 
-    @Override
-    public boolean isStartTLSSupported() {
-        return config.isStartTLSSupported();
-    }
-
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfiguration.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfiguration.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfiguration.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfiguration.java Sat Nov 19 19:28:41 2011
@@ -82,12 +82,5 @@ public interface SMTPConfiguration {
      * @return true or false
      */
     boolean useAddressBracketsEnforcement();
-    
-    /**
-     * Return <code>true</code> if STARTTLS is supported.
-     * 
-     * @return starttls
-     */
-    boolean isStartTLSSupported();
 
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfigurationImpl.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfigurationImpl.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfigurationImpl.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfigurationImpl.java Sat Nov 19 19:28:41 2011
@@ -28,7 +28,6 @@ public class SMTPConfigurationImpl imple
     private boolean bracketsEnforcement = true;
     private String greeting = "JAMES SMTP Protocols";
     private boolean enforceHeloEhlo = true;
-	private boolean startTLSsupported = false;
     
     public String getHelloName() {
         return helloName;
@@ -71,14 +70,5 @@ public class SMTPConfigurationImpl imple
     public void setUseAddressBracketsEnforcement(boolean bracketsEnforcement) {
         this.bracketsEnforcement = bracketsEnforcement;
     }
-    
-    
-    @Override
-    public boolean isStartTLSSupported() {
-        return startTLSsupported;
-    }
 
-    public void setStartTLSSupported(boolean startTLSsupported) {
-        this.startTLSsupported = startTLSsupported;
-    }
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java Sat Nov 19 19:28:41 2011
@@ -19,35 +19,20 @@
 
 package org.apache.james.protocols.smtp;
 
-import org.apache.james.protocols.api.Protocol;
+import org.apache.james.protocols.api.ProtocolImpl;
 import org.apache.james.protocols.api.ProtocolSession;
 import org.apache.james.protocols.api.ProtocolTransport;
 import org.apache.james.protocols.api.handler.ProtocolHandlerChain;
 import org.apache.james.protocols.smtp.SMTPConfiguration;
 import org.apache.james.protocols.smtp.SMTPSessionImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+public class SMTPProtocol extends ProtocolImpl {
 
-public class SMTPProtocol implements Protocol {
-
-    private ProtocolHandlerChain chain;
     private SMTPConfiguration config;
-    private Logger logger = LoggerFactory.getLogger(getClass());
-
 
     public SMTPProtocol(ProtocolHandlerChain chain, SMTPConfiguration config) {
-        this.chain = chain;
+        super(chain);
         this.config = config;
     }
-    
-    public ProtocolHandlerChain getProtocolChain() {
-        return chain;
-    }
-
-
-    public boolean isStartTLSSupported() {
-        return config.isStartTLSSupported();
-    }
 
     public ProtocolSession newSession(ProtocolTransport transport) {
         return new SMTPSessionImpl(config, logger, transport);

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java Sat Nov 19 19:28:41 2011
@@ -161,11 +161,4 @@ public class SMTPSessionImpl extends Pro
     public Response newFatalErrorResponse() {
         return new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unable to process request");
     }
-
-    @Override
-    public boolean isStartTLSSupported() {
-        return super.isStartTLSSupported() && theConfigData.isStartTLSSupported();
-    }
-    
-    
 }

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java?rev=1204047&r1=1204046&r2=1204047&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java Sat Nov 19 19:28:41 2011
@@ -187,7 +187,7 @@ public class BaseFakeSMTPSession impleme
     }
 
     public boolean isStartTLSSupported() {
-        return getConfigurationData().isStartTLSSupported();
+        return false;
     }
 
     public boolean isTLSStarted() {



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