This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch 1.2.X
in repository https://gitbox.apache.org/repos/asf/mina-ftpserver.git


The following commit(s) were added to refs/heads/1.2.X by this push:
     new 3d63dee5 Bumped up some plugins
3d63dee5 is described below

commit 3d63dee519d5109519d81beda79f5ecce8d9a4df
Author: emmanuel lecharny <[email protected]>
AuthorDate: Thu Dec 26 08:04:04 2024 +0100

    Bumped up some plugins
---
 core/pom.xml                                       |  2 +-
 .../org/apache/ftpserver/command/impl/AUTH.java    | 23 ++++++++++++++++------
 .../org/apache/ftpserver/impl/FtpIoSession.java    |  8 +++++++-
 .../ftpserver/usermanager/impl/BaseUser.java       | 19 +++++++++++++++---
 examples/ftpserver-example-spring-war/pom.xml      |  2 +-
 pom.xml                                            | 11 +++++++----
 6 files changed, 49 insertions(+), 16 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 2c358512..4aa16c0e 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -87,7 +87,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>properties-maven-plugin</artifactId>
-        <version>1.1.0</version>
+        <version>1.2.1</version>
         <executions>
           <execution>
             <phase>generate-resources</phase>
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/AUTH.java 
b/core/src/main/java/org/apache/ftpserver/command/impl/AUTH.java
index b172f303..f2ca1b10 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/AUTH.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/AUTH.java
@@ -33,6 +33,8 @@ import org.apache.ftpserver.impl.FtpServerContext;
 import org.apache.ftpserver.impl.LocalizedFtpReply;
 import org.apache.ftpserver.ssl.ClientAuth;
 import org.apache.ftpserver.ssl.SslConfiguration;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.core.write.WriteRequest;
 import org.apache.mina.filter.ssl.SslFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -102,8 +104,10 @@ public class AUTH extends AbstractCommand {
             }
 
             try {
-                secureSession(session, authType);
-                session.write(LocalizedFtpReply.translate(session, request, 
context, 234, "AUTH." + authType, null));
+                LocalizedFtpReply reply = LocalizedFtpReply.translate(session, 
request, context, 234, "AUTH." + authType, null);
+                secureSession(session, authType, reply);
+
+                session.write(reply);
             } catch (FtpException ex) {
                 throw ex;
             } catch (Exception ex) {
@@ -115,14 +119,21 @@ public class AUTH extends AbstractCommand {
         }
     }
 
