Author: bago
Date: Sat Sep 17 00:16:40 2011
New Revision: 1171871
URL: http://svn.apache.org/viewvc?rev=1171871&view=rev
Log:
Use SMTPConfiguration to decide wether to enable starttls or not.
Added:
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/NettyServer.java
(with props)
Modified:
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java
Added:
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/NettyServer.java
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/NettyServer.java?rev=1171871&view=auto
==============================================================================
---
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/NettyServer.java
(added)
+++
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/NettyServer.java
Sat Sep 17 00:16:40 2011
@@ -0,0 +1,141 @@
+/****************************************************************
+ * 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.smtp.netty;
+
+
+import java.nio.charset.Charset;
+
+import javax.net.ssl.SSLContext;
+
+import org.apache.james.protocols.api.ProtocolHandlerChain;
+import org.apache.james.protocols.api.ProtocolSession;
+import org.apache.james.protocols.api.ProtocolSessionFactory;
+import org.apache.james.protocols.api.ProtocolTransport;
+import org.apache.james.protocols.impl.AbstractAsyncServer;
+import org.apache.james.protocols.impl.AbstractResponseEncoder;
+import org.apache.james.protocols.impl.AbstractSSLAwareChannelPipelineFactory;
+import org.apache.james.protocols.impl.BasicChannelUpstreamHandler;
+import org.apache.james.protocols.smtp.SMTPConfiguration;
+import org.apache.james.protocols.smtp.SMTPResponse;
+import org.apache.james.protocols.smtp.SMTPSessionImpl;
+import org.jboss.netty.channel.ChannelPipelineFactory;
+import org.jboss.netty.channel.ChannelUpstreamHandler;
+import org.jboss.netty.channel.group.ChannelGroup;
+import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
+import org.jboss.netty.handler.execution.ExecutionHandler;
+import org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Generic NettyServer
+ */
+public class NettyServer extends AbstractAsyncServer {
+
+ private ProtocolHandlerChain chain;
+
+ private Logger logger = LoggerFactory.getLogger(NettyServer.class);
+
+ protected SSLContext context;
+
+ private ExecutionHandler eHandler;
+
+
+ /**
+ * The configuration data to be passed to the handler
+ */
+ private final SMTPConfiguration theConfigData;
+
+ private final static OneToOneEncoder SMTP_RESPONSE_ENCODER = new
AbstractResponseEncoder(SMTPResponse.class, Charset.forName("US-ASCII"));
+ private ChannelUpstreamHandler coreHandler;
+
+ public NettyServer(SMTPConfiguration theConfigData, ProtocolHandlerChain
chain) {
+ this(theConfigData, chain, null);
+ }
+
+
+ public NettyServer(SMTPConfiguration theConfigData, ProtocolHandlerChain
chain, SSLContext context) {
+ super();
+ this.chain = chain;
+ this.context = context;
+ this.theConfigData = theConfigData;
+ }
+
+ protected ExecutionHandler createExecutionHandler(int size) {
+ return new ExecutionHandler(new
OrderedMemoryAwareThreadPoolExecutor(size, 0, 0));
+ }
+
+
+ public void setUseExecutionHandler(boolean useHandler, int size) {
+ if (isBound()) throw new IllegalStateException("Server running
already");
+ if (useHandler) {
+ eHandler =createExecutionHandler(size);
+ } else {
+ if (eHandler != null) {
+ eHandler.releaseExternalResources();
+ }
+ eHandler = null;
+ }
+ }
+
+
+ protected ChannelUpstreamHandler createCoreHandler() {
+ return coreHandler;
+ }
+
+ @Override
+ public synchronized void bind() throws Exception {
+ coreHandler = new BasicChannelUpstreamHandler(chain, new
ProtocolSessionFactory() {
+
+ public ProtocolSession newSession(ProtocolTransport transport) {
+ return new SMTPSessionImpl(theConfigData, logger, transport);
+ }
+ }, logger, context, null);
+ super.bind();
+ }
+
+
+ @Override
+ protected ChannelPipelineFactory createPipelineFactory(ChannelGroup group)
{
+ return new AbstractSSLAwareChannelPipelineFactory(getTimeout(), 0,
getBacklog(), group, eHandler) {
+
+ @Override
+ protected ChannelUpstreamHandler createHandler() {
+ return coreHandler;
+ }
+
+ @Override
+ protected OneToOneEncoder createEncoder() {
+ return SMTP_RESPONSE_ENCODER;
+ }
+
+ @Override
+ protected boolean isSSLSocket() {
+ return context != null && !theConfigData.isStartTLSSupported();
+ }
+
+ @Override
+ protected SSLContext getSSLContext() {
+ return context;
+ }
+ };
+
+ }
+
+}
Propchange:
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/NettyServer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java?rev=1171871&r1=1171870&r2=1171871&view=diff
==============================================================================
---
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java
(original)
+++
james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java
Sat Sep 17 00:16:40 2011
@@ -19,109 +19,37 @@
package org.apache.james.protocols.smtp.netty;
-import java.nio.charset.Charset;
-
import javax.net.ssl.SSLContext;
-import org.apache.james.protocols.api.ProtocolHandlerChain;
-import org.apache.james.protocols.api.ProtocolSession;
-import org.apache.james.protocols.api.ProtocolSessionFactory;
-import org.apache.james.protocols.api.ProtocolTransport;
-import org.apache.james.protocols.impl.AbstractAsyncServer;
-import org.apache.james.protocols.impl.AbstractResponseEncoder;
-import org.apache.james.protocols.impl.AbstractSSLAwareChannelPipelineFactory;
-import org.apache.james.protocols.impl.BasicChannelUpstreamHandler;
import org.apache.james.protocols.smtp.SMTPConfiguration;
import org.apache.james.protocols.smtp.SMTPProtocolHandlerChain;
-import org.apache.james.protocols.smtp.SMTPResponse;
import org.apache.james.protocols.smtp.SMTPServerMBean;
-import org.apache.james.protocols.smtp.SMTPSessionImpl;
-import org.jboss.netty.channel.ChannelPipelineFactory;
-import org.jboss.netty.channel.ChannelUpstreamHandler;
-import org.jboss.netty.channel.group.ChannelGroup;
-import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
-import org.jboss.netty.handler.execution.ExecutionHandler;
-import org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* NIO SMTPServer which use Netty
*/
-public class SMTPServer extends AbstractAsyncServer implements SMTPServerMBean
{
-
- private ProtocolHandlerChain chain;
-
- private Logger logger = LoggerFactory.getLogger(SMTPServer.class);
-
- private SSLContext context;
+public class SMTPServer extends NettyServer implements SMTPServerMBean {
private boolean starttls;
-
- private ExecutionHandler eHandler;
-
-
- /**
- * The configuration data to be passed to the handler
- */
- private final SMTPConfiguration theConfigData;
-
- private final static OneToOneEncoder SMTP_RESPONSE_ENCODER = new
AbstractResponseEncoder(SMTPResponse.class, Charset.forName("US-ASCII"));
- private ChannelUpstreamHandler coreHandler;
-
-
-
public SMTPServer(SMTPConfiguration theConfigData,
SMTPProtocolHandlerChain chain) {
this(theConfigData, chain, null, false);
}
public SMTPServer(SMTPConfiguration theConfigData,
SMTPProtocolHandlerChain chain, SSLContext context, boolean starttls) {
- super();
- this.chain = chain;
- this.context = context;
+ super(new StartTLSSMTPConfiguration(theConfigData, starttls), chain,
context);
this.starttls = starttls;
- if (context != null && starttls) {
- this.theConfigData = new StartTLSSMTPConfiguration(theConfigData);
- } else {
- this.theConfigData = theConfigData;
- }
}
- protected ExecutionHandler createExecutionHandler(int size) {
- return new ExecutionHandler(new
OrderedMemoryAwareThreadPoolExecutor(size, 0, 0));
- }
-
-
- public void setUseExecutionHandler(boolean useHandler, int size) {
- if (isBound()) throw new IllegalStateException("Server running
already");
- if (useHandler) {
- eHandler =createExecutionHandler(size);
- } else {
- if (eHandler != null) {
- eHandler.releaseExternalResources();
- }
- eHandler = null;
- }
- }
-
-
- protected ChannelUpstreamHandler createCoreHandler() {
- return coreHandler;
- }
-
-
- /*
- * (non-Javadoc)
+ /**
* @see org.apache.james.protocols.smtp.SMTPServerMBean#isEnabled()
*/
public boolean isEnabled() {
return isBound();
}
- /*
- * (non-Javadoc)
+ /**
* @see org.apache.james.protocols.smtp.SMTPServerMBean#getSocketType()
*/
public String getSocketType() {
@@ -132,52 +60,14 @@ public class SMTPServer extends Abstract
}
}
-
- @Override
- public synchronized void bind() throws Exception {
- coreHandler = new BasicChannelUpstreamHandler(chain, new
ProtocolSessionFactory() {
-
- public ProtocolSession newSession(ProtocolTransport transport) {
- return new SMTPSessionImpl(theConfigData, logger, transport);
- }
- }, logger, context, null);
- super.bind();
- }
-
-
- @Override
- protected ChannelPipelineFactory createPipelineFactory(ChannelGroup group)
{
- return new AbstractSSLAwareChannelPipelineFactory(getTimeout(), 0,
getBacklog(), group, eHandler) {
-
- @Override
- protected ChannelUpstreamHandler createHandler() {
- return coreHandler;
- }
-
- @Override
- protected OneToOneEncoder createEncoder() {
- return SMTP_RESPONSE_ENCODER;
- }
-
- @Override
- protected boolean isSSLSocket() {
- return context != null && !starttls;
- }
-
- @Override
- protected SSLContext getSSLContext() {
- return context;
- }
- };
-
- }
-
private final static class StartTLSSMTPConfiguration implements
SMTPConfiguration {
private SMTPConfiguration config;
+ private boolean startTls;
- public StartTLSSMTPConfiguration(SMTPConfiguration config) {
+ public StartTLSSMTPConfiguration(SMTPConfiguration config, boolean
startTls) {
this.config = config;
+ this.startTls = startTls;
}
public String getHelloName() {
@@ -213,8 +103,9 @@ public class SMTPServer extends Abstract
}
public boolean isStartTLSSupported() {
- return true;
+ return this.startTls;
}
}
+
}
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=1171871&r1=1171870&r2=1171871&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 Sep 17 00:16:40 2011
@@ -193,5 +193,11 @@ public class SMTPSessionImpl extends Abs
public Response newFatalErrorResponse() {
return new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unable to process
request");
}
+
+ @Override
+ public boolean isStartTLSSupported() {
+ return super.isStartTLSSupported() &&
theConfigData.isStartTLSSupported();
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]