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 2012/01/01 16:28:27 UTC
svn commit: r1226256 - in /james/protocols/trunk/smtp/src:
main/java/org/apache/james/protocols/smtp/core/
main/java/org/apache/james/protocols/smtp/core/esmtp/
test/java/org/apache/james/protocols/smtp/
Author: norman
Date: Sun Jan 1 15:28:26 2012
New Revision: 1226256
URL: http://svn.apache.org/viewvc?rev=1226256&view=rev
Log:
Add getCharset() and getLineDelimiters() to ProtocolSession. See PROTOCOLS-78
Modified:
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java
Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java?rev=1226256&r1=1226255&r2=1226256&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java Sun Jan 1 15:28:26 2012
@@ -102,15 +102,17 @@ public abstract class AbstractAddHeaders
public final String value;
private final String[] lines;
+ private final String lineDelimiter;
- public Header(String name, String value) {
+ public Header(String name, String value, String lineDelimiter) {
this.name = name;
this.value = value;
- this.lines = toString().split("\r\n");
+ this.lines = toString().split(lineDelimiter);
+ this.lineDelimiter = lineDelimiter;
}
public String toString() {
- return name + ": " + value + "\r\n";
+ return name + ": " + value + lineDelimiter;
}
/**
@@ -124,17 +126,19 @@ public abstract class AbstractAddHeaders
* @return response
*/
public Response transferTo(SMTPSession session, LineHandler<SMTPSession> handler) {
+ String charset = session.getCharset().name();
+
try {
Response response = null;
for (int i = 0; i < lines.length; i++) {
- response = handler.onLine(session, ByteBuffer.wrap((lines[i] + "\r\n").getBytes("US-ASCII")));
+ response = handler.onLine(session, ByteBuffer.wrap((lines[i] + session.getLineDelimiter()).getBytes(charset)));
if (response != null) {
break;
}
}
return response;
} catch (UnsupportedEncodingException e) {
- throw new RuntimeException("NO US-ASCII ?", e);
+ throw new RuntimeException("NO " + charset + " support ?", e);
}
}
}
Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java?rev=1226256&r1=1226255&r2=1226256&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java Sun Jan 1 15:28:26 2012
@@ -107,7 +107,7 @@ public class ReceivedDataLineFilter exte
if (heloName != null) {
headerLineBuffer.append(" (").append(heloMode).append(" ").append(heloName).append(") ");
}
- headerLineBuffer.append(" ([").append(session.getRemoteAddress().getAddress().getHostAddress()).append("])").append("\r\n");
+ headerLineBuffer.append(" ([").append(session.getRemoteAddress().getAddress().getHostAddress()).append("])").append(session.getLineDelimiter());
headerLineBuffer.delete(0, headerLineBuffer.length());
headerLineBuffer.append(Header.MULTI_LINE_PREFIX).append("by ").append(session.getConfiguration().getHelloName()).append(" (").append(session.getConfiguration().getSoftwareName()).append(") with ").append(getServiceType(session, heloMode));
@@ -117,7 +117,7 @@ public class ReceivedDataLineFilter exte
// Only indicate a recipient if they're the only recipient
// (prevents email address harvesting and large headers in
// bulk email)
- headerLineBuffer.append("\r\n");
+ headerLineBuffer.append(session.getLineDelimiter());
headerLineBuffer.append(Header.MULTI_LINE_PREFIX).append("for <").append(((List<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, State.Transaction)).get(0).toString()).append(">;");
} else {
// Put the ; on the end of the 'by' line
@@ -125,6 +125,6 @@ public class ReceivedDataLineFilter exte
}
headerLineBuffer.append(Header.MULTI_LINE_PREFIX).append(DATEFORMAT.get().format(new Date()));
- return Arrays.asList(new Header("Received", headerLineBuffer.toString()));
+ return Arrays.asList(new Header("Received", headerLineBuffer.toString(), session.getLineDelimiter()));
}
}
Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java?rev=1226256&r1=1226255&r2=1226256&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java Sun Jan 1 15:28:26 2012
@@ -63,7 +63,6 @@ public class AuthCmdHandler
private static final String[] MAIL_PARAMS = { "AUTH" };
private static final List<String> ESMTP_FEATURES = Collections.unmodifiableList(Arrays.asList("AUTH LOGIN PLAIN", "AUTH=LOGIN PLAIN"));
- private final static String CHARSET = "US-ASCII";
private static final Response AUTH_ABORTED = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Authentication aborted").immutable();
private static final Response ALREADY_AUTH = new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" User has previously authenticated. "
+ " Further authentication is not required!").immutable();
@@ -77,6 +76,7 @@ public class AuthCmdHandler
private abstract class AbstractSMTPLineHandler implements LineHandler<SMTPSession> {
public Response onLine(SMTPSession session, ByteBuffer line) {
+ String charset = session.getCharset().name();
try {
byte[] l;
if (line.hasArray()) {
@@ -85,9 +85,9 @@ public class AuthCmdHandler
l = new byte[line.remaining()];
line.get(l);
}
- return handleCommand(session, new String(l, CHARSET));
+ return handleCommand(session, new String(l, charset));
} catch (UnsupportedEncodingException e) {
- throw new RuntimeException("No " + CHARSET + " support!");
+ throw new RuntimeException("No " + charset + " support!");
}
}
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=1226256&r1=1226255&r2=1226256&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 Sun Jan 1 15:28:26 2012
@@ -23,6 +23,7 @@ package org.apache.james.protocols.smtp;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
+import java.nio.charset.Charset;
import java.util.Map;
import org.apache.james.protocols.api.Response;
@@ -207,4 +208,12 @@ public class BaseFakeSMTPSession impleme
throw new UnsupportedOperationException("Unimplemented Stub Method");
}
+ public Charset getCharset() {
+ throw new UnsupportedOperationException("Unimplemented Stub Method");
+ }
+
+ public String getLineDelimiter() {
+ throw new UnsupportedOperationException("Unimplemented Stub Method");
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org