Author: norman Date: Fri Sep 16 11:27:54 2011 New Revision: 1171510 URL: http://svn.apache.org/viewvc?rev=1171510&view=rev Log: Reuse protocols-smtp-netty jar
Modified: james/server/trunk/pom.xml james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java james/server/trunk/smtpserver/pom.xml 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/SMTPNettySession.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPResponseEncoder.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java Modified: james/server/trunk/pom.xml URL: http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=1171510&r1=1171509&r2=1171510&view=diff ============================================================================== --- james/server/trunk/pom.xml (original) +++ james/server/trunk/pom.xml Fri Sep 16 11:27:54 2011 @@ -632,7 +632,11 @@ <artifactId>protocols-smtp</artifactId> <version>${protocols.version}</version> </dependency> - + <dependency> + <groupId>org.apache.james.protocols</groupId> + <artifactId>protocols-smtp-netty</artifactId> + <version>${protocols.version}</version> + </dependency> <dependency> <groupId>org.apache.james</groupId> 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=1171510&r1=1171509&r2=1171510&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 Fri Sep 16 11:27:54 2011 @@ -239,8 +239,8 @@ public abstract class AbstractConfigurab @PostConstruct public final void init() throws Exception { if (isEnabled()) { - preInit(); buildSSLContext(); + preInit(); executionHandler = createExecutionHander(); bind(); @@ -378,6 +378,8 @@ public abstract class AbstractConfigurab */ private void buildSSLContext() throws Exception { + System.out.println(useStartTLS); + if (useStartTLS || useSSL) { FileInputStream fis = null; try { @@ -575,7 +577,7 @@ public abstract class AbstractConfigurab @Override protected ChannelPipelineFactory createPipelineFactory(ChannelGroup group) { - return new AbstractExecutorAwareChannelPipelineFactory(getTimeout(), connectionLimit, connPerIP, group, enabledCipherSuites) { + return new AbstractExecutorAwareChannelPipelineFactory(getTimeout(), connectionLimit, connPerIP, group, enabledCipherSuites, getExecutionHandler()) { @Override protected SSLContext getSSLContext() { return AbstractConfigurableAsyncServer.this.getSSLContext(); @@ -604,11 +606,6 @@ public abstract class AbstractConfigurab return AbstractConfigurableAsyncServer.this.getConnectionCountHandler(); } - @Override - protected ExecutionHandler getExecutionHandler() { - return AbstractConfigurableAsyncServer.this.getExecutionHandler(); - } - }; } Modified: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java?rev=1171510&r1=1171509&r2=1171510&view=diff ============================================================================== --- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java (original) +++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java Fri Sep 16 11:27:54 2011 @@ -31,30 +31,20 @@ import org.jboss.netty.handler.execution public abstract class AbstractExecutorAwareChannelPipelineFactory extends AbstractSSLAwareChannelPipelineFactory{ - public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group) { - super(timeout, maxConnections, maxConnectsPerIp, group); + public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group, ExecutionHandler eHandler) { + super(timeout, maxConnections, maxConnectsPerIp, group, eHandler); } - public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group, String[] enabledCipherSuites) { - super(timeout, maxConnections, maxConnectsPerIp, group, enabledCipherSuites); + public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group, String[] enabledCipherSuites, ExecutionHandler eHandler) { + super(timeout, maxConnections, maxConnectsPerIp, group, enabledCipherSuites, eHandler); } @Override public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeLine = super.getPipeline(); pipeLine.addBefore("coreHandler", "countHandler", getConnectionCountHandler()); - ExecutionHandler ehandler = getExecutionHandler(); - if (ehandler != null) { - pipeLine.addBefore("coreHandler", "executionHandler", ehandler); - } + return pipeLine; } - /** - * Return the {@link ExecutionHandler} to use or null if none - * should get used - * - * @return eHandler - */ - protected abstract ExecutionHandler getExecutionHandler(); /** * REturn the {@link ConnectionCountHandler} to use Modified: james/server/trunk/smtpserver/pom.xml URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/pom.xml?rev=1171510&r1=1171509&r2=1171510&view=diff ============================================================================== --- james/server/trunk/smtpserver/pom.xml (original) +++ james/server/trunk/smtpserver/pom.xml Fri Sep 16 11:27:54 2011 @@ -89,7 +89,12 @@ <dependency> <groupId>org.apache.james.protocols</groupId> <artifactId>protocols-impl</artifactId> - </dependency> + </dependency> + <dependency> + <groupId>org.apache.james.protocols</groupId> + <artifactId>protocols-smtp-netty</artifactId> + <version>${protocols.version}</version> + </dependency> <dependency> <groupId>org.apache.james.jspf</groupId> <artifactId>apache-jspf-resolver</artifactId> 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=1171510&r1=1171509&r2=1171510&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 Fri Sep 16 11:27:54 2011 @@ -43,24 +43,17 @@ import org.slf4j.Logger; * {@link ChannelUpstreamHandler} which is used by the SMTPServer */ @Sharable -public class SMTPChannelUpstreamHandler extends AbstractChannelUpstreamHandler { - private final Logger logger; - private final SMTPConfiguration conf; - private final SSLContext context; - private String[] enabledCipherSuites; +public class SMTPChannelUpstreamHandler extends org.apache.james.protocols.smtp.netty.SMTPChannelUpstreamHandler { - public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger) { - this(chain, conf, logger, null, null); - } public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger, SSLContext context, String[] enabledCipherSuites) { - super(chain); - this.conf = conf; - this.logger = logger; - this.context = context; - this.enabledCipherSuites = enabledCipherSuites; + super(chain, conf, logger, context, enabledCipherSuites); } - + public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger) { + super(chain, conf, logger); + } + + @Override protected ProtocolSession createSession(ChannelHandlerContext ctx) throws Exception { if (context != null) { @@ -73,26 +66,6 @@ public class SMTPChannelUpstreamHandler return new SMTPNettySession(conf, logger, ctx.getChannel()); } } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { - Channel channel = ctx.getChannel(); - if (e.getCause() instanceof TooLongFrameException) { - ctx.getChannel().write(new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, "Line length exceeded. See RFC 2821 #4.5.3.1.")); - } else { - if (channel.isConnected()) { - ctx.getChannel().write(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unable to process request")).addListener(ChannelFutureListener.CLOSE); - } - SMTPSession smtpSession = (SMTPSession) ctx.getAttachment(); - if (smtpSession != null) { - smtpSession.getLogger().debug("Unable to process request", e.getCause()); - } else { - logger.debug("Unable to process request", e.getCause()); - } - cleanup(ctx); - } - } - /** * Cleanup temporary files * Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java?rev=1171510&r1=1171509&r2=1171510&view=diff ============================================================================== --- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java (original) +++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java Fri Sep 16 11:27:54 2011 @@ -18,15 +18,8 @@ ****************************************************************/ package org.apache.james.smtpserver.netty; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - import javax.net.ssl.SSLEngine; -import org.apache.james.protocols.api.LineHandler; -import org.apache.james.protocols.impl.AbstractSession; -import org.apache.james.protocols.impl.LineHandlerUpstreamHandler; import org.apache.james.protocols.smtp.SMTPConfiguration; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.smtpserver.netty.SMTPServer.SMTPHandlerConfigurationDataImpl; @@ -36,175 +29,22 @@ import org.slf4j.Logger; /** * {@link SMTPSession} implementation for use with Netty */ -public class SMTPNettySession extends AbstractSession implements SMTPSession { - public final static String SMTP_SESSION = "SMTP_SESSION"; - - private boolean relayingAllowed; - - private Map<String, Object> connectionState; - +public class SMTPNettySession extends org.apache.james.protocols.smtp.netty.SMTPNettySession { + private SMTPConfiguration theConfigData; - private int lineHandlerCount = 0; public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, Channel channel, SSLEngine engine) { - super(logger, channel, engine); + super(theConfigData, logger, channel, engine); this.theConfigData = theConfigData; - connectionState = new HashMap<String, Object>(); - - relayingAllowed = theConfigData.isRelayingAllowed(getRemoteIPAddress()); - } - - public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, Channel channel) { - this(theConfigData, logger, channel, null); - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#getConnectionState() - */ - public Map<String, Object> getConnectionState() { - return connectionState; - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#getState() - */ - @SuppressWarnings("unchecked") - public Map<String, Object> getState() { - Map<String, Object> res = (Map<String, Object>) getConnectionState().get(SMTPSession.SESSION_STATE_MAP); - if (res == null) { - res = new HashMap<String, Object>(); - getConnectionState().put(SMTPSession.SESSION_STATE_MAP, res); - } - return res; - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#isRelayingAllowed() - */ - public boolean isRelayingAllowed() { - return relayingAllowed; } - /** - * @see org.apache.james.protocols.smtp.SMTPSession#resetState() - */ - public void resetState() { - // remember the ehlo mode between resets - Object currentHeloMode = getState().get(CURRENT_HELO_MODE); - - getState().clear(); - - // start again with the old helo mode - if (currentHeloMode != null) { - getState().put(CURRENT_HELO_MODE, currentHeloMode); - } - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#popLineHandler() - */ - public void popLineHandler() { - if (lineHandlerCount > 0) { - getChannel().getPipeline().remove("lineHandler" + lineHandlerCount); - lineHandlerCount--; - } - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#pushLineHandler(org.apache.james.smtpserver.protocol.LineHandler) - */ - public void pushLineHandler(LineHandler<SMTPSession> overrideCommandHandler) { - lineHandlerCount++; - // Add the linehandler in front of the coreHandler so we can be sure - // it is executed with the same ExecutorHandler as the coreHandler (if one exist) - // - // See JAMES-1277 - getChannel().getPipeline().addBefore("coreHandler", "lineHandler" + lineHandlerCount, new LineHandlerUpstreamHandler<SMTPSession>(this, overrideCommandHandler)); - } - /** - * @see org.apache.james.protocols.smtp.SMTPSession#getHelloName() - */ - public String getHelloName() { - return theConfigData.getHelloName(); - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#getMaxMessageSize() - */ - public long getMaxMessageSize() { - return theConfigData.getMaxMessageSize(); - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#getRcptCount() - */ - @SuppressWarnings("unchecked") - public int getRcptCount() { - int count = 0; - - // check if the key exists - if (getState().get(SMTPSession.RCPT_LIST) != null) { - count = ((Collection) getState().get(SMTPSession.RCPT_LIST)).size(); - } - - return count; - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#getSMTPGreeting() - */ - public String getSMTPGreeting() { - return theConfigData.getSMTPGreeting(); - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#isAuthSupported() - */ - public boolean isAuthSupported() { - return theConfigData.isAuthRequired(socketAddress.getAddress().getHostAddress()); - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#setRelayingAllowed(boolean) - */ - public void setRelayingAllowed(boolean relayingAllowed) { - this.relayingAllowed = relayingAllowed; - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#sleep(long) - */ - public void sleep(long ms) { - // session.getFilterChain().addAfter("connectionFilter", - // "tarpitFilter",new TarpitFilter(ms)); - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#useAddressBracketsEnforcement() - */ - public boolean useAddressBracketsEnforcement() { - return theConfigData.useAddressBracketsEnforcement(); - } - - /** - * @see org.apache.james.protocols.smtp.SMTPSession#useHeloEhloEnforcement() - */ - public boolean useHeloEhloEnforcement() { - return theConfigData.useHeloEhloEnforcement(); + public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, Channel channel) { + super(theConfigData, logger, channel); + this.theConfigData = theConfigData; } - /* - * (non-Javadoc) - * - * @see - * org.apache.james.protocols.smtp.SMTPSession#getPushedLineHandlerCount() - */ - public int getPushedLineHandlerCount() { - return lineHandlerCount; - } - public boolean verifyIdentity() { if (theConfigData instanceof SMTPHandlerConfigurationDataImpl) { 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=1171510&r1=1171509&r2=1171510&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 Fri Sep 16 11:27:54 2011 @@ -27,6 +27,7 @@ import org.apache.james.dnsservice.libra import org.apache.james.protocols.api.HandlersPackage; import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer; import org.apache.james.protocols.smtp.SMTPConfiguration; +import org.apache.james.protocols.smtp.netty.SMTPResponseEncoder; import org.apache.james.smtpserver.CoreCmdHandlerLoader; import org.apache.james.smtpserver.jmx.JMXHandlersLoader; import org.jboss.netty.channel.ChannelUpstreamHandler; --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org