-    private void secureSession(final FtpIoSession session, final String type)
+    private void secureSession(final FtpIoSession session, final String type, 
LocalizedFtpReply reply)
         throws GeneralSecurityException, FtpException {
         SslConfiguration ssl = session.getListener().getSslConfiguration();
     
         if (ssl != null) {
-            session.setAttribute(SslFilter.DISABLE_ENCRYPTION_ONCE);
-    
-            SslFilter sslFilter = new SslFilter(ssl.getSSLContext());
+            SslFilter sslFilter = new SslFilter(ssl.getSSLContext()) {
+                @Override
+                public void filterWrite(NextFilter next, IoSession session, 
WriteRequest request) throws Exception {
+                    if (request.getOriginalMessage() == reply) {
+                       next.filterWrite(session, request);
+                    } else {
+                        super.filterWrite(next, session, request);
+                    }
+                }
+            };
             if (ssl.getClientAuth() == ClientAuth.NEED) {
                 sslFilter.setNeedClientAuth(true);
             } else if (ssl.getClientAuth() == ClientAuth.WANT) {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java 
b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
index 364e4bee..ec9109b1 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
@@ -40,6 +40,7 @@ import org.apache.mina.core.filterchain.IoFilterChain;
 import org.apache.mina.core.future.CloseFuture;
 import org.apache.mina.core.future.ReadFuture;
 import org.apache.mina.core.future.WriteFuture;
+import org.apache.mina.core.service.IoAcceptor;
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.service.IoService;
 import org.apache.mina.core.service.TransportMetadata;
@@ -729,7 +730,7 @@ public class FtpIoSession implements IoSession {
             SslFilter sslFilter = (SslFilter) getFilterChain().get(
                     SslFilter.class);
 
-            SSLSession sslSession = sslFilter.getSslSession(this);
+            SSLSession sslSession = 
SSLSession.class.cast(getAttribute(SslFilter.SSL_SECURED));
 
             if (sslSession != null) {
                 try {
@@ -864,4 +865,9 @@ public class FtpIoSession implements IoSession {
     public boolean isSecured() {
         return getFilterChain().contains(SslFilter.class);
     }
+
+    @Override
+    public boolean isServer() {
+        return (getService() instanceof IoAcceptor);
+    }
 }
diff --git 
a/core/src/main/java/org/apache/ftpserver/usermanager/impl/BaseUser.java 
b/core/src/main/java/org/apache/ftpserver/usermanager/impl/BaseUser.java
index b2359794..87fa5cb2 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/BaseUser.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/BaseUser.java
@@ -182,14 +182,27 @@ public class BaseUser implements User {
         if(authorities == null) {
             return null;
         }
-        
+       
+        boolean someoneCouldAuthorize = false;
+ 
         for (Authority authority : authorities) {
             if (authority.canAuthorize(request)) {
-                return authority.authorize(request);
+                someoneCouldAuthorize = true;
+
+                request = authority.authorize(request);
+
+                // authorization failed, return null
+                if (request == null) {
+                    return null;
+                }
             }
         }
 
-        return null;
+        if (someoneCouldAuthorize) {
+            return request;
+        } else {
+            return null;
+        }
     }
 
     /**
diff --git a/examples/ftpserver-example-spring-war/pom.xml 
b/examples/ftpserver-example-spring-war/pom.xml
index 2aa457df..992b8bf1 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -66,7 +66,7 @@
       <plugin>
         <groupId>org.mortbay.jetty</groupId>
         <artifactId>maven-jetty-plugin</artifactId>
-        <version>6.1.8</version>
+        <version>6.1.26</version>
         <configuration>
           <contextPath>/</contextPath>
           <scanIntervalSeconds>5</scanIntervalSeconds>
diff --git a/pom.xml b/pom.xml
index 5befe86d..d14c0967 100644
--- a/pom.xml
+++ b/pom.xml
@@ -154,13 +154,13 @@
     <jcl.over.slf4j.version>1.7.36</jcl.over.slf4j.version>
     <junit.version>4.13.2</junit.version>
     <log4j.version>2.20.0</log4j.version>
-    <mina.core.version>2.2.2</mina.core.version>
+    <mina.core.version>2.2.4</mina.core.version>
     <slf4j.api.version>1.7.36</slf4j.api.version>
     <slf4j.log4j12.version>1.7.36</slf4j.log4j12.version>
     <spring.context.version>2.5.5</spring.context.version>
 
     <!-- Checkstyle configuration -->
-    <checkstyle.plugin.version>3.1.2</checkstyle.plugin.version>
+    <checkstyle.plugin.version>3.6.0</checkstyle.plugin.version>
     <checkstyle.version>9.3</checkstyle.version>
     <checkstyle.configdir>.</checkstyle.configdir>
 
@@ -170,7 +170,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
     <!-- Maven plugin version -->
-    <maven-javadoc-plugin-version>3.3.2</maven-javadoc-plugin-version>
+    <maven-javadoc-plugin-version>3.11.2</maven-javadoc-plugin-version>
   </properties>
 
   <dependencyManagement>
@@ -269,6 +269,9 @@
           <configuration>
             <excludeSubProjects>false</excludeSubProjects>
             <excludes>
+              <!-- Jenv local version -->
+              <exclude>.java-version</exclude>
+
               <!-- MAVEN_DEFAULT_EXCLUDES -->
               <exclude>**/target/**/*</exclude>
               <exclude>**/cobertura.ser</exclude>
@@ -351,7 +354,7 @@
         <plugin>
           <groupId>com.github.siom79.japicmp</groupId>
           <artifactId>japicmp-maven-plugin</artifactId>
-          <version>0.15.7</version>
+          <version>0.23.0</version>
           <configuration>
             <oldVersion>
               <dependency>

Reply via email to