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>