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;


Reply via email to