Author: ngn
Date: Fri Dec 12 07:31:03 2008
New Revision: 726046
URL: http://svn.apache.org/viewvc?rev=726046&view=rev
Log:
Default to the listener SSL configuration if none is provided for the data
connection (FTPSERVER-239)
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java?rev=726046&r1=726045&r2=726046&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
Fri Dec 12 07:31:03 2008
@@ -21,6 +21,7 @@
import java.io.IOException;
+import org.apache.ftpserver.DataConnectionConfiguration;
import org.apache.ftpserver.command.AbstractCommand;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpReply;
@@ -29,6 +30,7 @@
import org.apache.ftpserver.impl.FtpServerContext;
import org.apache.ftpserver.impl.LocalizedFtpReply;
import org.apache.ftpserver.impl.ServerDataConnectionFactory;
+import org.apache.ftpserver.ssl.SslConfiguration;
/**
* <strong>Internal class, do not use directly.</strong>
@@ -40,6 +42,19 @@
*/
public class PROT extends AbstractCommand {
+ private SslConfiguration getSslConfiguration(final FtpIoSession session) {
+ DataConnectionConfiguration dataCfg =
session.getListener().getDataConnectionConfiguration();
+
+ SslConfiguration configuration = dataCfg.getSslConfiguration();
+
+ // fall back if no configuration has been provided on the data
connection config
+ if(configuration == null) {
+ configuration = session.getListener().getSslConfiguration();
+ }
+
+ return configuration;
+ }
+
/**
* Execute command.
*/
@@ -67,8 +82,7 @@
session.write(LocalizedFtpReply.translate(session, request,
context,
FtpReply.REPLY_200_COMMAND_OKAY, "PROT", null));
} else if (arg.equals("P")) {
- if (session.getListener().getDataConnectionConfiguration()
- .getSslConfiguration() == null) {
+ if (getSslConfiguration(session) == null) {
session.write(LocalizedFtpReply.translate(session, request,
context,
431, "PROT", null));
} else {
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java?rev=726046&r1=726045&r2=726046&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
Fri Dec 12 07:31:03 2008
@@ -253,18 +253,9 @@
if (element != null) {
// data con config element available
SslConfiguration ssl = parseSsl(element);
- if (ssl != null) {
- LOG.debug("SSL configuration found for the data connection");
- dc.setSslConfiguration(ssl);
- } else {
- // go look for the parent element SSL config
- // find the listener element
- if (listenerSslConfiguration != null) {
- LOG
- .debug("SSL configuration found for the listener,
falling back for that for the data connection");
- dc.setSslConfiguration(listenerSslConfiguration);
- }
- }
+
+ LOG.debug("SSL configuration found for the data connection");
+ dc.setSslConfiguration(ssl);
Element activeElm = SpringUtil.getChildElement(element,
FtpServerNamespaceHandler.FTPSERVER_NS, "active");
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java?rev=726046&r1=726045&r2=726046&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
Fri Dec 12 07:31:03 2008
@@ -141,6 +141,19 @@
requestTime = System.currentTimeMillis();
}
+ private SslConfiguration getSslConfiguration() {
+ DataConnectionConfiguration dataCfg =
session.getListener().getDataConnectionConfiguration();
+
+ SslConfiguration configuration = dataCfg.getSslConfiguration();
+
+ // fall back if no configuration has been provided on the data
connection config
+ if(configuration == null) {
+ configuration = session.getListener().getSslConfiguration();
+ }
+
+ return configuration;
+ }
+
/**
* Initiate a data connection in passive mode (server listening). It
returns
* the success flag.
@@ -162,7 +175,6 @@
// open passive server socket and get parameters
try {
-
DataConnectionConfiguration dataCfg = session.getListener()
.getDataConnectionConfiguration();
@@ -181,7 +193,7 @@
.debug(
"Opening SSL passive data connection on
address \"{}\" and port {}",
address, passivePort);
- SslConfiguration ssl = dataCfg.getSslConfiguration();
+ SslConfiguration ssl = getSslConfiguration();
if (ssl == null) {
throw new DataConnectionException(
"Data connection SSL required but not
configured.");
@@ -291,7 +303,7 @@
if (!passive) {
int localPort = dataConfig.getActiveLocalPort();
if (secure) {
- SslConfiguration ssl = dataConfig.getSslConfiguration();
+ SslConfiguration ssl = getSslConfiguration();
if (ssl == null) {
throw new FtpException(
"Data connection SSL not configured");
Modified:
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java?rev=726046&r1=726045&r2=726046&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
(original)
+++
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
Fri Dec 12 07:31:03 2008
@@ -76,11 +76,11 @@
factory.setSslConfiguration(createSslConfiguration().createSslConfiguration());
- DataConnectionConfigurationFactory dataConfig = new
DataConnectionConfigurationFactory();
-
dataConfig.setSslConfiguration(createSslConfiguration().createSslConfiguration());
-
-
factory.setDataConnectionConfiguration(dataConfig.createDataConnectionConfiguration());
-
+// DataConnectionConfigurationFactory dataConfig = new
DataConnectionConfigurationFactory();
+//
dataConfig.setSslConfiguration(createSslConfiguration().createSslConfiguration());
+//
+//
factory.setDataConnectionConfiguration(dataConfig.createDataConnectionConfiguration());
+//
server.addListener("default", factory.createListener());
return server;