From 6b555e6821113c3a65d693b773a6e3e9d96120a6 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 1 Feb 2009 12:14:41 +0000
Subject: [PATCH 001/101] Branching 1.0.x
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@739752 13f79535-47bb-0310-9956-ffa450edef68
From e3f85f08b7276a8fea0dc40e5dac13af99cb590b Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 4 Feb 2009 22:09:00 +0000
Subject: [PATCH 002/101] Using the JVM default keystore and truststore
algorithm, rather than the hard coded Sun version (FTPSERVER-273)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@740915 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/ftpserver/ssl/SslConfigurationFactory.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
index 8aeb8e13..2f1922d4 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
@@ -53,7 +53,7 @@ public class SslConfigurationFactory {
private String keystoreType = KeyStore.getDefaultType();
- private String keystoreAlgorithm = "SunX509";
+ private String keystoreAlgorithm = KeyManagerFactory.getDefaultAlgorithm();
private File trustStoreFile;
@@ -61,7 +61,7 @@ public class SslConfigurationFactory {
private String trustStoreType = KeyStore.getDefaultType();
- private String trustStoreAlgorithm = "SunX509";
+ private String trustStoreAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
private String sslProtocol = "TLS";
From c9e2a6eb7ea4ecfad6cdf5c71350543b6ebdcd2b Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 14 Feb 2009 21:06:04 +0000
Subject: [PATCH 003/101] Fixing issue where NioListener.getPort() is not
updated on resume when using a dynamic port (FTPSERVER-275)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@744569 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/listener/nio/NioListener.java | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
index 0af3f25b..5a1f2eb2 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
@@ -183,9 +183,9 @@ public synchronized void start(FtpServerContext context) {
} catch (IOException e) {
throw new FtpServerConfigurationException("Failed to bind to address " + address + ", check configuration", e);
}
+
+ updatePort();
- // update the port to the real port bound by the listener
- setPort(acceptor.getLocalAddress().getPort());
} catch(RuntimeException e) {
// clean up if we fail to start
stop();
@@ -193,6 +193,11 @@ public synchronized void start(FtpServerContext context) {
throw e;
}
}
+
+ private void updatePort() {
+ // update the port to the real port bound by the listener
+ setPort(acceptor.getLocalAddress().getPort());
+ }
/**
* @see Listener#stop()
@@ -242,6 +247,8 @@ public synchronized void resume() {
LOG.debug("Resuming listener");
acceptor.bind(address);
LOG.debug("Listener resumed");
+
+ updatePort();
} catch (IOException e) {
LOG.error("Failed to resume listener", e);
}
From 91347acfb57c88e580b106e0ca3965d4a45c504e Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 21 Feb 2009 07:25:24 +0000
Subject: [PATCH 004/101] Increasing version for new development towards 1.0.1
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@746445 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 4 ++--
distribution/pom.xml | 4 ++--
examples/ftpserver-example-spring-war/pom.xml | 4 ++--
examples/ftpserver-osgi-ftplet-service/pom.xml | 4 ++--
examples/ftpserver-osgi-spring-service/pom.xml | 4 ++--
examples/pom.xml | 4 ++--
ftplet-api/pom.xml | 4 ++--
pom.xml | 2 +-
8 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index 9fc4264f..80d0d335 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -17,13 +17,13 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOT4.0.0org.apache.ftpserverftpserver-coreApache FtpServer Core
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOTbundle
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 4b279999..d5367a84 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -22,14 +22,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOT4.0.0org.apache.ftpserverftpserverpomApache FtpServer
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOTscm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/distributionscm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution
diff --git a/examples/ftpserver-example-spring-war/pom.xml b/examples/ftpserver-example-spring-war/pom.xml
index 60449565..49cd2aed 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -18,7 +18,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOT../../pom.xml
@@ -27,7 +27,7 @@
ftpserver-spring-warFtpServer Spring web project examplewar
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOTorg.springframework
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index 8b28132d..9c65d2e1 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-ftplet-serviceFtpServer OSGi Ftplet service examplebundle
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index 7a4c3fcb..a9f4b2f0 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-spring-serviceFtpServer OSGi Spring-DM examplebundle
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/pom.xml b/examples/pom.xml
index 5d446d7e..0916696e 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,14 +21,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOT4.0.0org.apache.ftpserverr
ftpserver-examplespomApache FtpServer Examples
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOTftpserver-example-spring-warftpserver-osgi-ftplet-service
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index 5b9a00c2..41c4d4c1 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -17,12 +17,12 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOT4.0.0org.apache.ftpserverftplet-api
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOTbundleApache Ftplet API Ftplets are, similar to servlets, an API to plug into the
diff --git a/pom.xml b/pom.xml
index 21153e81..6e331e01 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
ftpserver-parentpomApache FtpServer Parent
- 1.0.0-RC3-SNAPSHOT
+ 1.0.1-SNAPSHOThttp://mina.apache.org/ftpserverJira
From 79128f23670c02be02ea532ca38de8ae9bee1f40 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 22 Feb 2009 21:30:42 +0000
Subject: [PATCH 005/101] Making sure our SSL tests work on IBM JDK
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@746824 13f79535-47bb-0310-9956-ffa450edef68
---
.../java/org/apache/ftpserver/ssl/SSLTestTemplate.java | 8 ++++++--
.../apache/ftpserver/ssl/impl/AliasKeymanagerTest.java | 2 +-
.../ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
index b383a8c2..75a2669c 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
@@ -104,12 +104,12 @@ protected FTPSClient createFTPClient() throws Exception {
// initialize key manager factory
KeyManagerFactory keyManagerFactory = KeyManagerFactory
- .getInstance("SunX509");
+ .getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(store, KEYSTORE_PASSWORD.toCharArray());
// initialize trust manager factory
TrustManagerFactory trustManagerFactory = TrustManagerFactory
- .getInstance("SunX509");
+ .getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(store);
@@ -122,6 +122,10 @@ protected FTPSClient createFTPClient() throws Exception {
String auth = getAuthValue();
if (auth != null) {
ftpsClient.setAuthValue(auth);
+
+ if(auth.equals("SSL")) {
+ ftpsClient.setEnabledProtocols(new String[]{"SSLv3"});
+ }
}
return ftpsClient;
}
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java b/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
index c5417c84..5268f84c 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
@@ -44,7 +44,7 @@ protected void setUp() throws Exception {
"src/test/resources/keymanager-test.jks");
ks.load(fis, "".toCharArray());
- KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "".toCharArray());
km = kmf.getKeyManagers()[0];
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java b/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
index 2c23b7c9..df8f1fc3 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
@@ -44,7 +44,7 @@ protected void setUp() throws Exception {
"src/test/resources/keymanager-test.jks");
ks.load(fis, "".toCharArray());
- KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "".toCharArray());
km = kmf.getKeyManagers()[0];
From 777287ee9fbe98579658e1df80a5aa38d3fc2598 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 22 Feb 2009 21:39:39 +0000
Subject: [PATCH 006/101] Making our test behave better in our CI builds where
concurrent builds are done on the same machine
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@746826 13f79535-47bb-0310-9956-ffa450edef68
---
.../clienttests/ClientTestTemplate.java | 27 +++++--------------
.../ftpserver/clienttests/ConnectTest.java | 6 ++---
.../clienttests/InetAddressBlacklistTest.java | 3 +--
.../ftpserver/clienttests/LoginTest.java | 8 +++---
.../ftpserver/clienttests/PasvTest.java | 6 ++---
.../ftpserver/clienttests/SiteTest.java | 6 ++---
.../clienttests/SubnetBlacklistTest.java | 2 +-
.../clienttests/SuspendResumeTest.java | 12 ++++-----
8 files changed, 28 insertions(+), 42 deletions(-)
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
index 739e13d5..8088a473 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
@@ -68,8 +68,6 @@ public abstract class ClientTestTemplate extends TestCase {
protected DefaultFtpServer server;
- protected int port = -1;
-
protected FTPClient client;
private static final File USERS_FILE = new File(TestUtil.getBaseDir(),
@@ -90,7 +88,7 @@ protected FtpServerFactory createServer() throws Exception {
ListenerFactory listenerFactory = new ListenerFactory();
- listenerFactory.setPort(port);
+ listenerFactory.setPort(0);
listenerFactory
.setDataConnectionConfiguration(createDataConnectionConfigurationFactory()
@@ -144,8 +142,6 @@ protected void initDirs() throws IOException {
* @throws Exception
*/
protected void initServer() throws IOException, Exception {
- initPort();
-
// cast to internal class to get access to getters
server = (DefaultFtpServer) createServer().createServer();
@@ -154,6 +150,10 @@ protected void initServer() throws IOException, Exception {
}
}
+ protected int getListenerPort() {
+ return server.getListener("default").getPort();
+ }
+
protected boolean isStartServer() {
return true;
}
@@ -186,11 +186,11 @@ public void protocolReplyReceived(ProtocolCommandEvent event) {
protected void doConnect() throws Exception {
try {
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
} catch (FTPConnectionClosedException e) {
// try again
Thread.sleep(200);
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
}
}
@@ -198,19 +198,6 @@ protected boolean isConnectClient() {
return true;
}
- /**
- * Attempts to find a free port or fallback to a default
- *
- * @throws IOException
- *
- * @throws IOException
- */
- private void initPort() throws IOException {
- if (port == -1) {
- port = TestUtil.findFreePort();
- }
- }
-
protected void cleanTmpDirs() throws IOException {
if (TEST_TMP_DIR.exists()) {
IoUtils.delete(TEST_TMP_DIR);
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
index 109ec858..10bf8c43 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
@@ -40,13 +40,13 @@ protected boolean isStartServer() {
}
public void testPort() throws Exception {
- assertEquals(port, ((NioListener) server.getServerContext()
+ assertEquals(0, ((NioListener) server
.getListener("default")).getPort());
server.start();
- assertEquals(port, ((NioListener) server.getServerContext()
- .getListener("default")).getPort());
+ assertTrue(((NioListener) server
+ .getListener("default")).getPort() > 0);
}
}
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
index 54b9732c..ad1dc784 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
@@ -25,7 +25,6 @@
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.listener.ListenerFactory;
/**
@@ -56,7 +55,7 @@ protected boolean isConnectClient() {
public void testConnect() throws Exception {
try {
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
fail("Must throw");
} catch (FTPConnectionClosedException e) {
// OK
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
index 54807f08..5231e261 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
@@ -152,10 +152,10 @@ public void testLoginWithMaxConnections() throws Exception {
FTPClient client4 = new FTPClient();
try {
- client1.connect("localhost", port);
- client2.connect("localhost", port);
- client3.connect("localhost", port);
- client4.connect("localhost", port);
+ client1.connect("localhost", getListenerPort());
+ client2.connect("localhost", getListenerPort());
+ client3.connect("localhost", getListenerPort());
+ client4.connect("localhost", getListenerPort());
assertTrue(client1.login(TESTUSER1_USERNAME, TESTUSER_PASSWORD));
assertTrue(client2.login(TESTUSER1_USERNAME, TESTUSER_PASSWORD));
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
index a59e6bf3..b5a4876d 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
@@ -58,7 +58,7 @@ protected FtpServerFactory createServer() throws Exception {
public void testMultiplePasv() throws Exception {
for (int i = 0; i < 5; i++) {
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
client.pasv();
@@ -84,11 +84,11 @@ public void testPasvIp() throws Exception {
if (!ip.startsWith("0.")) {
try {
- client.connect(ip, port);
+ client.connect(ip, getListenerPort());
} catch (FTPConnectionClosedException e) {
// try again
Thread.sleep(200);
- client.connect(ip, port);
+ client.connect(ip, getListenerPort());
}
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
client.pasv();
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
index 8efade0e..5bb5e869 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
@@ -81,7 +81,7 @@ public void testSiteStat() throws Exception {
// let's generate some stats
FTPClient client1 = new FTPClient();
- client1.connect("localhost", port);
+ client1.connect("localhost", getListenerPort());
assertTrue(client1.login(ADMIN_USERNAME, ADMIN_PASSWORD));
assertTrue(client1.makeDirectory("foo"));
@@ -96,12 +96,12 @@ public void testSiteStat() throws Exception {
client1.disconnect();
FTPClient client2 = new FTPClient();
- client2.connect("localhost", port);
+ client2.connect("localhost", getListenerPort());
assertTrue(client2.login(ANONYMOUS_USERNAME, ANONYMOUS_PASSWORD));
// done setting up stats
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
client.sendCommand("SITE STAT");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
index cc5f1496..5260c3e1 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
@@ -56,7 +56,7 @@ protected boolean isConnectClient() {
public void testConnect() throws Exception {
try {
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
fail("Must throw");
} catch (FTPConnectionClosedException e) {
// OK
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
index bdcd64df..840a8218 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
@@ -37,13 +37,13 @@ protected boolean isConnectClient() {
public void testSuspendResumeServer() throws Exception {
// connect should work as expected
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
client.disconnect();
server.suspend();
try {
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
fail("Must throw IOException");
} catch(IOException e) {
// OK
@@ -54,19 +54,19 @@ public void testSuspendResumeServer() throws Exception {
server.resume();
// connect should work again
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
client.disconnect();
}
public void testSuspendResumeListener() throws Exception {
// connect should work as expected
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
client.disconnect();
server.getListener("default").suspend();
try {
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
fail("Must throw IOException");
} catch(IOException e) {
// OK
@@ -77,7 +77,7 @@ public void testSuspendResumeListener() throws Exception {
server.getListener("default").resume();
// connect should work again
- client.connect("localhost", port);
+ client.connect("localhost", getListenerPort());
client.disconnect();
}
From b2e53862bd3e4595e7f6151ab0f64a58acb8d7e1 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 23 Feb 2009 08:46:37 +0000
Subject: [PATCH 007/101] Update README.txt
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@746928 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/README.txt | 34 ++++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/distribution/README.txt b/distribution/README.txt
index a619f405..6ef43daa 100644
--- a/distribution/README.txt
+++ b/distribution/README.txt
@@ -1,5 +1,5 @@
The Apache FtpServer project team is proud to announce the release of
-Apache FtpServer, version 1.0-M2
+Apache FtpServer, version 1.0.0
The Apache FTP Server is a 100% pure Java FTP server. It's designed to be
a complete and portable FTP server engine solution based on currently
@@ -13,11 +13,33 @@ you write Java code to process FTP event notifications that we call the Ftplet
API. Apache FtpServer provides an implementation of FTP server to support
this API.
-1.0-M2
+1.0.0
--------------------------------
-This is the very first release of Apache FtpServer.
+This is the first major release of FtpServer and we now recommend this version
+for production usage. The release contains a few minor bug fixes found since the
+last release candidate.
+
+1.0.0-RC2
+--------------------------------
+The release contains fixes to a small set of bugs found in 1.0.0-RC1.
+
+1.0.0-RC1
+--------------------------------
+This release focuses on stabilizing the code base and fixing reported bugs. No major
+additions or other improvements was included in this version.
+1.0.0-M4
+--------------------------------
+The FtpServer API is now stabilized for the upcoming 1.0.0 release. The release
+also contains a large number of bug fixes and minor improvements as well as
+complete Javadoc documentation for our API.
+
+1.0.0-M3
+--------------------------------
+This release fixes a number of bugs found since the release of 1.0.0-M2.
+We have also made some major improvements, especially to Ftplets which are now
+able to intercept any FTP command.
-The Apache Incubator FtpServer project team is always open for your feedback.
-Please let us know what you think about FtpServer via our mailing
-list
+1.0.0-M2
+--------------------------------
+This is the very first release of Apache FtpServer.
From a76405bc7b8370d008495788034d6574e3500892 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 23 Feb 2009 11:38:24 +0000
Subject: [PATCH 008/101] Set socket timeout for FTP client
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@746966 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/ftpserver/clienttests/ClientTestTemplate.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
index 8088a473..70c06703 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
@@ -159,7 +159,9 @@ protected boolean isStartServer() {
}
protected FTPClient createFTPClient() throws Exception {
- return new FTPClient();
+ FTPClient client = new FTPClient();
+ client.setDefaultTimeout(10000);
+ return client;
}
/**
From e9b167e2378ac22fa26415bc05b9e24123fcf984 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 8 Mar 2009 09:22:47 +0000
Subject: [PATCH 009/101] Fix for File.equals problem on OS X, we now use the
canonical path instead which seems to work. Thanks Sai Pullabhotla for the
patch! (FTPSERVER-279)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@751388 13f79535-47bb-0310-9956-ffa450edef68
---
.../nativefs/impl/NativeFtpFile.java | 51 +++++++++++--------
1 file changed, 30 insertions(+), 21 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index 400188a4..e2387332 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -49,7 +49,7 @@
public class NativeFtpFile implements FtpFile {
private final Logger LOG = LoggerFactory.getLogger(NativeFtpFile.class);
-
+
// the file name with respect to the user root.
// The path separator character will be '/' and
// it will always begin with '/'.
@@ -192,7 +192,7 @@ public long getLastModified() {
public boolean setLastModified(long time) {
return file.setLastModified(time);
}
-
+
/**
* Check read permission.
*/
@@ -215,7 +215,7 @@ public boolean isWritable() {
LOG.debug("Checking can write: " + file.canWrite());
return file.canWrite();
}
-
+
LOG.debug("Authorized");
return true;
}
@@ -225,7 +225,6 @@ public boolean isWritable() {
*/
public boolean isRemovable() {
-
// root cannot be deleted
if ("/".equals(fileName)) {
return false;
@@ -235,25 +234,25 @@ public boolean isRemovable() {
* we will check if the parent file has write permission as most systems consider that a file can
* be deleted when their parent directory is writable.
*/
- String fullName=getAbsolutePath();
-
+ String fullName = getAbsolutePath();
+
// we check FTPServer's write permission for this file.
if (user.authorize(new WriteRequest(fullName)) == null) {
return false;
}
// In order to maintain consistency, when possible we delete the last '/' character in the String
- int indexOfSlash=fullName.lastIndexOf('/');
+ int indexOfSlash = fullName.lastIndexOf('/');
String parentFullName;
- if (indexOfSlash==0){
- parentFullName="/";
- }
- else{
- parentFullName=fullName.substring(0,indexOfSlash);
+ if (indexOfSlash == 0) {
+ parentFullName = "/";
+ } else {
+ parentFullName = fullName.substring(0, indexOfSlash);
}
-
+
// we check if the parent FileObject is writable.
- NativeFtpFile parentObject=new NativeFtpFile(parentFullName,file.getAbsoluteFile().getParentFile(),user);
- return parentObject.isWritable();
+ NativeFtpFile parentObject = new NativeFtpFile(parentFullName, file
+ .getAbsoluteFile().getParentFile(), user);
+ return parentObject.isWritable();
}
/**
@@ -496,7 +495,7 @@ public final static String getPhysicalName(final String rootDir,
File[] matches = new File(resArg)
.listFiles(new NameEqualsFileFilter(tok, true));
- if (matches.length > 0) {
+ if (matches != null && matches.length > 0) {
tok = matches[0].getName();
}
}
@@ -517,12 +516,22 @@ public final static String getPhysicalName(final String rootDir,
return resArg;
}
-
+
@Override
public boolean equals(Object obj) {
- if(obj != null && obj instanceof NativeFtpFile) {
- return this.file.equals(((NativeFtpFile) obj).file);
- }
- return false;
+ if (obj != null && obj instanceof NativeFtpFile) {
+ File thisCanonicalFile;
+ File otherCanonicalFile;
+ try {
+ thisCanonicalFile = this.file.getCanonicalFile();
+ otherCanonicalFile = ((NativeFtpFile) obj).file
+ .getCanonicalFile();
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to get the canonical path", e);
+ }
+
+ return thisCanonicalFile.equals(otherCanonicalFile);
+ }
+ return false;
}
}
From 0b63f9581101b7ea0ae5992cc6a3276acf968c2b Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 8 Mar 2009 09:33:17 +0000
Subject: [PATCH 010/101] Closing streams on up-/downloads so that a failure to
do so will keep statistics correct (FTPSERVER-269)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@751390 13f79535-47bb-0310-9956-ffa450edef68
---
.../java/org/apache/ftpserver/command/impl/APPE.java | 11 ++++++-----
.../java/org/apache/ftpserver/command/impl/RETR.java | 10 +++++-----
.../java/org/apache/ftpserver/command/impl/STOR.java | 11 ++++++-----
.../java/org/apache/ftpserver/command/impl/STOU.java | 11 ++++++-----
4 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java b/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
index e769d2c7..d2e8a26e 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
@@ -162,6 +162,12 @@ public void execute(final FtpIoSession session,
// transfer data
long transSz = dataConnection.transferFromClient(session.getFtpletSession(), os);
+ // attempt to close the output stream so that errors in
+ // closing it will return an error to the client (FTPSERVER-119)
+ if(os != null) {
+ os.close();
+ }
+
LOG.info("File uploaded {}", fileName);
// notify the statistics component
@@ -169,11 +175,6 @@ public void execute(final FtpIoSession session,
.getFtpStatistics();
ftpStat.setUpload(session, file, transSz);
- // attempt to close the output stream so that errors in
- // closing it will return an error to the client (FTPSERVER-119)
- if(os != null) {
- os.close();
- }
} catch (SocketException e) {
LOG.debug("SocketException during file upload", e);
failure = true;
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java b/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
index 16d2073c..cbcdde04 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
@@ -165,6 +165,11 @@ public void execute(final FtpIoSession session,
// transfer data
long transSz = dataConnection.transferToClient(session.getFtpletSession(), is);
+ // attempt to close the input stream so that errors in
+ // closing it will return an error to the client (FTPSERVER-119)
+ if(is != null) {
+ is.close();
+ }
LOG.info("File downloaded {}", fileName);
@@ -175,11 +180,6 @@ public void execute(final FtpIoSession session,
ftpStat.setDownload(session, file, transSz);
}
- // attempt to close the input stream so that errors in
- // closing it will return an error to the client (FTPSERVER-119)
- if(is != null) {
- is.close();
- }
} catch (SocketException ex) {
LOG.debug("Socket exception during data transfer", ex);
failure = true;
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java b/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
index f8a93f79..1cde2a90 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
@@ -146,6 +146,12 @@ public void execute(final FtpIoSession session,
outStream = file.createOutputStream(skipLen);
long transSz = dataConnection.transferFromClient(session.getFtpletSession(), outStream);
+ // attempt to close the output stream so that errors in
+ // closing it will return an error to the client (FTPSERVER-119)
+ if(outStream != null) {
+ outStream.close();
+ }
+
LOG.info("File uploaded {}", fileName);
// notify the statistics component
@@ -153,11 +159,6 @@ public void execute(final FtpIoSession session,
.getFtpStatistics();
ftpStat.setUpload(session, file, transSz);
- // attempt to close the output stream so that errors in
- // closing it will return an error to the client (FTPSERVER-119)
- if(outStream != null) {
- outStream.close();
- }
} catch (SocketException ex) {
LOG.debug("Socket exception during data transfer", ex);
failure = true;
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java b/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
index 97cd00b0..13569dda 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
@@ -153,6 +153,12 @@ public void execute(final FtpIoSession session,
// transfer data
long transSz = dataConnection.transferFromClient(session.getFtpletSession(), os);
+ // attempt to close the output stream so that errors in
+ // closing it will return an error to the client (FTPSERVER-119)
+ if(os != null) {
+ os.close();
+ }
+
LOG.info("File uploaded {}", fileName);
// notify the statistics component
@@ -162,11 +168,6 @@ public void execute(final FtpIoSession session,
ftpStat.setUpload(session, file, transSz);
}
- // attempt to close the output stream so that errors in
- // closing it will return an error to the client (FTPSERVER-119)
- if(os != null) {
- os.close();
- }
} catch (SocketException ex) {
LOG.debug("Socket exception during data transfer", ex);
failure = true;
From ecab1c633f857e5432b0b61e90d4e0d9df85a775 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 13 Mar 2009 09:27:24 +0000
Subject: [PATCH 011/101] Added missing columns in the select-user example
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@753187 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/res/conf/ftpd-full.xml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/distribution/res/conf/ftpd-full.xml b/distribution/res/conf/ftpd-full.xml
index f17265bb..71496309 100644
--- a/distribution/res/conf/ftpd-full.xml
+++ b/distribution/res/conf/ftpd-full.xml
@@ -71,7 +71,8 @@
DELETE FROM FTP_USER WHERE userid = '{userid}'
SELECT userid, userpassword, homedirectory,
- enableflag, writepermission, idletime, uploadrate, downloadrate FROM
+ enableflag, writepermission, idletime, uploadrate, downloadrate,
+ maxloginnumber, maxloginperip FROM
FTP_USER WHERE userid = '{userid}'
SELECT userid FROM FTP_USER ORDER BY userid
From 3456f0a2edc7b20a29fc975e684559cb863848b3 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 24 Apr 2009 19:15:40 +0000
Subject: [PATCH 012/101] Adding timeout on data connection sockets (as well as
some extra logging). Fixes FTPSERVER-293.
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@768399 13f79535-47bb-0310-9956-ffa450edef68
---
.../DataConnectionConfigurationFactory.java | 5 +++++
.../apache/ftpserver/impl/IODataConnection.java | 14 ++++++++++++++
.../ftpserver/impl/IODataConnectionFactory.java | 4 ++++
3 files changed, 23 insertions(+)
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
index 20e2d080..0147d418 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
@@ -25,6 +25,8 @@
import org.apache.ftpserver.impl.DefaultDataConnectionConfiguration;
import org.apache.ftpserver.impl.PassivePorts;
import org.apache.ftpserver.ssl.SslConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Data connection factory
@@ -34,6 +36,8 @@
*/
public class DataConnectionConfigurationFactory {
+ private Logger log = LoggerFactory.getLogger(DataConnectionConfigurationFactory.class);
+
// maximum idle time in seconds
private int idleTime = 300;
private SslConfiguration ssl;
@@ -212,6 +216,7 @@ public synchronized int requestPassivePort() {
// no available free port - wait for the release notification
if (dataPort == -1) {
try {
+ log.info("Out of passive ports, waiting for one to be released. Might be stuck");
wait();
} catch (InterruptedException ex) {
}
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
index 25ff65c9..d31cf549 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
@@ -35,6 +35,8 @@
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.usermanager.impl.TransferRateRequest;
import org.apache.ftpserver.util.IoUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Internal class, do not use directly.
@@ -47,6 +49,10 @@
*/
public class IODataConnection implements DataConnection {
+ private final Logger LOG = LoggerFactory
+ .getLogger(IODataConnection.class);
+
+
private static final byte[] EOL = System.getProperty("line.separator").getBytes();
private FtpIoSession session;
@@ -284,6 +290,14 @@ private final long transfer(FtpSession session, boolean isWrite,
notifyObserver();
}
+ } catch(IOException e) {
+ LOG.warn("Exception during data transfer, closing data connection socket", e);
+ factory.closeDataConnection();
+ throw e;
+ } catch(RuntimeException e) {
+ LOG.warn("Exception during data transfer, closing data connection socket", e);
+ factory.closeDataConnection();
+ throw e;
} finally {
if (bos != null) {
bos.flush();
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
index e84221bd..20325572 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
@@ -360,6 +360,10 @@ private synchronized Socket createDataSocket() throws Exception {
dataSoc = servSoc.accept();
}
+ DataConnectionConfiguration dataCfg = session.getListener()
+ .getDataConnectionConfiguration();
+
+ dataSoc.setSoTimeout(dataCfg.getIdleTime() * 1000);
LOG.debug("Passive data connection opened");
}
} catch (Exception ex) {
From b96cd4e0155644ff2ae8bba4e2beea377316cc1e Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 13 May 2009 20:16:05 +0000
Subject: [PATCH 013/101] Fix bug where the an open data connection will not be
closed on the filter chain exception (FTPSERVER-297) Fix bug where server
will not close the session if an Ftplet returns DISCONNECT in the onConnect
callback (FTPSERVER-298) Adding logging in all places where we close
sessions.
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@774507 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/command/impl/PASS.java | 15 +++
.../apache/ftpserver/command/impl/QUIT.java | 5 +
.../apache/ftpserver/command/impl/USER.java | 22 ++++
.../ftpserver/impl/DefaultFtpHandler.java | 43 +++++-
.../impl/IODataConnectionFactory.java | 5 +-
.../ftpletcontainer/FtpLetOnConnectTest.java | 122 ++++++++++++++++++
6 files changed, 204 insertions(+), 8 deletions(-)
create mode 100644 core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java b/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
index 93bc0920..ae08f209 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
@@ -103,7 +103,14 @@ public void execute(final FtpIoSession session,
int currAnonLogin = stat.getCurrentAnonymousLoginNumber();
int maxAnonLogin = context.getConnectionConfig()
.getMaxAnonymousLogins();
+ if(maxAnonLogin == 0) {
+ LOG.debug("Currently {} anonymous users logged in, unlimited allowed", currAnonLogin);
+ } else {
+ LOG.debug("Currently {} out of {} anonymous users logged in", currAnonLogin, maxAnonLogin);
+ }
+
if (currAnonLogin >= maxAnonLogin) {
+ LOG.debug("Too many anonymous users logged in, user will be disconnected");
session
.write(LocalizedFtpReply
.translate(
@@ -119,7 +126,13 @@ public void execute(final FtpIoSession session,
// login limit check
int currLogin = stat.getCurrentLoginNumber();
int maxLogin = context.getConnectionConfig().getMaxLogins();
+ if(maxLogin == 0) {
+ LOG.debug("Currently {} users logged in, unlimited allowed", currLogin);
+ } else {
+ LOG.debug("Currently {} out of {} users logged in", currLogin, maxLogin);
+ }
if (maxLogin != 0 && currLogin >= maxLogin) {
+ LOG.debug("Too many users logged in, user will be disconnected");
session
.write(LocalizedFtpReply
.translate(
@@ -197,6 +210,8 @@ public void execute(final FtpIoSession session,
.getMaxLoginFailures();
if (maxAllowedLoginFailues != 0
&& session.getFailedLogins() >= maxAllowedLoginFailues) {
+ LOG.warn("User exceeded the number of allowed failed logins, session will be closed");
+
session.close(false).awaitUninterruptibly(10000);
}
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java b/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
index fde131d9..97302430 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
@@ -27,6 +27,8 @@
import org.apache.ftpserver.impl.FtpIoSession;
import org.apache.ftpserver.impl.FtpServerContext;
import org.apache.ftpserver.impl.LocalizedFtpReply;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Internal class, do not use directly.
@@ -41,6 +43,8 @@
*/
public class QUIT extends AbstractCommand {
+ private final Logger LOG = LoggerFactory.getLogger(QUIT.class);
+
/**
* Execute command
*/
@@ -51,6 +55,7 @@ public void execute(final FtpIoSession session,
session.write(LocalizedFtpReply.translate(session, request, context,
FtpReply.REPLY_221_CLOSING_CONTROL_CONNECTION, "QUIT", null));
+ LOG.debug("QUIT received, closing session");
session.close(false).awaitUninterruptibly(10000);
session.getDataConnection().closeDataConnection();
}
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/USER.java b/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
index 93e0a96e..75a74af0 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
@@ -34,6 +34,8 @@
import org.apache.ftpserver.impl.ServerFtpStatistics;
import org.apache.ftpserver.usermanager.impl.ConcurrentLoginRequest;
import org.apache.mina.filter.logging.MdcInjectionFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Internal class, do not use directly.
@@ -50,6 +52,8 @@
*/
public class USER extends AbstractCommand {
+ private final Logger LOG = LoggerFactory.getLogger(USER.class);
+
/**
* Execute command.
*/
@@ -112,7 +116,14 @@ public void execute(final FtpIoSession session,
int currAnonLogin = stat.getCurrentAnonymousLoginNumber();
int maxAnonLogin = context.getConnectionConfig()
.getMaxAnonymousLogins();
+ if(maxAnonLogin == 0) {
+ LOG.debug("Currently {} anonymous users logged in, unlimited allowed", currAnonLogin);
+ } else {
+ LOG.debug("Currently {} out of {} anonymous users logged in", currAnonLogin, maxAnonLogin);
+ }
if (anonymous && (currAnonLogin >= maxAnonLogin)) {
+ LOG.debug("Too many anonymous users logged in, user will be disconnected");
+
session
.write(LocalizedFtpReply
.translate(
@@ -127,7 +138,16 @@ public void execute(final FtpIoSession session,
// login limit check
int currLogin = stat.getCurrentLoginNumber();
int maxLogin = context.getConnectionConfig().getMaxLogins();
+
+ if(maxLogin == 0) {
+ LOG.debug("Currently {} users logged in, unlimited allowed", currLogin);
+ } else {
+ LOG.debug("Currently {} out of {} users logged in", currLogin, maxLogin);
+ }
+
if (maxLogin != 0 && currLogin >= maxLogin) {
+ LOG.debug("Too many users logged in, user will be disconnected");
+
session
.write(LocalizedFtpReply
.translate(
@@ -154,6 +174,7 @@ public void execute(final FtpIoSession session,
stat.getCurrentUserLoginNumber(configUser, address) + 1);
if (configUser.authorize(loginRequest) == null) {
+ LOG.debug("User logged in too many sessions, user will be disconnected");
session
.write(LocalizedFtpReply
.translate(
@@ -182,6 +203,7 @@ public void execute(final FtpIoSession session,
// if not ok - close connection
if (!success) {
+ LOG.debug("User failed to login, session will be closed");
session.close(false).awaitUninterruptibly(10000);
}
}
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
index f5918574..07aa9207 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
@@ -23,6 +23,8 @@
import org.apache.ftpserver.command.Command;
import org.apache.ftpserver.command.CommandFactory;
+import org.apache.ftpserver.ftplet.DataConnection;
+import org.apache.ftpserver.ftplet.DataConnectionFactory;
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpReply;
import org.apache.ftpserver.ftplet.FtpRequest;
@@ -69,15 +71,28 @@ public void sessionCreated(final FtpIoSession session) throws Exception {
}
public void sessionOpened(final FtpIoSession session) throws Exception {
- context.getFtpletContainer().onConnect(session.getFtpletSession());
+ FtpletContainer ftplets = context.getFtpletContainer();
- session.updateLastAccessTime();
-
- session.write(LocalizedFtpReply.translate(session, null, context,
- FtpReply.REPLY_220_SERVICE_READY, null, null));
+ FtpletResult ftpletRet;
+ try {
+ ftpletRet = ftplets.onConnect(session.getFtpletSession());
+ } catch (Exception e) {
+ LOG.debug("Ftplet threw exception", e);
+ ftpletRet = FtpletResult.DISCONNECT;
+ }
+ if (ftpletRet == FtpletResult.DISCONNECT) {
+ LOG.debug("Ftplet returned DISCONNECT, session will be closed");
+ session.close(false).awaitUninterruptibly(10000);
+ } else {
+ session.updateLastAccessTime();
+
+ session.write(LocalizedFtpReply.translate(session, null, context,
+ FtpReply.REPLY_220_SERVICE_READY, null, null));
+ }
}
public void sessionClosed(final FtpIoSession session) throws Exception {
+ LOG.debug("Closing session");
try {
context.getFtpletContainer().onDisconnect(
session.getFtpletSession());
@@ -85,6 +100,17 @@ public void sessionClosed(final FtpIoSession session) throws Exception {
// swallow the exception, we're closing down the session anyways
LOG.warn("Ftplet threw an exception on disconnect", e);
}
+
+ // make sure we close the data connection if it happens to be open
+ try {
+ ServerDataConnectionFactory dc = session.getDataConnection();
+ if(dc != null) {
+ dc.closeDataConnection();
+ }
+ } catch (Exception e) {
+ // swallow the exception, we're closing down the session anyways
+ LOG.warn("Data connection threw an exception on disconnect", e);
+ }
FileSystemView fs = session.getFileSystemView();
if(fs != null) {
@@ -101,7 +127,11 @@ public void sessionClosed(final FtpIoSession session) throws Exception {
if (stats != null) {
stats.setLogout(session);
stats.setCloseConnection(session);
+ LOG.debug("Statistics login and connection count decreased due to session close");
+ } else {
+ LOG.warn("Statistics not available in session, can not decrease login and connection count");
}
+ LOG.debug("Session closed");
}
public void exceptionCaught(final FtpIoSession session,
@@ -160,6 +190,7 @@ public void messageReceived(final FtpIoSession session,
ftpletRet = FtpletResult.DISCONNECT;
}
if (ftpletRet == FtpletResult.DISCONNECT) {
+ LOG.debug("Ftplet returned DISCONNECT, session will be closed");
session.close(false).awaitUninterruptibly(10000);
return;
} else if (ftpletRet != FtpletResult.SKIP) {
@@ -184,6 +215,8 @@ public void messageReceived(final FtpIoSession session,
ftpletRet = FtpletResult.DISCONNECT;
}
if (ftpletRet == FtpletResult.DISCONNECT) {
+ LOG.debug("Ftplet returned DISCONNECT, session will be closed");
+
session.close(false).awaitUninterruptibly(10000);
return;
}
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
index 20325572..3443aa9c 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
@@ -87,6 +87,7 @@ public IODataConnectionFactory(final FtpServerContext serverContext,
/**
* Close data socket.
+ * This method must be idempotent as we might call it multiple times during disconnect.
*/
public synchronized void closeDataConnection() {
@@ -108,9 +109,7 @@ public synchronized void closeDataConnection() {
LOG.warn("FtpDataConnection.closeDataSocket()", ex);
}
- FtpServerContext ctx = serverContext;
-
- if (ctx != null) {
+ if (session != null) {
DataConnectionConfiguration dcc = session.getListener()
.getDataConnectionConfiguration();
if (dcc != null) {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
new file mode 100644
index 00000000..fa30a6b4
--- /dev/null
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ftpletcontainer;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.net.SocketException;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.clienttests.ClientTestTemplate;
+import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
+import org.apache.ftpserver.ftplet.FtpSession;
+import org.apache.ftpserver.ftplet.Ftplet;
+import org.apache.ftpserver.ftplet.FtpletResult;
+import org.apache.ftpserver.impl.DefaultFtpServer;
+import org.apache.ftpserver.test.TestUtil;
+
+/**
+*
+* @author The Apache MINA Project (dev@mina.apache.org)
+* @version $Rev$, $Date$
+*
+*/
+public class FtpLetOnConnectTest extends ClientTestTemplate {
+ private static final byte[] TESTDATA = "TESTDATA".getBytes();
+
+ private static final byte[] DOUBLE_TESTDATA = "TESTDATATESTDATA".getBytes();
+
+ private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
+
+ private static final File TEST_FILE2 = new File(ROOT_DIR, "test2.txt");
+
+ private static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
+
+ protected FtpletResult mockReturnValue = FtpletResult.DISCONNECT;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.ftpserver.clienttests.ClientTestTemplate#setUp()
+ */
+ protected void setUp() throws Exception {
+ MockFtplet.callback = new MockFtpletCallback();
+
+ initDirs();
+
+ initServer();
+ }
+
+ protected FtpServerFactory createServer() throws Exception {
+ FtpServerFactory server = super.createServer();
+
+ Map ftplets = new LinkedHashMap();
+ ftplets.put("f1", new MockFtplet());
+ server.setFtplets(ftplets);
+
+ return server;
+ }
+
+ public void testDisconnectOnConnect() throws Exception {
+ MockFtplet.callback = new MockFtpletCallback() {
+ public FtpletResult onConnect(FtpSession session)
+ throws FtpException, IOException {
+ return mockReturnValue;
+ }
+ };
+
+ try {
+ connectClient();
+ fail("Must throw FTPConnectionClosedException");
+ } catch (FTPConnectionClosedException e) {
+ // OK
+ } catch (SocketException e) {
+ // OK
+ }
+ }
+
+ public void testExceptionOnConnect() throws Exception {
+ MockFtplet.callback = new MockFtpletCallback() {
+ public FtpletResult onConnect(FtpSession session)
+ throws FtpException, IOException {
+ throw new FtpException();
+ }
+ };
+
+ try {
+ connectClient();
+ fail("Must throw FTPConnectionClosedException");
+ } catch (FTPConnectionClosedException e) {
+ // OK
+ } catch (SocketException e) {
+ // OK
+ }
+ }
+
+ protected void doConnect() throws Exception {
+ client.connect("localhost", getListenerPort());
+ }
+}
From 9b036613b2587fa288e8fb1921c02d37f3c9cae4 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 13 May 2009 20:21:10 +0000
Subject: [PATCH 014/101] Updating README.txt with 1.0.1 release
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@774512 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/README.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/distribution/README.txt b/distribution/README.txt
index 6ef43daa..f4088f5f 100644
--- a/distribution/README.txt
+++ b/distribution/README.txt
@@ -13,6 +13,10 @@ you write Java code to process FTP event notifications that we call the Ftplet
API. Apache FtpServer provides an implementation of FTP server to support
this API.
+1.0.1
+--------------------------------
+Bug fix release that fixes the important issues found since the 1.0.0 release.
+
1.0.0
--------------------------------
This is the first major release of FtpServer and we now recommend this version
From ccf44ac6f7b5b107ffca22a5c32929eb9c6cc636 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 13 May 2009 20:23:34 +0000
Subject: [PATCH 015/101] Increasing version for new development in 1.0.x
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@774514 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 6e331e01..bd158c92 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
ftpserver-parentpomApache FtpServer Parent
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOThttp://mina.apache.org/ftpserverJira
From 6ab7cd33c0f132e1334558f7650413e0c6595f21 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 13 May 2009 20:28:26 +0000
Subject: [PATCH 016/101] Increasing version for new development in 1.0.x
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@774516 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 4 ++--
distribution/pom.xml | 4 ++--
examples/ftpserver-example-spring-war/pom.xml | 4 ++--
examples/ftpserver-osgi-ftplet-service/pom.xml | 4 ++--
examples/ftpserver-osgi-spring-service/pom.xml | 4 ++--
examples/pom.xml | 4 ++--
ftplet-api/pom.xml | 4 ++--
7 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index 80d0d335..aafb706e 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -17,13 +17,13 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT4.0.0org.apache.ftpserverftpserver-coreApache FtpServer Core
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOTbundle
diff --git a/distribution/pom.xml b/distribution/pom.xml
index d5367a84..0e581a36 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -22,14 +22,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT4.0.0org.apache.ftpserverftpserverpomApache FtpServer
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOTscm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/distributionscm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution
diff --git a/examples/ftpserver-example-spring-war/pom.xml b/examples/ftpserver-example-spring-war/pom.xml
index 49cd2aed..7f70937a 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -18,7 +18,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT../../pom.xml
@@ -27,7 +27,7 @@
ftpserver-spring-warFtpServer Spring web project examplewar
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOTorg.springframework
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index 9c65d2e1..4d6565e7 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-ftplet-serviceFtpServer OSGi Ftplet service examplebundle
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index a9f4b2f0..ae633531 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-spring-serviceFtpServer OSGi Spring-DM examplebundle
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/pom.xml b/examples/pom.xml
index 0916696e..9be5e382 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,14 +21,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT4.0.0org.apache.ftpserverr
ftpserver-examplespomApache FtpServer Examples
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOTftpserver-example-spring-warftpserver-osgi-ftplet-service
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index 41c4d4c1..b46f6233 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -17,12 +17,12 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT4.0.0org.apache.ftpserverftplet-api
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOTbundleApache Ftplet API Ftplets are, similar to servlets, an API to plug into the
From 35a67b0e28485cbd19c3a34014307c6961d5938c Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 13 May 2009 21:59:23 +0000
Subject: [PATCH 017/101] Removing Rev and Date tags
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@774554 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/ConnectionConfig.java | 4 +---
.../java/org/apache/ftpserver/ConnectionConfigFactory.java | 4 +---
.../org/apache/ftpserver/DataConnectionConfiguration.java | 4 +---
.../ftpserver/DataConnectionConfigurationFactory.java | 4 +---
.../java/org/apache/ftpserver/DataConnectionException.java | 4 +---
core/src/main/java/org/apache/ftpserver/FtpServer.java | 4 +---
.../apache/ftpserver/FtpServerConfigurationException.java | 4 +---
.../main/java/org/apache/ftpserver/FtpServerFactory.java | 4 +---
.../java/org/apache/ftpserver/command/AbstractCommand.java | 4 +---
.../src/main/java/org/apache/ftpserver/command/Command.java | 4 +---
.../java/org/apache/ftpserver/command/CommandFactory.java | 4 +---
.../org/apache/ftpserver/command/CommandFactoryFactory.java | 4 +---
.../org/apache/ftpserver/command/NotSupportedCommand.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/ABOR.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/ACCT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/APPE.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/AUTH.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/CDUP.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/CWD.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/DELE.java | 4 +---
.../ftpserver/command/impl/DefaultCommandFactory.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/EPRT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/EPSV.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/FEAT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/HELP.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/LANG.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/LIST.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/MD5.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/MDTM.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/MFMT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/MKD.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/MLSD.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/MLST.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/MODE.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/NLST.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/NOOP.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/OPTS.java | 4 +---
.../java/org/apache/ftpserver/command/impl/OPTS_MLST.java | 4 +---
.../java/org/apache/ftpserver/command/impl/OPTS_UTF8.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/PASS.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/PASV.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/PBSZ.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/PORT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/PROT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/PWD.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/QUIT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/REIN.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/REST.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/RETR.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/RMD.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/RNFR.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/RNTO.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/SITE.java | 4 +---
.../org/apache/ftpserver/command/impl/SITE_DESCUSER.java | 4 +---
.../java/org/apache/ftpserver/command/impl/SITE_HELP.java | 4 +---
.../java/org/apache/ftpserver/command/impl/SITE_STAT.java | 4 +---
.../java/org/apache/ftpserver/command/impl/SITE_WHO.java | 4 +---
.../java/org/apache/ftpserver/command/impl/SITE_ZONE.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/SIZE.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/STAT.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/STOR.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/STOU.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/STRU.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/SYST.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/TYPE.java | 4 +---
.../main/java/org/apache/ftpserver/command/impl/USER.java | 4 +---
.../ftpserver/command/impl/listing/DirectoryLister.java | 4 +---
.../apache/ftpserver/command/impl/listing/FileFilter.java | 4 +---
.../apache/ftpserver/command/impl/listing/FileFormater.java | 4 +---
.../ftpserver/command/impl/listing/LISTFileFormater.java | 4 +---
.../apache/ftpserver/command/impl/listing/ListArgument.java | 4 +---
.../ftpserver/command/impl/listing/ListArgumentParser.java | 4 +---
.../ftpserver/command/impl/listing/MLSTFileFormater.java | 4 +---
.../ftpserver/command/impl/listing/NLSTFileFormater.java | 4 +---
.../ftpserver/command/impl/listing/RegexFileFilter.java | 4 +---
.../ftpserver/command/impl/listing/VisibleFileFilter.java | 4 +---
.../config/spring/CommandFactoryBeanDefinitionParser.java | 4 +---
.../config/spring/FileSystemBeanDefinitionParser.java | 4 +---
.../ftpserver/config/spring/FtpServerNamespaceHandler.java | 4 +---
.../config/spring/ListenerBeanDefinitionParser.java | 4 +---
.../ftpserver/config/spring/ServerBeanDefinitionParser.java | 4 +---
.../java/org/apache/ftpserver/config/spring/SpringUtil.java | 4 +---
.../config/spring/UserManagerBeanDefinitionParser.java | 4 +---
.../filesystem/nativefs/NativeFileSystemFactory.java | 4 +---
.../filesystem/nativefs/impl/NameEqualsFileFilter.java | 4 +---
.../filesystem/nativefs/impl/NativeFileSystemView.java | 4 +---
.../ftpserver/filesystem/nativefs/impl/NativeFtpFile.java | 4 +---
.../apache/ftpserver/ftpletcontainer/FtpletContainer.java | 4 +---
.../ftpletcontainer/impl/DefaultFtpletContainer.java | 4 +---
.../org/apache/ftpserver/impl/DefaultConnectionConfig.java | 4 +---
.../ftpserver/impl/DefaultDataConnectionConfiguration.java | 4 +---
.../java/org/apache/ftpserver/impl/DefaultFtpHandler.java | 4 +---
.../java/org/apache/ftpserver/impl/DefaultFtpRequest.java | 4 +---
.../java/org/apache/ftpserver/impl/DefaultFtpServer.java | 4 +---
.../org/apache/ftpserver/impl/DefaultFtpServerContext.java | 4 +---
.../java/org/apache/ftpserver/impl/DefaultFtpSession.java | 4 +---
.../org/apache/ftpserver/impl/DefaultFtpStatistics.java | 4 +---
.../main/java/org/apache/ftpserver/impl/FileObserver.java | 4 +---
.../src/main/java/org/apache/ftpserver/impl/FtpHandler.java | 4 +---
.../main/java/org/apache/ftpserver/impl/FtpIoSession.java | 4 +---
.../java/org/apache/ftpserver/impl/FtpServerContext.java | 4 +---
.../java/org/apache/ftpserver/impl/IODataConnection.java | 4 +---
.../org/apache/ftpserver/impl/IODataConnectionFactory.java | 4 +---
.../java/org/apache/ftpserver/impl/LocalizedFtpReply.java | 4 +---
.../main/java/org/apache/ftpserver/impl/PassivePorts.java | 4 +---
.../apache/ftpserver/impl/ServerDataConnectionFactory.java | 4 +---
.../java/org/apache/ftpserver/impl/ServerFtpStatistics.java | 4 +---
.../java/org/apache/ftpserver/impl/StatisticsObserver.java | 4 +---
.../main/java/org/apache/ftpserver/listener/Listener.java | 4 +---
.../java/org/apache/ftpserver/listener/ListenerFactory.java | 4 +---
.../org/apache/ftpserver/listener/nio/AbstractListener.java | 4 +---
.../apache/ftpserver/listener/nio/FtpHandlerAdapter.java | 4 +---
.../org/apache/ftpserver/listener/nio/FtpLoggingFilter.java | 4 +---
.../apache/ftpserver/listener/nio/FtpResponseEncoder.java | 4 +---
.../listener/nio/FtpServerProtocolCodecFactory.java | 4 +---
.../java/org/apache/ftpserver/listener/nio/NioListener.java | 4 +---
core/src/main/java/org/apache/ftpserver/main/AddUser.java | 4 +---
.../main/java/org/apache/ftpserver/main/CommandLine.java | 4 +---
core/src/main/java/org/apache/ftpserver/main/Daemon.java | 4 +---
.../java/org/apache/ftpserver/message/MessageResource.java | 4 +---
.../apache/ftpserver/message/MessageResourceFactory.java | 4 +---
.../ftpserver/message/impl/DefaultMessageResource.java | 4 +---
core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java | 4 +---
.../java/org/apache/ftpserver/ssl/SslConfiguration.java | 4 +---
.../org/apache/ftpserver/ssl/SslConfigurationFactory.java | 4 +---
.../java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java | 4 +---
.../apache/ftpserver/ssl/impl/DefaultSslConfiguration.java | 4 +---
.../apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java | 4 +---
.../ftpserver/usermanager/AnonymousAuthentication.java | 4 +---
.../ftpserver/usermanager/ClearTextPasswordEncryptor.java | 4 +---
.../apache/ftpserver/usermanager/DbUserManagerFactory.java | 4 +---
.../apache/ftpserver/usermanager/Md5PasswordEncryptor.java | 4 +---
.../org/apache/ftpserver/usermanager/PasswordEncryptor.java | 4 +---
.../ftpserver/usermanager/PropertiesUserManagerFactory.java | 4 +---
.../ftpserver/usermanager/SaltedPasswordEncryptor.java | 4 +---
.../apache/ftpserver/usermanager/UserManagerFactory.java | 4 +---
.../usermanager/UsernamePasswordAuthentication.java | 4 +---
.../ftpserver/usermanager/impl/AbstractUserManager.java | 4 +---
.../org/apache/ftpserver/usermanager/impl/BaseUser.java | 4 +---
.../usermanager/impl/ConcurrentLoginPermission.java | 4 +---
.../ftpserver/usermanager/impl/ConcurrentLoginRequest.java | 4 +---
.../apache/ftpserver/usermanager/impl/DbUserManager.java | 4 +---
.../ftpserver/usermanager/impl/PropertiesUserManager.java | 4 +---
.../ftpserver/usermanager/impl/TransferRatePermission.java | 4 +---
.../ftpserver/usermanager/impl/TransferRateRequest.java | 4 +---
.../org/apache/ftpserver/usermanager/impl/UserMetadata.java | 4 +---
.../apache/ftpserver/usermanager/impl/WritePermission.java | 4 +---
.../org/apache/ftpserver/usermanager/impl/WriteRequest.java | 4 +---
.../main/java/org/apache/ftpserver/util/BaseProperties.java | 4 +---
.../src/main/java/org/apache/ftpserver/util/ClassUtils.java | 4 +---
core/src/main/java/org/apache/ftpserver/util/DateUtils.java | 4 +---
.../main/java/org/apache/ftpserver/util/EncryptUtils.java | 4 +---
.../java/org/apache/ftpserver/util/FileRegularFilter.java | 4 +---
.../apache/ftpserver/util/IllegalInetAddressException.java | 4 +---
.../org/apache/ftpserver/util/IllegalPortException.java | 4 +---
core/src/main/java/org/apache/ftpserver/util/IoUtils.java | 4 +---
core/src/main/java/org/apache/ftpserver/util/OS.java | 4 +---
.../main/java/org/apache/ftpserver/util/RegularExpr.java | 4 +---
.../org/apache/ftpserver/util/SocketAddressEncoder.java | 4 +---
.../main/java/org/apache/ftpserver/util/StringUtils.java | 4 +---
.../apache/ftpserver/clienttests/ActiveModeReplyTest.java | 1 -
.../ftpserver/clienttests/BindExceptionParallelTest.java | 4 +---
.../ftpserver/clienttests/BindExceptionSerialTest.java | 4 +---
.../apache/ftpserver/clienttests/CdCaseInsensitiveTest.java | 4 +---
.../test/java/org/apache/ftpserver/clienttests/CdTest.java | 4 +---
.../apache/ftpserver/clienttests/ClientTestTemplate.java | 4 +---
.../apache/ftpserver/clienttests/ConcatedCommandsTest.java | 4 +---
.../apache/ftpserver/clienttests/ConnectPickPortTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/ConnectTest.java | 4 +---
.../apache/ftpserver/clienttests/CustomMaxLoginTest.java | 4 +---
.../ftpserver/clienttests/DataTransferTimeoutTest.java | 4 +---
.../apache/ftpserver/clienttests/DefaultMaxLoginTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/DeleteTest.java | 4 +---
.../org/apache/ftpserver/clienttests/DirectoryTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/FeatTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/FtpMd5Test.java | 4 +---
.../java/org/apache/ftpserver/clienttests/HelpTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/I18NTest.java | 4 +---
.../ftpserver/clienttests/InetAddressBlacklistTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/LangTest.java | 4 +---
.../org/apache/ftpserver/clienttests/ListPassiveTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/ListTest.java | 4 +---
.../org/apache/ftpserver/clienttests/LoginNoAnonTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/LoginTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/MDTMTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/MFMTTest.java | 4 +---
.../org/apache/ftpserver/clienttests/PasvAddressTest.java | 4 +---
.../ftpserver/clienttests/PasvAddressWithHostnameTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/PasvTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/RenameTest.java | 4 +---
.../apache/ftpserver/clienttests/RetrievePassiveTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/RetrieveTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/RmDirTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/SiteTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/SizeTest.java | 4 +---
.../org/apache/ftpserver/clienttests/StorePassiveTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/StoreTest.java | 4 +---
.../apache/ftpserver/clienttests/SubnetBlacklistTest.java | 4 +---
.../org/apache/ftpserver/clienttests/SuspendResumeTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/SystTest.java | 4 +---
.../java/org/apache/ftpserver/clienttests/TypeTest.java | 4 +---
.../apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java | 4 +---
.../ftpserver/commands/impl/DefaultCommandFactoryTest.java | 4 +---
.../commands/impl/listing/DirectoryListerTest.java | 1 -
.../commands/impl/listing/LISTFileFormaterTest.java | 4 +---
.../commands/impl/listing/ListArgumentParserTest.java | 4 +---
.../ftpserver/commands/impl/listing/ListArgumentTest.java | 4 +---
.../commands/impl/listing/MLSTFileFormaterTest.java | 4 +---
.../commands/impl/listing/NLSTFileFormaterTest.java | 4 +---
.../ftpserver/config/spring/DbUserManagerConfigTest.java | 4 +---
.../ftpserver/config/spring/FileUserManagerConfigTest.java | 4 +---
.../apache/ftpserver/config/spring/FtpletsConfigTest.java | 4 +---
.../apache/ftpserver/config/spring/MyCustomListener.java | 4 +---
.../ftpserver/config/spring/PropertyPlaceholderTest.java | 4 +---
.../apache/ftpserver/config/spring/SpringConfigTest.java | 4 +---
.../ftpserver/config/spring/SpringConfigTestTemplate.java | 4 +---
.../java/org/apache/ftpserver/config/spring/TestFtplet.java | 4 +---
.../filesystem/nativefs/impl/FileSystemViewTemplate.java | 4 +---
.../filesystem/nativefs/impl/FtpFileTestTemplate.java | 4 +---
.../filesystem/nativefs/impl/NativeFileObjectTest.java | 4 +---
.../filesystem/nativefs/impl/NativeFileSystemViewTest.java | 4 +---
.../ftpletcontainer/DefaultFtpLetContainerTest.java | 4 +---
.../ftpserver/ftpletcontainer/FtpLetOnConnectTest.java | 4 +---
.../ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java | 4 +---
.../ftpletcontainer/FtpLetReturnDisconnectTest.java | 4 +---
.../ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java | 4 +---
.../ftpletcontainer/FtpLetThrowFtpExceptionTest.java | 4 +---
.../ftpletcontainer/FtpLetThrowIOExceptionTest.java | 4 +---
.../ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java | 4 +---
.../org/apache/ftpserver/ftpletcontainer/MockFtplet.java | 4 +---
.../ftpserver/ftpletcontainer/MockFtpletCallback.java | 4 +---
.../java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java | 4 +---
.../org/apache/ftpserver/impl/DefaultFtpServerTest.java | 4 +---
.../java/org/apache/ftpserver/impl/FtpRequestImplTest.java | 4 +---
.../org/apache/ftpserver/impl/FtpStatisticsImplTest.java | 4 +---
.../java/org/apache/ftpserver/impl/PassivePortsTest.java | 4 +---
.../ftpserver/impl/ServerFtpStatisticsTestTemplate.java | 4 +---
.../apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java | 4 +---
.../apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java | 4 +---
.../java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java | 6 ------
.../java/org/apache/ftpserver/ssl/MinaClientAuthTest.java | 4 +---
.../java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java | 4 +---
.../java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java | 4 +---
.../apache/ftpserver/ssl/MinaImplicitClientAuthTest.java | 4 +---
.../apache/ftpserver/ssl/MinaImplicitDataChannelTest.java | 4 +---
.../java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java | 4 +---
.../java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java | 4 +---
.../test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java | 4 +---
.../org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java | 4 +---
.../ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java | 4 +---
core/src/test/java/org/apache/ftpserver/test/TestUtil.java | 4 +---
.../usermanager/UsernamePasswordAuthenticationTest.java | 4 +---
.../org/apache/ftpserver/usermanager/impl/BaseUserTest.java | 4 +---
.../usermanager/impl/ClearTextDbUserManagerTest.java | 4 +---
.../usermanager/impl/ClearTextPasswordEncryptorTest.java | 4 +---
.../usermanager/impl/ConcurrentLoginPermissionTest.java | 4 +---
.../ftpserver/usermanager/impl/DbUserManagerTest.java | 4 +---
.../usermanager/impl/Md5PasswordEncryptorTest.java | 4 +---
.../usermanager/impl/PropertiesUserManagerTest.java | 4 +---
.../usermanager/impl/SaltedPasswordEncryptorTest.java | 4 +---
.../ftpserver/usermanager/impl/UserManagerTestTemplate.java | 4 +---
.../usermanager/impl/VolatilePropertiesUserManagerTest.java | 4 +---
.../ftpserver/usermanager/impl/WritePermissionTest.java | 4 +---
.../java/org/apache/ftpserver/util/BasePropertiesTest.java | 4 +---
.../java/org/apache/ftpserver/util/EncryptUtilsTest.java | 4 +---
.../java/org/apache/ftpserver/util/RegularExprTest.java | 4 +---
.../org/apache/ftpserver/util/SocketAddressEncoderTest.java | 4 +---
.../java/org/apache/ftpserver/ftplet/Authentication.java | 4 +---
.../ftpserver/ftplet/AuthenticationFailedException.java | 4 +---
.../main/java/org/apache/ftpserver/ftplet/Authority.java | 4 +---
.../org/apache/ftpserver/ftplet/AuthorizationRequest.java | 4 +---
.../java/org/apache/ftpserver/ftplet/DataConnection.java | 4 +---
.../org/apache/ftpserver/ftplet/DataConnectionFactory.java | 4 +---
.../src/main/java/org/apache/ftpserver/ftplet/DataType.java | 4 +---
.../java/org/apache/ftpserver/ftplet/DefaultFtpReply.java | 4 +---
.../java/org/apache/ftpserver/ftplet/DefaultFtplet.java | 4 +---
.../java/org/apache/ftpserver/ftplet/FileSystemFactory.java | 4 +---
.../java/org/apache/ftpserver/ftplet/FileSystemView.java | 4 +---
.../main/java/org/apache/ftpserver/ftplet/FtpException.java | 4 +---
.../src/main/java/org/apache/ftpserver/ftplet/FtpFile.java | 4 +---
.../src/main/java/org/apache/ftpserver/ftplet/FtpReply.java | 4 +---
.../main/java/org/apache/ftpserver/ftplet/FtpRequest.java | 4 +---
.../main/java/org/apache/ftpserver/ftplet/FtpSession.java | 4 +---
.../java/org/apache/ftpserver/ftplet/FtpStatistics.java | 4 +---
.../src/main/java/org/apache/ftpserver/ftplet/Ftplet.java | 4 +---
.../java/org/apache/ftpserver/ftplet/FtpletContext.java | 4 +---
.../main/java/org/apache/ftpserver/ftplet/FtpletResult.java | 4 +---
.../main/java/org/apache/ftpserver/ftplet/Structure.java | 4 +---
.../src/main/java/org/apache/ftpserver/ftplet/User.java | 4 +---
.../main/java/org/apache/ftpserver/ftplet/UserManager.java | 4 +---
.../test/java/org/apache/ftpserver/ftplet/DataTypeTest.java | 4 +---
.../java/org/apache/ftpserver/ftplet/ExampleFtplet.java | 4 +---
.../java/org/apache/ftpserver/ftplet/StructureTest.java | 4 +---
293 files changed, 290 insertions(+), 878 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java b/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java
index cd0d7bb5..a8c125f5 100644
--- a/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java
+++ b/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java
@@ -23,9 +23,7 @@
* Interface for providing the configuration for the control socket connections.
*
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public interface ConnectionConfig {
diff --git a/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java b/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java
index 84e71117..deeb235e 100644
--- a/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java
@@ -24,9 +24,7 @@
/**
* Factory for creating connection configurations
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class ConnectionConfigFactory {
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java b/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java
index b67fcfc8..d6689bc2 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java
@@ -26,9 +26,7 @@
/**
* Data connection configuration interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface DataConnectionConfiguration {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
index 0147d418..22646ec6 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
@@ -31,9 +31,7 @@
/**
* Data connection factory
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 701863 $, $Date: 2008-10-05 21:25:50 +0200 (Sun, 05 Oct 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DataConnectionConfigurationFactory {
private Logger log = LoggerFactory.getLogger(DataConnectionConfigurationFactory.class);
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionException.java b/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
index 246375cc..6f492e14 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
@@ -24,9 +24,7 @@
/**
* Thrown if a data connection can not be established
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DataConnectionException extends FtpException {
private static final long serialVersionUID = -1328383839917648987L;
diff --git a/core/src/main/java/org/apache/ftpserver/FtpServer.java b/core/src/main/java/org/apache/ftpserver/FtpServer.java
index 08e6a2fb..062d711c 100644
--- a/core/src/main/java/org/apache/ftpserver/FtpServer.java
+++ b/core/src/main/java/org/apache/ftpserver/FtpServer.java
@@ -27,9 +27,7 @@
* thread. Server implementation is used to create the server
* socket and handle client connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 701885 $, $Date: 2008-10-05 22:51:37 +0200 (Sun, 05 Oct 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpServer {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java b/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java
index 232a6571..6b154a61 100644
--- a/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java
+++ b/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java
@@ -23,9 +23,7 @@
* Exception used during startup to indicate that the configuration is not
* correct.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FtpServerConfigurationException extends RuntimeException {
private static final long serialVersionUID = -1328432839915898987L;
diff --git a/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java b/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
index 30c1a444..4cccb51c 100644
--- a/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
@@ -36,9 +36,7 @@
* This is the starting point of all the servers. Creates server instances based on
* the provided configuration.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 701885 $, $Date: 2008-10-05 22:51:37 +0200 (Sun, 05 Oct 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FtpServerFactory {
private DefaultFtpServerContext serverContext;
diff --git a/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java b/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java
index ef5b9993..0c05bbb0 100644
--- a/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java
+++ b/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java
@@ -23,9 +23,7 @@
/**
* Common base class recommended for {@link Command} implementations
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public abstract class AbstractCommand implements Command {
}
diff --git a/core/src/main/java/org/apache/ftpserver/command/Command.java b/core/src/main/java/org/apache/ftpserver/command/Command.java
index ca520767..05e5d390 100644
--- a/core/src/main/java/org/apache/ftpserver/command/Command.java
+++ b/core/src/main/java/org/apache/ftpserver/command/Command.java
@@ -29,9 +29,7 @@
/**
* This interface encapsulates all the FTP commands.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface Command {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java b/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java
index 713475d6..2c381db3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java
@@ -22,9 +22,7 @@
/**
* Command factory interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface CommandFactory {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java b/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
index 14e366a6..5f4e5afa 100644
--- a/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
@@ -73,9 +73,7 @@
/**
* Factory for {@link CommandFactory} instances
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class CommandFactoryFactory {
private static final HashMap DEFAULT_COMMAND_MAP = new HashMap();
diff --git a/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java b/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java
index 3e501b39..2ef4f3ca 100644
--- a/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java
+++ b/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java
@@ -31,9 +31,7 @@
* A command used primarily for overriding already installed commands when one
* wants to disable the command.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NotSupportedCommand extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java b/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java
index 36d4dbb1..400ef866 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java
@@ -40,9 +40,7 @@
* Current implementation does not do anything. As here data transfers are not
* multi-threaded.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ABOR extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java b/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java
index fd230c09..e701a8fa 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java
@@ -36,9 +36,7 @@
* Acknowledges the ACCT (account) command with a 202 reply. The command however
* is irrelevant to any workings.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ACCT extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java b/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
index d2e8a26e..c7fb4bc1 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
@@ -52,9 +52,7 @@
* be appended to that file; otherwise the file specified in the pathname shall
* be created at the server site.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class APPE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(APPE.class);
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 df1f8b4c..8358ba1d 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
@@ -40,9 +40,7 @@
*
* This server supports explicit SSL support.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class AUTH extends AbstractCommand {
private static final String SSL_SESSION_FILTER_NAME = "sslSessionFilter";
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java b/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java
index 541643e2..8b8854e8 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java
@@ -42,9 +42,7 @@
* systems having different syntaxes for naming the parent directory. The reply
* codes shall be identical to the reply codes of CWD.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class CDUP extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(CDUP.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java b/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java
index 237e3421..c1d3faab 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java
@@ -42,9 +42,7 @@
* Transfer parameters are similarly unchanged. The argument is a pathname
* specifying a directory.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class CWD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(CWD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java b/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
index 550504d7..fbe85de3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
@@ -41,9 +41,7 @@
* This command causes the file specified in the pathname to be deleted at the
* server site.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DELE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(DELE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java b/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
index b6ec7288..9597c1b0 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
@@ -34,9 +34,7 @@
*
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultCommandFactory implements CommandFactory {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java b/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
index 5fb10e69..41ae58a5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
@@ -43,9 +43,7 @@
*
* EPRT
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class EPRT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(EPRT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java b/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java
index 4f9ec1af..9c8c1483 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java
@@ -44,9 +44,7 @@
* response code for entering passive mode using an extended address MUST be
* 229.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class EPSV extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java
index f2f5bb5f..474baad9 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java
@@ -37,9 +37,7 @@
* a server supports the FEAT command then it MUST advertise supported AUTH,
* PBSZ and PROT commands in the reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FEAT extends AbstractCommand {
public void execute(final FtpIoSession session,
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java b/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java
index fcee7369..7adab29f 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java
@@ -39,9 +39,7 @@
* may take an argument (e.g., any command name) and return more specific
* information as a response.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class HELP extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java b/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java
index 78214c1a..0ed01461 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java
@@ -38,9 +38,7 @@
* process to determine in which language to present server greetings and the
* textual part of command responses.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class LANG extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java b/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
index f0a26c1b..b7be6b09 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
@@ -54,9 +54,7 @@
* A null argument implies the user's current working or default directory. The
* data transfer is over the data connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class LIST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(LIST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
index 10a46dbd..b5e9fe1b 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
@@ -45,9 +45,7 @@
* Returns the MD5 value for a file or multiple files according to
* draft-twine-ftpmd5-00.txt.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MD5 extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MD5.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java b/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java
index c9e7861c..f1b82f94 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java
@@ -40,9 +40,7 @@
*
* Returns the date and time of when a file was modified.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MDTM extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MDTM.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java b/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java
index 9ff73be3..03da4d24 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java
@@ -40,9 +40,7 @@
* Specified in the following document:
* http://www.omz13.com/downloads/draft-somers-ftp-mfxx-00.html#anchor8
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MFMT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MFMT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java b/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
index e80862eb..2f8c78b8 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
@@ -43,9 +43,7 @@
* a directory (if the pathname is absolute) or as a subdirectory of the current
* working directory (if the pathname is relative).
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MKD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MKD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java b/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
index a1cfba9f..0ea31272 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
@@ -52,9 +52,7 @@
* files in the specified directory. A null argument implies the user's current
* working or default directory. The data transfer is over the data connection
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MLSD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MLSD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java
index 9ff5e57b..ddb10693 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java
@@ -43,9 +43,7 @@
*
* Returns info on the file over the control connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MLST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MLST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java b/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java
index 95637fae..698b6001 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java
@@ -36,9 +36,7 @@
* The argument is a single Telnet character code specifying the data transfer
* modes described in the Section on Transmission Modes.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MODE extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
index 4cbfcb0b..e6ea06e3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
@@ -53,9 +53,7 @@
* descriptor; a null argument implies the current directory. The server will
* return a stream of names of files and no other information.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NLST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(NLST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java b/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java
index 2de01048..3e697a56 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java
@@ -37,9 +37,7 @@
* This command does not affect any parameters or previously entered commands.
* It specifies no action other than that the server send an OK reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NOOP extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java
index 90ff2e3d..a310924d 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java
@@ -41,9 +41,7 @@
* This command shall cause the server use optional features for the command
* specified.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class OPTS extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(OPTS.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
index ea17d84d..dc994542 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
@@ -36,9 +36,7 @@
* Client-Server listing negotation. Instruct the server what listing types to
* include in machine directory/file listings.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class OPTS_MLST extends AbstractCommand {
private final static String[] AVAILABLE_TYPES = { "Size", "Modify", "Type",
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java
index 7dac1c8d..e031b4c6 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java
@@ -36,9 +36,7 @@
* UTF-8 and back. Note that the servers default encoding is UTF-8. So this
* command has no effect.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class OPTS_UTF8 extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java b/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
index ae08f209..0d204ff2 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
@@ -50,9 +50,7 @@
* The argument field is a Telnet string specifying the user's password. This
* command must be immediately preceded by the user name command.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PASS extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(PASS.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java b/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java
index 200bc652..9aa4b502 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java
@@ -47,9 +47,7 @@
* upon receipt of a transfer command. The response to this command includes the
* host and port address this server is listening on.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PASV extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(PASV.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java b/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java
index 6cb348b1..945aefb6 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java
@@ -34,9 +34,7 @@
*
* Protection buffer size.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PBSZ extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java b/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
index 1448a9c6..de8f51dd 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
@@ -55,9 +55,7 @@
*
* where h1 is the high order 8 bits of the internet host address.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PORT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(PORT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java b/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
index 7d50133c..addecc16 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
@@ -37,9 +37,7 @@
*
* Data channel protection level.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PROT extends AbstractCommand {
private SslConfiguration getSslConfiguration(final FtpIoSession session) {
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java b/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java
index 8c0148f8..761c198c 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java
@@ -38,9 +38,7 @@
* This command causes the name of the current working directory to be returned
* in the reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PWD extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java b/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
index 97302430..45093f03 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
@@ -38,9 +38,7 @@
* This command terminates a USER and if file transfer is not in progress, the
* server closes the control connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class QUIT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(QUIT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java b/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java
index 88182fc6..3c1c25d2 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java
@@ -36,9 +36,7 @@
* This command flushes a USER, without affecting transfers in progress. The
* server state should otherwise be as when the user first connects.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class REIN extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/REST.java b/core/src/main/java/org/apache/ftpserver/command/impl/REST.java
index 70e7848b..5eadb7ff 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/REST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/REST.java
@@ -41,9 +41,7 @@
* followed by the appropriate FTP service command which shall cause file
* transfer to resume.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class REST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(REST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java b/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
index cbcdde04..b13cb287 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
@@ -53,9 +53,7 @@
* connection. The status and contents of the file at the server site shall be
* unaffected.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class RETR extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RETR.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java b/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java
index 32668c66..1eefb2ed 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java
@@ -42,9 +42,7 @@
* a directory (if the pathname is absolute) or as a subdirectory of the current
* working directory (if the pathname is relative).
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class RMD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RMD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java b/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java
index a4b590ed..00d43567 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java
@@ -41,9 +41,7 @@
* This command must be immediately followed by a "rename to" command specifying
* the new file pathname.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class RNFR extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RNFR.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java b/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java
index 7b519673..14cd0b35 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java
@@ -41,9 +41,7 @@
* immediately preceding "rename from" command. Together the two commands cause
* a file to be renamed.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class RNTO extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RNTO.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
index 4c79a8d0..ddd43dc5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
@@ -38,9 +38,7 @@
*
* Handle SITE command.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SITE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(SITE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
index 7bef7151..e811b5c3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
@@ -41,9 +41,7 @@
*
* This SITE command returns the specified user information.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SITE_DESCUSER extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(SITE_DESCUSER.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java
index 5f572d59..5f25b55e 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java
@@ -34,9 +34,7 @@
*
* Show SITE help message.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SITE_HELP extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
index 2db027db..0b8cb248 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
@@ -38,9 +38,7 @@
*
* Show all statistics information.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SITE_STAT extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
index 1f6769f1..2446cd48 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
@@ -43,9 +43,7 @@
*
* Sends the list of all the connected users.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SITE_WHO extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java
index 62235ce6..c4380f87 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java
@@ -36,9 +36,7 @@
*
* Displays the FTP server timezone in RFC 822 format.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SITE_ZONE extends AbstractCommand {
private final static SimpleDateFormat TIMEZONE_FMT = new SimpleDateFormat(
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java b/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java
index 9c18f784..1c659edc 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java
@@ -39,9 +39,7 @@
*
* Returns the size of the file in bytes.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SIZE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(SIZE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
index 5f4896bf..2bf7439f 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
@@ -36,9 +36,7 @@
* This command shall cause a status response to be sent over the control
* connection in the form of a reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class STAT extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java b/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
index 1cde2a90..4bffa56e 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
@@ -52,9 +52,7 @@
* shall be replaced by the data being transferred. A new file is created at the
* server site if the file specified in the pathname does not already exist.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class STOR extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(STOR.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java b/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
index 13569dda..2bfd70e1 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
@@ -52,9 +52,7 @@
* 150 Transfer Started response must include the name generated, See RFC1123
* section 4.1.2.9
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class STOU extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(STOU.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java b/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java
index b363fbcd..eee6a3b7 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java
@@ -38,9 +38,7 @@
*
* The argument is a single Telnet character code specifying file structure.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class STRU extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(STRU.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java b/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java
index b6209a94..e40b2d0a 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java
@@ -35,9 +35,7 @@
*
* This command is used to find out the type of operating system at the server.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SYST extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java b/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java
index bc394f85..9abfc34a 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java
@@ -38,9 +38,7 @@
*
* The argument specifies the representation type.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class TYPE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(TYPE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/USER.java b/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
index 75a74af0..d2f79bf7 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
@@ -47,9 +47,7 @@
* system. This command will normally be the first command transmitted by the
* user after the control connections are made.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class USER extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(USER.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
index 5efbbc9b..f3105abb 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
@@ -32,9 +32,7 @@
*
* This class prints file listing.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DirectoryLister {
private String traverseFiles(final List files,
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java
index 0054d9b6..bd6b446c 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java
@@ -27,9 +27,7 @@
*
* @see java.io.FileFilter
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FileFilter {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java
index 3b21a9a9..ad0c8d0f 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java
@@ -25,9 +25,7 @@
*
* Interface for formating output based on a {@link FtpFile}
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FileFormater {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
index 8d856edf..ac729890 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
@@ -28,9 +28,7 @@
*
* Formats files according to the LIST specification
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class LISTFileFormater implements FileFormater {
private final static char DELIM = ' ';
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
index d61adb8c..6f6db035 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
@@ -23,9 +23,7 @@
*
* Contains the parsed argument for a list command (e.g. LIST or NLST)
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ListArgument {
private String file;
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
index 4128135a..e2e14c7a 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
@@ -25,9 +25,7 @@
*
* Parses a list argument (e.g. for LIST or NLST) into a {@link ListArgument}
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ListArgumentParser {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
index 22561470..e480c3a8 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
@@ -26,9 +26,7 @@
*
* Formats files according to the MLST specification
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MLSTFileFormater implements FileFormater {
private static final String[] DEFAULT_TYPES = new String[] { "Size",
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
index a2147cbe..8526b002 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
@@ -25,9 +25,7 @@
*
* Formats files according to the NLST specification
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NLSTFileFormater implements FileFormater {
private final static char[] NEWLINE = { '\r', '\n' };
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
index c4791bca..04214458 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
@@ -26,9 +26,7 @@
*
* Selects files which short name matches a regular expression
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class RegexFileFilter implements FileFilter {
private RegularExpr regex;
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
index 14e1a2e6..61f2fda3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
@@ -25,9 +25,7 @@
*
* Selects files that are visible
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class VisibleFileFilter implements FileFilter {
private FileFilter wrappedFilter;
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java
index 17680822..f9b4d87e 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java
@@ -35,9 +35,7 @@
/**
* Parses the FtpServer "commands" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class CommandFactoryBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java
index 1f7c7119..ccfb42e3 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java
@@ -30,9 +30,7 @@
/**
* Parses the FtpServer "native-filesystem" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FileSystemBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java b/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java
index 721cc24a..b282cdae 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java
@@ -24,9 +24,7 @@
/**
* Registration point for FtpServer bean defintion parsers
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FtpServerNamespaceHandler extends NamespaceHandlerSupport {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
index a94e7a2c..3ab92341 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
@@ -43,9 +43,7 @@
/**
* Parses the FtpServer "nio-listener" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ListenerBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
index c890dddf..67443432 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
@@ -42,9 +42,7 @@
/**
* Parses the FtpServer "server" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ServerBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java b/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
index 404cd7dc..20ce9f8c 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
@@ -37,9 +37,7 @@
/**
* Various util methods for the Spring config parsing and configuration
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SpringUtil {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java
index 99dab8cd..b5160598 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java
@@ -36,9 +36,7 @@
* Parses the FtpServer "file-user-manager" or "db-user-manager" elements into a
* Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class UserManagerBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java
index ad7103c6..5c5f5c6c 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java
@@ -32,9 +32,7 @@
/**
* Native file system factory. It uses the OS file system.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NativeFileSystemFactory implements FileSystemFactory {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
index 7e4fdaa3..cd031889 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
@@ -27,9 +27,7 @@
*
* FileFilter used for simple file name matching
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NameEqualsFileFilter implements FileFilter {
private String nameToMatch;
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
index 92665281..d99d3c97 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
@@ -36,9 +36,7 @@
* File system view based on native file system. Here the root directory will be
* user virtual root (/).
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NativeFileSystemView implements FileSystemView {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index e2387332..dcfc2821 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -43,9 +43,7 @@
*
* This class wraps native file object.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NativeFtpFile implements FtpFile {
private final Logger LOG = LoggerFactory.getLogger(NativeFtpFile.class);
diff --git a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java
index 14c3b049..03360046 100644
--- a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java
+++ b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java
@@ -28,9 +28,7 @@
* {@link Ftplet} interface and forward any events to the Ftplets hosted by the
* container.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpletContainer extends Ftplet {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java
index 1dcc38dc..c25ccf53 100644
--- a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java
+++ b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java
@@ -42,9 +42,7 @@
*
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtpletContainer implements FtpletContainer {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
index f29e92c2..1f86c249 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
@@ -25,9 +25,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class DefaultConnectionConfig implements ConnectionConfig {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
index 628665dc..fa53c0d1 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
@@ -28,9 +28,7 @@
*
* Data connection configuration.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultDataConnectionConfiguration implements
DataConnectionConfiguration {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
index 07aa9207..628daa50 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
@@ -39,9 +39,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class DefaultFtpHandler implements FtpHandler {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
index 10fbafc9..fd10e10c 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
@@ -26,9 +26,7 @@
*
* FTP request object.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtpRequest implements FtpRequest {
private String line;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
index bf509c07..0f020782 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
@@ -43,9 +43,7 @@
* thread. Server implementation is used to create the server
* socket and handle client connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtpServer implements FtpServer {
private final Logger LOG = LoggerFactory.getLogger(DefaultFtpServer.class);
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
index 8417ea03..f2372ffe 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
@@ -54,9 +54,7 @@
*
* FTP server configuration implementation. It holds all the components used.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtpServerContext implements FtpServerContext {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
index 822486ec..99a63a2a 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
@@ -39,9 +39,7 @@
*
* FTP session
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtpSession implements FtpSession {
private FtpIoSession ioSession;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
index 4e41227c..69e81f35 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
@@ -38,9 +38,7 @@
* TODO revisit concurrency, right now we're a bit over zealous with both Atomic*
* counters and synchronization
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtpStatistics implements ServerFtpStatistics {
private StatisticsObserver observer = null;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java b/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java
index 178dcd44..624b0219 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java
@@ -26,9 +26,7 @@
*
* This is the file related activity observer.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FileObserver {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java b/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java
index ac1a731f..0200d815 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java
@@ -31,9 +31,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public interface FtpHandler {
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 abe0d7bc..639dadeb 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
@@ -55,9 +55,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class FtpIoSession implements IoSession {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java b/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java
index 8d0349f5..bfb25fde 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java
@@ -34,9 +34,7 @@
* This is basically org.apache.ftpserver.ftplet.FtpletContext with
* added connection manager, message resource functionalities.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpServerContext extends FtpletContext {
ConnectionConfig getConnectionConfig();
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
index d31cf549..6d40b653 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
@@ -44,9 +44,7 @@
* An active open data connection, used for transfering data over the data
* connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class IODataConnection implements DataConnection {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
index 3443aa9c..b54316dd 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
@@ -45,9 +45,7 @@
* We can get the FTP data connection using this class. It uses either PORT or
* PASV command.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class IODataConnectionFactory implements ServerDataConnectionFactory {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
index 3471c5b0..e969690e 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
@@ -35,9 +35,7 @@
*
* FTP reply translator.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class LocalizedFtpReply extends DefaultFtpReply {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index 4f0c7fb8..accc3de3 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -30,9 +30,7 @@
* Provides support for parsing a passive ports string as well as keeping track
* of reserved passive ports.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PassivePorts {
private static final int MAX_PORT = 65535;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
index 265a0f57..557bb0ac 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
@@ -28,9 +28,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public interface ServerDataConnectionFactory extends DataConnectionFactory {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java b/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java
index b4e10eb2..dd9a8bde 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java
@@ -28,9 +28,7 @@
* This is same as org.apache.ftpserver.ftplet.FtpStatistics with
* added observer and setting values functionalities.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface ServerFtpStatistics extends FtpStatistics {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java b/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java
index d8d43789..9fb21f29 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java
@@ -26,9 +26,7 @@
*
* FTP statistics observer interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface StatisticsObserver {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/listener/Listener.java b/core/src/main/java/org/apache/ftpserver/listener/Listener.java
index 5a3af405..8675b515 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/Listener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/Listener.java
@@ -33,9 +33,7 @@
* Interface for the component responsible for waiting for incoming socket
* requests and kicking off {@link FtpIoSession}s
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface Listener {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
index 5905036b..f3bcd849 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
@@ -34,9 +34,7 @@
* Factory for listeners. Listeners themselves are immutable and must be
* created using this factory.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ListenerFactory {
private String serverAddress;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
index 27a789db..1d80c8b3 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
@@ -35,9 +35,7 @@
*
* Common base class for listener implementations
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public abstract class AbstractListener implements Listener {
private String serverAddress;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
index f182d191..7196af7b 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
@@ -37,9 +37,7 @@
*
* Adapter between MINA handler and the {@link FtpHandler} interface
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class FtpHandlerAdapter implements IoHandler {
private FtpServerContext context;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
index ccea6c93..c8242fef 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
@@ -31,9 +31,7 @@
*
* Specialized @see {@link LoggingFilter} that optionally masks FTP passwords.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FtpLoggingFilter extends LoggingFilter {
private boolean maskPassword = true;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java
index 6bc11f02..3c3a4309 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java
@@ -34,9 +34,7 @@
*
* A {@link MessageEncoder} that encodes {@link FtpReply}.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FtpResponseEncoder extends ProtocolEncoderAdapter {
private static final CharsetEncoder ENCODER = Charset.forName("UTF-8")
.newEncoder();
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
index ee4e9847..161b7fb1 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
@@ -32,9 +32,7 @@
*
* Factory for creating decoders and encoders
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FtpServerProtocolCodecFactory implements ProtocolCodecFactory {
private ProtocolDecoder decoder = new TextLineDecoder(Charset
.forName("UTF-8"));
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
index 5a1f2eb2..76ada990 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
@@ -61,9 +61,7 @@
*
* The default {@link Listener} implementation.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class NioListener extends AbstractListener {
private final Logger LOG = LoggerFactory.getLogger(NioListener.class);
diff --git a/core/src/main/java/org/apache/ftpserver/main/AddUser.java b/core/src/main/java/org/apache/ftpserver/main/AddUser.java
index b8be8c95..88656584 100644
--- a/core/src/main/java/org/apache/ftpserver/main/AddUser.java
+++ b/core/src/main/java/org/apache/ftpserver/main/AddUser.java
@@ -39,9 +39,7 @@
/**
* Used to add users to the user manager for a particular FtpServer configuration
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class AddUser extends CommandLine {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/main/CommandLine.java b/core/src/main/java/org/apache/ftpserver/main/CommandLine.java
index 3eb85d71..d311b778 100644
--- a/core/src/main/java/org/apache/ftpserver/main/CommandLine.java
+++ b/core/src/main/java/org/apache/ftpserver/main/CommandLine.java
@@ -28,9 +28,7 @@
* This class is the starting point for the FtpServer when it is started using
* the command line mode.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class CommandLine {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/main/Daemon.java b/core/src/main/java/org/apache/ftpserver/main/Daemon.java
index acbfe8ad..4c193f22 100644
--- a/core/src/main/java/org/apache/ftpserver/main/Daemon.java
+++ b/core/src/main/java/org/apache/ftpserver/main/Daemon.java
@@ -31,9 +31,7 @@
* Invokes FtpServer as a daemon, running in the background. Used for example
* for the Windows service.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class Daemon {
private static final Logger LOG = LoggerFactory.getLogger(Daemon.class);
diff --git a/core/src/main/java/org/apache/ftpserver/message/MessageResource.java b/core/src/main/java/org/apache/ftpserver/message/MessageResource.java
index 477ac400..dd836420 100644
--- a/core/src/main/java/org/apache/ftpserver/message/MessageResource.java
+++ b/core/src/main/java/org/apache/ftpserver/message/MessageResource.java
@@ -26,9 +26,7 @@
/**
* This is message resource interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface MessageResource {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java b/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java
index b1554187..002b005f 100644
--- a/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java
@@ -27,9 +27,7 @@
/**
* Factory for creating message resource implementation
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 693604 $, $Date: 2008-09-09 22:55:19 +0200 (Tue, 09 Sep 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class MessageResourceFactory {
private List languages;
diff --git a/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java b/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
index 5a0c1ba0..5f11d47a 100644
--- a/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
+++ b/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
@@ -50,9 +50,7 @@
* Custom Language Specific Messages -> Default Language Specific Messages ->
* Custom Common Messages -> Default Common Messages -> null (not found)
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultMessageResource implements MessageResource {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java b/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java
index e0a5e1f6..b0e1671f 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java
@@ -20,9 +20,7 @@
* Enumeration of possible levels of client authentication during an SSL
* session.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public enum ClientAuth {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java b/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java
index 537f72cc..3a802620 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java
@@ -26,9 +26,7 @@
/**
* SSL configuration
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface SslConfiguration {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
index 2f1922d4..94f1e481 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
@@ -39,9 +39,7 @@
* Used to configure the SSL settings for the control channel or the data
* channel.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 693604 $, $Date: 2008-09-09 22:55:19 +0200 (Tue, 09 Sep 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SslConfigurationFactory {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
index 6f01dc5c..509ea9ff 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
@@ -36,9 +36,7 @@
*
* Based of org.apache.tomcat.util.net.jsse.JSSEKeyManager.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public final class AliasKeyManager implements X509KeyManager {
private X509KeyManager delegate;
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
index e0cef336..4b988c58 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
@@ -40,9 +40,7 @@
*
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultSslConfiguration implements SslConfiguration {
private KeyManagerFactory keyManagerFactory;
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java
index 1dcb3ae8..4079d7d7 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java
@@ -34,9 +34,7 @@
*
* Based of org.apache.tomcat.util.net.jsse.JSSEKeyManager.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public final class ExtendedAliasKeyManager extends X509ExtendedKeyManager {
private X509ExtendedKeyManager delegate;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java b/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java
index 23675800..69128dc9 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java
@@ -25,9 +25,7 @@
/**
* Class representing an anonymous authentication attempt
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class AnonymousAuthentication implements Authentication {
private UserMetadata userMetadata;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java
index 4f0f1436..656efab4 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java
@@ -26,9 +26,7 @@
* Password encryptor that does no encryption, that is, keps the
* password in clear text
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ClearTextPasswordEncryptor implements PasswordEncryptor {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java b/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java
index e60dd69f..6ea2b92b 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java
@@ -28,9 +28,7 @@
/**
* Factory for database backed {@link UserManager} instances.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 689495 $, $Date: 2008-08-27 16:58:52 +0200 (Wed, 27 Aug 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DbUserManagerFactory implements UserManagerFactory {
private String adminName = "admin";
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java
index 80e17a1c..0266ab7a 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java
@@ -26,9 +26,7 @@
* Password encryptor that hashes the password using MD5. Please note that this form
* of encryption is sensitive to lookup attacks.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class Md5PasswordEncryptor implements PasswordEncryptor {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java
index f083127c..595dd0e9 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java
@@ -24,9 +24,7 @@
* Strategy used for encrypting and matching encrypted passwords.
* The purpose is to make the password encryption possible to extend.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface PasswordEncryptor {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java b/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
index 948a24d5..1b517ad9 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
@@ -28,9 +28,7 @@
/**
* Factory for the properties file based UserManager implementation.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 689495 $, $Date: 2008-08-27 16:58:52 +0200 (Wed, 27 Aug 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PropertiesUserManagerFactory implements UserManagerFactory {
private String adminName = "admin";
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java
index 197647c3..6120dba8 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java
@@ -31,9 +31,7 @@
* The algorithm is based on the principles described in
* http://www.jasypt.org/howtoencryptuserpasswords.html
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SaltedPasswordEncryptor implements PasswordEncryptor {
private SecureRandom rnd = new SecureRandom();
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java b/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java
index 85c49a6c..51d96bc1 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java
@@ -24,9 +24,7 @@
/**
* Interface for user manager factories
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev: 689495 $, $Date: 2008-08-27 16:58:52 +0200 (Wed, 27 Aug 2008) $
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface UserManagerFactory {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java b/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java
index 44176876..f0877709 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java
@@ -26,9 +26,7 @@
* Class representing a normal authentication attempt using username and
* password
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class UsernamePasswordAuthentication implements Authentication {
private String username;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
index 95b172b4..6793c6d4 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
@@ -29,9 +29,7 @@
*
* Abstract common base type for {@link UserManager} implementations
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public abstract class AbstractUserManager implements UserManager {
public static final String ATTR_LOGIN = "userid";
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 f08d6ab0..844c5bf4 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
@@ -42,9 +42,7 @@
*
downloadrate
*
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class BaseUser implements User {
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
index 409bcfb2..caa2c4e6 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
@@ -27,9 +27,7 @@
*
* The max upload rate permission
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ConcurrentLoginPermission implements Authority {
private int maxConcurrentLogins;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
index 349f88c5..8b7459ae 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
@@ -26,9 +26,7 @@
*
* Class representing a request to log in a number of concurrent times
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ConcurrentLoginRequest implements AuthorizationRequest {
private int concurrentLogins;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
index 6c6ff1a8..015874b4 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
@@ -52,9 +52,7 @@
* All the user attributes are replaced during run-time. So we can use your
* database schema. Then you need to modify the SQLs in the configuration file.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DbUserManager extends AbstractUserManager {
private final Logger LOG = LoggerFactory.getLogger(DbUserManager.class);
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
index ad9ec752..77680db1 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
@@ -112,9 +112,7 @@
* ftpserver.user.admin.uploadrate=0
* ftpserver.user.admin.downloadrate=0
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class PropertiesUserManager extends AbstractUserManager {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java
index e3d0700b..ab21bd30 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java
@@ -27,9 +27,7 @@
*
* The max upload rate permission
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class TransferRatePermission implements Authority {
private int maxDownloadRate;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java
index 27fb04b8..b95b2d7a 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java
@@ -26,9 +26,7 @@
*
* Request for getting the maximum allowed transfer rates for a user
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class TransferRateRequest implements AuthorizationRequest {
private int maxDownloadRate = 0;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java
index 57b839e8..28f2dd80 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java
@@ -27,9 +27,7 @@
*
* User metadata used during authentication
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class UserMetadata {
private Certificate[] certificateChain;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java
index 68ea0ff2..e656fdf4 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java
@@ -27,9 +27,7 @@
*
* Class representing a write permission
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class WritePermission implements Authority {
private String permissionRoot;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java
index aac95e13..6e33c12a 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java
@@ -26,9 +26,7 @@
*
* Class representing a write request
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class WriteRequest implements AuthorizationRequest {
private String file;
diff --git a/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java b/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java
index 3bd73279..4788cb74 100644
--- a/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java
+++ b/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java
@@ -37,9 +37,7 @@
* This class encapsulates java.util.Properties to add java
* primitives and some other java classes.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class BaseProperties extends Properties {
private static final long serialVersionUID = 5572645129592131953L;
diff --git a/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java b/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java
index 10f999c0..555b183c 100644
--- a/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java
@@ -22,9 +22,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class ClassUtils {
diff --git a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
index 94a94923..55a6bc3b 100644
--- a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
@@ -32,9 +32,7 @@
*
* Standard date related utility methods.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DateUtils {
private final static String[] MONTHS = { "Jan", "Feb", "Mar", "Apr", "May",
diff --git a/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java b/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java
index 228d0de7..d2f8d92a 100644
--- a/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java
@@ -27,9 +27,7 @@
*
* String encryption utility methods.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class EncryptUtils {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java b/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java
index 7c454a4d..a715273c 100644
--- a/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java
@@ -27,9 +27,7 @@
*
* This is regular expression filename filter.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FileRegularFilter implements FilenameFilter {
private RegularExpr regularExpr = null;
diff --git a/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java b/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java
index 2d74681a..d10bc7e2 100644
--- a/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java
+++ b/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java
@@ -25,9 +25,7 @@
* Thrown if the provided string representation does not match a valid IP
* address
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class IllegalInetAddressException extends IllegalArgumentException {
private static final long serialVersionUID = -7771719692741419933L;
diff --git a/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java b/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java
index f7036f99..475ff80d 100644
--- a/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java
+++ b/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java
@@ -24,9 +24,7 @@
*
* Thrown if the provided string representation does not match a valid IP port
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class IllegalPortException extends IllegalArgumentException {
private static final long serialVersionUID = -7771719692741419931L;
diff --git a/core/src/main/java/org/apache/ftpserver/util/IoUtils.java b/core/src/main/java/org/apache/ftpserver/util/IoUtils.java
index 41bb07f7..53fa4427 100644
--- a/core/src/main/java/org/apache/ftpserver/util/IoUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/IoUtils.java
@@ -44,9 +44,7 @@
* commons-io library we prefer to our own implementation to, using a external
* library might cause additional constraints on users embedding FtpServer.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class IoUtils {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/util/OS.java b/core/src/main/java/org/apache/ftpserver/util/OS.java
index 7bae9fd5..ff9ea071 100644
--- a/core/src/main/java/org/apache/ftpserver/util/OS.java
+++ b/core/src/main/java/org/apache/ftpserver/util/OS.java
@@ -24,9 +24,7 @@
*
* Condition that tests the OS type.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public final class OS {
private static final String FAMILY_OS_400 = "os/400";
diff --git a/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java b/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java
index 60f75f89..c2bc3c85 100644
--- a/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java
+++ b/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java
@@ -25,9 +25,7 @@
* This is a simplified regular character mattching class. Supports *?^[]-
* pattern characters.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class RegularExpr {
private char[] pattern;
diff --git a/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java b/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
index c2e977b7..5f00e25d 100644
--- a/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
+++ b/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
@@ -30,9 +30,7 @@
* Encodes and decodes socket addresses (IP and port) from and to the format
* used with for example the PORT and PASV command
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class SocketAddressEncoder {
private static int convertAndValidateNumber(String s) {
diff --git a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
index 55e5465b..5268a3fc 100644
--- a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
@@ -26,9 +26,7 @@
*
* String utility methods.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class StringUtils {
/**
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
index 876ac761..a3b1ce8d 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
@@ -29,7 +29,6 @@
/**
*
* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
*
*/
public class ActiveModeReplyTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
index 62ae3391..73a6203e 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
@@ -33,9 +33,7 @@
*
* From FTPSERVER-250
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class BindExceptionParallelTest extends ClientTestTemplate {
private static final int NUMBER_OF_CLIENTS = 2;
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java
index 3a487c90..5bed73ab 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java
@@ -29,9 +29,7 @@
*
* From FTPSERVER-250
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class BindExceptionSerialTest extends ClientTestTemplate {
@Override
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java
index 888a4926..0399afc5 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java
@@ -24,9 +24,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class CdCaseInsensitiveTest extends CdTest {
protected FtpServerFactory createServer() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java
index 6ca8748b..32ad30da 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class CdTest extends ClientTestTemplate {
protected static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
index 70c06703..1ceeaaea 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
@@ -43,9 +43,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class ClientTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java
index 661a5260..574d5677 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java
@@ -24,9 +24,7 @@
/**
* Tests that commands sent simultaniously are handled correctly.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class ConcatedCommandsTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java
index 4752c74a..1bf85e61 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ConnectPickPortTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
index 10bf8c43..d29e81ee 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ConnectTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java
index cdcdf85e..30357f50 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class CustomMaxLoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java
index c83acac3..5e49d527 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java
@@ -32,9 +32,7 @@
*
* Test for FTPSERVER-170
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class DataTransferTimeoutTest extends ClientTestTemplate {
private static final String TEST_FILENAME = "test.txt";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java
index b41b06a9..e05c6e62 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class DefaultMaxLoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
index b88cdf5a..13b3a8c8 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class DeleteTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
index bbba617e..bd583898 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class DirectoryTest extends ClientTestTemplate {
private static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java
index 655adb3d..74a3f976 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FeatTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java b/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
index 398a67ca..40a65f30 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
@@ -28,9 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpMd5Test extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java
index 939c1f92..77096b2a 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class HelpTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java
index e58920ee..4b15b953 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java
@@ -28,9 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class I18NTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
index ad1dc784..8eb1f677 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
@@ -29,9 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class InetAddressBlacklistTest extends ClientTestTemplate {
protected FtpServerFactory createServer() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java
index 058d2cdd..8c42515e 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class LangTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java
index 229b0235..b5931b93 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ListPassiveTest extends ListTest {
/*
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
index daecc4c3..e5751f01 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
@@ -29,9 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ListTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java
index a9c50699..79dcb273 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class LoginNoAnonTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
index 5231e261..1af41d19 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class LoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
index 3205ad90..df5939ae 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MDTMTest extends ClientTestTemplate {
private static final SimpleDateFormat FTP_DATE_FORMAT = new SimpleDateFormat(
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java
index 8678b6f1..55cb92b7 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java
@@ -29,9 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MFMTTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java
index c00117c7..8a18409e 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java
@@ -31,9 +31,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class PasvAddressTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java
index dacc43d2..b2e54f1d 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java
@@ -30,9 +30,7 @@
* Test for external passive address configured as hostname rather than IP
* address.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class PasvAddressWithHostnameTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
index b5a4876d..d9e6a0f0 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class PasvTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java
index 1f88895c..a1992e06 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class RenameTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java
index d2fc83a4..63dd22d6 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class RetrievePassiveTest extends RetrieveTest {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java
index 78d092aa..4dcbb9f7 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class RetrieveTest extends ClientTestTemplate {
private static final String TEST_FILENAME = "test.txt";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java
index e18a63f9..2611c68a 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java
@@ -22,9 +22,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class RmDirTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
index 5bb5e869..a719d968 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
@@ -28,9 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SiteTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java
index 7fa2aa7c..619ca605 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SizeTest extends ClientTestTemplate {
protected static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java
index 7a39d4a7..698dd488 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class StorePassiveTest extends StoreTest {
/*
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
index ac18a249..69c8f331 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class StoreTest extends ClientTestTemplate {
private static final String EOL = System.getProperty("line.separator");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
index 5260c3e1..157cd8db 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SubnetBlacklistTest extends ClientTestTemplate {
protected FtpServerFactory createServer() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
index 840a8218..63ca9061 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
@@ -24,9 +24,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SuspendResumeTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java
index c1b9af7e..26833456 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SystTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java
index 4798133b..6a8a586e 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class TypeTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java
index b244adb6..6297f1cd 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java
@@ -24,9 +24,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class UnlimitedMaxLoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java
index ef71b7cf..15f26b82 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java
@@ -30,9 +30,7 @@
/**
*
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class DefaultCommandFactoryTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
index 2317f98b..6ef0dcad 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
@@ -36,7 +36,6 @@
/**
*
* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
*
*/
public class DirectoryListerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java
index 79005ef4..33891054 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java
@@ -32,9 +32,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
@SuppressWarnings("deprecation")
public class LISTFileFormaterTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java
index 76d70acb..c10dd524 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ListArgumentParserTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java
index f5b3b0e0..ff80c1dc 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ListArgumentTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
index ed998d06..94d272db 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
@@ -32,9 +32,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
@SuppressWarnings("deprecation")
public class MLSTFileFormaterTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java
index 61f092b3..dd5d9e90 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java
@@ -31,9 +31,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class NLSTFileFormaterTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java
index 8f357447..1bb7b2c9 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class DbUserManagerConfigTest extends SpringConfigTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
index 4465391f..9ae34563 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FileUserManagerConfigTest extends SpringConfigTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
index 8abdf6b2..57d30b58 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
@@ -33,9 +33,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpletsConfigTest extends SpringConfigTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
index 52a838ca..0bd0c3d1 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
@@ -33,9 +33,7 @@
/**
* Used for testing creation of custom listeners from Spring config
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class MyCustomListener implements Listener {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java
index dcbc9ab9..a6ab829b 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class PropertyPlaceholderTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
index 1c701ee2..0c848077 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
@@ -38,9 +38,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SpringConfigTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java
index b58e4067..ee9a2979 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class SpringConfigTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java b/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java
index 22403286..c6730a5e 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class TestFtplet extends DefaultFtplet {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java
index a0aa7573..163561fa 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class FileSystemViewTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java
index aab9ec31..3d7977bc 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class FtpFileTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java
index f94d70ce..2f09dabf 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class NativeFileObjectTest extends FtpFileTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java
index 500b1ae6..03597e16 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java
@@ -27,9 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class NativeFileSystemViewTest extends FileSystemViewTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java
index 4477ac49..2d054cc9 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class DefaultFtpLetContainerTest extends FtpLetContainerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
index fa30a6b4..8aecec19 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
@@ -40,9 +40,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpLetOnConnectTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
index 71cf7cf9..09c0c26c 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
@@ -39,9 +39,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpLetReturnDefaultTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java
index b4949079..877204ee 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java
@@ -40,9 +40,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpLetReturnDisconnectTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java
index d8bad60d..5bd3a930 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java
@@ -41,9 +41,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpLetReturnSkipTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java
index 8787d45e..904f6509 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpLetThrowFtpExceptionTest extends FtpLetReturnDisconnectTest {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java
index 621f27e0..c2b90652 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpLetThrowIOExceptionTest extends FtpLetThrowFtpExceptionTest {
protected void throwException() throws IOException {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java
index fd385051..90586074 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpLetThrowRuntimeExceptionTest extends
FtpLetThrowFtpExceptionTest {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java
index 3dc2ea42..76894866 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MockFtplet extends DefaultFtplet {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java
index 0d35c276..dfdf9a19 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MockFtpletCallback extends DefaultFtplet {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
index f07ba5e6..c2e4935c 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
@@ -25,9 +25,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class DefaultFtpReplyTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
index 21f7c127..bf010993 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
@@ -33,9 +33,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- *
+ * @author The Apache MINA Project (dev@mina.apache.org) *
*/
public class DefaultFtpServerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java b/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java
index a8644758..9a342e04 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpRequestImplTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java b/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java
index 917cc949..cdf2c9ab 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java
@@ -22,9 +22,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class FtpStatisticsImplTest extends ServerFtpStatisticsTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
index 06c21c15..969b6d1e 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class PassivePortsTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java b/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java
index e92b8166..4e5c90ae 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class ServerFtpStatisticsTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
index cbefd3b8..db045076 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
@@ -29,9 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class ExplicitSecurityTestTemplate extends SSLTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java
index 00ae3c1a..8c2a8eb2 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class ImplicitSecurityTestTemplate extends
ExplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
index 236dedd5..5206dbd1 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
@@ -22,16 +22,10 @@
import javax.net.ssl.SSLHandshakeException;
import org.apache.commons.net.ftp.FTPSClient;
-import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.impl.DefaultFtpServerContext;
-import org.apache.ftpserver.impl.DefaultFtpServer;
-import org.apache.ftpserver.listener.nio.NioListener;
-import org.apache.ftpserver.ssl.impl.DefaultSslConfiguration;
/**
*
* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
*
*/
public class MinaCipherSuitesTest extends SSLTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java
index c8c66f94..fbc216e6 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java
@@ -31,9 +31,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MinaClientAuthTest extends SSLTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java
index 891365c4..626908c2 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MinaExplicitSSLTest extends ExplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java
index 7a1cd031..4ff5405f 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MinaExplicitTLSTest extends ExplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java
index 345dbba2..23580a0f 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MinaImplicitClientAuthTest extends MinaClientAuthTest {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
index 928d96e0..d4b6c537 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
@@ -34,9 +34,7 @@
import org.apache.ftpserver.impl.ServerDataConnectionFactory;
/**
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
- */
+* @author The Apache MINA Project (dev@mina.apache.org) */
public class MinaImplicitDataChannelTest extends ImplicitSecurityTestTemplate {
protected void setUp() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java
index b2c3e74f..fb6b57e7 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MinaImplicitSSLTest extends ImplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java
index 5212647d..1bed3aa3 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java
@@ -21,9 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class MinaImplicitTLSTest extends ImplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
index 75a2669c..62963bb8 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
@@ -43,9 +43,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class SSLTestTemplate extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java b/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
index 5268f84c..cd8a9241 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
@@ -29,9 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class AliasKeymanagerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java b/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
index df8f1fc3..178560ad 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
@@ -29,9 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ExtendedAliasKeymanagerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/test/TestUtil.java b/core/src/test/java/org/apache/ftpserver/test/TestUtil.java
index ddd124db..e5374fdf 100644
--- a/core/src/test/java/org/apache/ftpserver/test/TestUtil.java
+++ b/core/src/test/java/org/apache/ftpserver/test/TestUtil.java
@@ -37,9 +37,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class TestUtil {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java
index 8539c411..f0a2f0a3 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class UsernamePasswordAuthenticationTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java
index c85f9233..727df2c8 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class BaseUserTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java
index b8c88768..1cc542b5 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java
@@ -29,9 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ClearTextDbUserManagerTest extends DbUserManagerTest {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java
index d899bf62..866a499a 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ClearTextPasswordEncryptorTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java
index 129b7e7f..343866a3 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class ConcurrentLoginPermissionTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java
index 94002a26..15246033 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java
@@ -33,9 +33,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class DbUserManagerTest extends UserManagerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java
index 59d83fdf..458497a4 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class Md5PasswordEncryptorTest extends ClearTextPasswordEncryptorTest {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java
index a631ffb6..ad9a24ee 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java
@@ -35,9 +35,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class PropertiesUserManagerTest extends UserManagerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java
index adddfc8d..ea1f79a3 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SaltedPasswordEncryptorTest extends ClearTextPasswordEncryptorTest {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java
index 640540a0..e7577fbc 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java
@@ -41,9 +41,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public abstract class UserManagerTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java
index 2211eb9b..698bb5e3 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java
@@ -30,9 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class VolatilePropertiesUserManagerTest extends UserManagerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java
index 0772b909..d5c05095 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java
@@ -26,9 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class WritePermissionTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java b/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
index 76d69746..0f524457 100644
--- a/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
@@ -33,9 +33,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class BasePropertiesTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java b/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java
index 72a18842..46ca0472 100644
--- a/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class EncryptUtilsTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java b/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java
index 141e83f1..65f869cc 100644
--- a/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java
@@ -23,9 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class RegularExprTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java b/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java
index 69ef5ceb..45a99f38 100644
--- a/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java
@@ -25,9 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
-* @version $Rev$, $Date$
-*
+* @author The Apache MINA Project (dev@mina.apache.org)*
*/
public class SocketAddressEncoderTest extends TestCase {
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java
index 46406c3d..c7f6285a 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java
@@ -23,9 +23,7 @@
* Represents a type of authentication request, typically anonymous or a
* username and password combination
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface Authentication {
}
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
index 1ece1ed0..c7815dda 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
@@ -22,9 +22,7 @@
/**
* Thrown if an authentication request fails
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class AuthenticationFailedException extends FtpException {
private static final long serialVersionUID = -1328383839915898987L;
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java
index 86fd7643..107e5709 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java
@@ -23,9 +23,7 @@
* Interface for an authority granted to the user, typical example is write
* access or the number of concurrent logins
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface Authority {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java
index cdae3d60..d1fc16bd 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java
@@ -22,9 +22,7 @@
/**
* A request for authorization for a specific task, for example write access.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface AuthorizationRequest {
}
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java
index 9281a891..0a27ff44 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java
@@ -25,9 +25,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface DataConnection {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java
index 71ebb41d..02ee0720 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java
@@ -21,9 +21,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface DataConnectionFactory {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java
index db48f4cc..c840f268 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java
@@ -22,9 +22,7 @@
/**
* Type safe enum for describing the data type
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public enum DataType {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
index 285fce18..07ba35e5 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
@@ -22,9 +22,7 @@
/**
* FTP reply object.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtpReply implements FtpReply {
private int code;
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java
index 95514883..819ee650 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java
@@ -26,9 +26,7 @@
* just an empty implementation. You can derive your ftplet implementation from
* this class.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DefaultFtplet implements Ftplet {
public void init(FtpletContext ftpletContext) throws FtpException {
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java
index 53b95a10..4fc75d6e 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java
@@ -22,9 +22,7 @@
/**
* Factory for file system implementations - it returns the file system view for user.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FileSystemFactory {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java
index f9423938..30756c0e 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java
@@ -22,9 +22,7 @@
/**
* This is an abstraction over the user file system view.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FileSystemView {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
index f185b9be..ae9c52cc 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
@@ -25,9 +25,7 @@
/**
* Ftplet exception class.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class FtpException extends Exception {
private static final long serialVersionUID = -1328383839915898987L;
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
index 5fc5a6b3..7cc591dc 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
@@ -28,9 +28,7 @@
/**
* This is the file abstraction used by the server.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpFile {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java
index d61e587e..fc68cccb 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java
@@ -22,9 +22,7 @@
/**
* Interface for a reply to an FTP request.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpReply {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java
index 5c31be32..95f188ec 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java
@@ -22,9 +22,7 @@
/**
* One FtpRequest made by the client.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpRequest {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
index f7901481..50a5b54c 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
@@ -32,9 +32,7 @@
* attributes set by setAttribute() will be always available later
* unless that attribute is removed or the client disconnects.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpSession {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java
index 3d49a20e..7c61b0dd 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java
@@ -25,9 +25,7 @@
/**
* This interface holds all the ftp server statistical information.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpStatistics {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java
index 4702d3da..1cf7699b 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java
@@ -44,9 +44,7 @@
* FtpletEnum.DEFAULT will be assumed. If any ftplet callback method throws
* exception, that particular connection will be disconnected.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface Ftplet {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java
index a7f1e9a1..8d90bbe2 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java
@@ -24,9 +24,7 @@
* information to a ftplet during initialization. The configuration information
* contains initialization parameters.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface FtpletContext {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java
index 9cd84737..0c108f08 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java
@@ -24,9 +24,7 @@
*
* DEFAULT < NO_FTPLET < SKIP < DISCONNECT
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public enum FtpletResult {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java
index f1d7c16f..b79cb950 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java
@@ -22,9 +22,7 @@
/**
* Type safe enum for describing the structure
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public enum Structure {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
index c51c557b..e17679a2 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
@@ -24,9 +24,7 @@
/**
* Basic user interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface User {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java
index f100af8b..c8ada543 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java
@@ -22,9 +22,7 @@
/**
* User manager interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public interface UserManager {
/**
diff --git a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java
index d5b2e538..e2da1f7e 100644
--- a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java
+++ b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java
@@ -23,9 +23,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class DataTypeTest extends TestCase {
public void testParseA() {
diff --git a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java
index ff47f9d5..19275acd 100644
--- a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java
+++ b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java
@@ -23,9 +23,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class ExampleFtplet extends DefaultFtplet {
@Override
diff --git a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java
index fb81e544..d37bd667 100644
--- a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java
+++ b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java
@@ -23,9 +23,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
- */
+ * @author The Apache MINA Project (dev@mina.apache.org) */
public class StructureTest extends TestCase {
public void testParseF() {
assertSame(Structure.FILE, Structure.parseArgument('F'));
From b1247e084bca4bb8648bfcdbb3af92762a6243a4 Mon Sep 17 00:00:00 2001
From: David Latorre Gallego
Date: Mon, 25 May 2009 08:50:32 +0000
Subject: [PATCH 018/101] FTPSERVER-303 Underlying plain socket in SSL passive
data connections was not being closed properly.
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@778355 13f79535-47bb-0310-9956-ffa450edef68
---
.../impl/IODataConnectionFactory.java | 26 +++++++++----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
index b54316dd..cfad49fa 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
@@ -41,7 +41,7 @@
/**
* Internal class, do not use directly.
- *
+ *
* We can get the FTP data connection using this class. It uses either PORT or
* PASV command.
*
@@ -195,7 +195,7 @@ public synchronized InetSocketAddress initPassiveDataConnection()
"Data connection SSL required but not configured.");
}
- // this method does not actually create the SSL socket, due to a JVM bug
+ // this method does not actually create the SSL socket, due to a JVM bug
// (https://issues.apache.org/jira/browse/FTPSERVER-241).
// Instead, it creates a regular
// ServerSocket that will be wrapped as a SSL socket in createDataSocket()
@@ -234,7 +234,7 @@ public synchronized InetSocketAddress initPassiveDataConnection()
/*
* (non-Javadoc)
- *
+ *
* @see org.apache.ftpserver.FtpDataConnectionFactory2#getInetAddress()
*/
public InetAddress getInetAddress() {
@@ -243,7 +243,7 @@ public InetAddress getInetAddress() {
/*
* (non-Javadoc)
- *
+ *
* @see org.apache.ftpserver.FtpDataConnectionFactory2#getPort()
*/
public int getPort() {
@@ -252,7 +252,7 @@ public int getPort() {
/*
* (non-Javadoc)
- *
+ *
* @see org.apache.ftpserver.FtpDataConnectionFactory2#openConnection()
*/
public DataConnection openConnection() throws Exception {
@@ -304,10 +304,10 @@ private synchronized Socket createDataSocket() throws Exception {
// if no local address has been configured, make sure we use the same as the client connects from
if(localAddr == null) {
localAddr = ((InetSocketAddress)session.getLocalAddress()).getAddress();
- }
+ }
SocketAddress localSocketAddress = new InetSocketAddress(localAddr, dataConfig.getActiveLocalPort());
-
+
LOG.debug("Binding active data connection to {}", localSocketAddress);
dataSoc.bind(localSocketAddress);
@@ -316,12 +316,12 @@ private synchronized Socket createDataSocket() throws Exception {
if (secure) {
LOG.debug("Opening secure passive data connection");
- // this is where we wrap the unsecured socket as a SSLSocket. This is
+ // this is where we wrap the unsecured socket as a SSLSocket. This is
// due to the JVM bug described in FTPSERVER-241.
// get server socket factory
SslConfiguration ssl = getSslConfiguration();
-
+
// we've already checked this, but let's do it again
if (ssl == null) {
throw new FtpException(
@@ -336,7 +336,7 @@ private synchronized Socket createDataSocket() throws Exception {
SSLSocket sslSocket = (SSLSocket) ssocketFactory
.createSocket(serverSocket, serverSocket
.getInetAddress().getHostName(),
- serverSocket.getPort(), false);
+ serverSocket.getPort(), true);
sslSocket.setUseClientMode(false);
// initialize server socket
@@ -359,7 +359,7 @@ private synchronized Socket createDataSocket() throws Exception {
}
DataConnectionConfiguration dataCfg = session.getListener()
.getDataConnectionConfiguration();
-
+
dataSoc.setSoTimeout(dataCfg.getIdleTime() * 1000);
LOG.debug("Passive data connection opened");
}
@@ -399,7 +399,7 @@ private InetAddress resolveAddress(String host)
/*
* (non-Javadoc)
- *
+ *
* @see org.apache.ftpserver.DataConnectionFactory#isSecure()
*/
public boolean isSecure() {
@@ -415,7 +415,7 @@ public void setSecure(final boolean secure) {
/*
* (non-Javadoc)
- *
+ *
* @see org.apache.ftpserver.DataConnectionFactory#isZipMode()
*/
public boolean isZipMode() {
From fbb605eb319183eac9aa216b7b7c874d1e4897d2 Mon Sep 17 00:00:00 2001
From: David Latorre Gallego
Date: Wed, 27 May 2009 12:35:46 +0000
Subject: [PATCH 019/101] FTPSERVER-306 EOL sequence is lost if the file wasn't
correctly transformed to NVT format (this is, the sent new line sequence is
different from \r\n)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@779146 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/impl/IODataConnection.java | 20 +++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
index 6d40b653..37593abe 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
@@ -40,7 +40,7 @@
/**
* Internal class, do not use directly.
- *
+ *
* An active open data connection, used for transfering data over the data
* connection.
*
@@ -50,9 +50,9 @@ public class IODataConnection implements DataConnection {
private final Logger LOG = LoggerFactory
.getLogger(IODataConnection.class);
-
+
private static final byte[] EOL = System.getProperty("line.separator").getBytes();
-
+
private FtpIoSession session;
private Socket socket;
@@ -116,7 +116,7 @@ private OutputStream getDataOutputStream() throws IOException {
/*
* (non-Javadoc)
- *
+ *
* @seeorg.apache.ftpserver.FtpDataConnection2#transferFromClient(java.io.
* OutputStream)
*/
@@ -140,7 +140,7 @@ public final long transferFromClient(FtpSession session,
/*
* (non-Javadoc)
- *
+ *
* @see
* org.apache.ftpserver.FtpDataConnection2#transferToClient(java.io.InputStream
* )
@@ -165,7 +165,7 @@ public final long transferToClient(FtpSession session, final InputStream in)
/*
* (non-Javadoc)
- *
+ *
* @see
* org.apache.ftpserver.FtpDataConnection2#transferToClient(java.lang.String
* )
@@ -263,13 +263,17 @@ private final long transfer(FtpSession session, boolean isWrite,
if (b == '\n' && lastByte != '\r') {
bos.write('\r');
}
-
+
bos.write(b);
} else {
if(b == '\n') {
// for reads, we should always get \r\n
- // so what we do here is to ignore \n bytes
+ // so what we do here is to ignore \n bytes
// and on \r dump the system local line ending
+ // Some clients won't transform new lines into \r\n so we make sure we don't delete new lines
+ if (lastByte != '\r'){
+ bos.write(EOL);
+ }
} else if(b == '\r') {
bos.write(EOL);
} else {
From f2c743932a580084fea1408ba389ccd394d37309 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 30 May 2009 21:09:21 +0000
Subject: [PATCH 020/101] Fixed incorrect comparison of the user level idle
time and the listener idle time of the user level is set to be unlimited
(FTPSERVER-308)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@780324 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/impl/FtpIoSession.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
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 639dadeb..af58e30d 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
@@ -619,7 +619,11 @@ public void setMaxIdleTime(int maxIdleTime) {
int listenerTimeout = getListener().getIdleTimeout();
// the listener timeout should be the upper limit, unless set to unlimited
- if(listenerTimeout <= 0 || maxIdleTime < listenerTimeout) {
+ // if the user limit is set to be unlimited, use the listener value is the threshold
+ // (already used as the default for all sessions)
+ // else, if the user limit is less than the listener idle time, use the user limit
+ if(listenerTimeout <= 0 ||
+ (maxIdleTime > 0 && maxIdleTime < listenerTimeout)) {
wrappedSession.getConfig().setBothIdleTime(maxIdleTime);
}
}
From 950d8da5738043e968e8fbb31071dae0ca7e4e8f Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 30 May 2009 21:37:58 +0000
Subject: [PATCH 021/101] Return an error reply rather than close the session
if we get a decoding problem (FTPSERVER-309)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@780331 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/impl/DefaultFtpHandler.java | 20 ++++-
.../ftpserver/clienttests/DecoderTest.java | 82 +++++++++++++++++++
2 files changed, 99 insertions(+), 3 deletions(-)
create mode 100644 core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
index 628daa50..6aec7bf4 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
@@ -20,11 +20,13 @@
package org.apache.ftpserver.impl;
import java.io.IOException;
+import java.nio.charset.MalformedInputException;
import org.apache.ftpserver.command.Command;
import org.apache.ftpserver.command.CommandFactory;
import org.apache.ftpserver.ftplet.DataConnection;
import org.apache.ftpserver.ftplet.DataConnectionFactory;
+import org.apache.ftpserver.ftplet.DefaultFtpReply;
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpReply;
import org.apache.ftpserver.ftplet.FtpRequest;
@@ -33,6 +35,7 @@
import org.apache.ftpserver.listener.Listener;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.write.WriteToClosedSessionException;
+import org.apache.mina.filter.codec.ProtocolDecoderException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -134,18 +137,29 @@ public void sessionClosed(final FtpIoSession session) throws Exception {
public void exceptionCaught(final FtpIoSession session,
final Throwable cause) throws Exception {
- if (cause instanceof WriteToClosedSessionException) {
+
+ if(cause instanceof ProtocolDecoderException &&
+ cause.getCause() instanceof MalformedInputException) {
+ // client probably sent something which is not UTF-8 and we failed to
+ // decode it
+
+ LOG.warn(
+ "Client sent command that could not be decoded: {}",
+ ((ProtocolDecoderException)cause).getHexdump());
+ session.write(new DefaultFtpReply(FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, "Invalid character in command"));
+ } else if (cause instanceof WriteToClosedSessionException) {
WriteToClosedSessionException writeToClosedSessionException =
(WriteToClosedSessionException) cause;
LOG.warn(
"Client closed connection before all replies could be sent, last reply was {}",
writeToClosedSessionException.getRequest());
-
+ session.close(false).awaitUninterruptibly(10000);
} else {
LOG.error("Exception caught, closing session", cause);
+ session.close(false).awaitUninterruptibly(10000);
}
- session.close(false).awaitUninterruptibly(10000);
+
}
private boolean isCommandOkWithoutAuthentication(String command) {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java
new file mode 100644
index 00000000..e36dfb1b
--- /dev/null
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.MalformedInputException;
+
+import org.apache.commons.codec.DecoderException;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.net.ftp.FTPClient;
+
+
+/**
+*
+* @author The Apache MINA Project (dev@mina.apache.org)*
+*/
+public class DecoderTest extends ClientTestTemplate {
+ private String dump = "4C 49 53 54 20 61 62 63 64 AE 2E 0D 0A".replace(" ", "");
+
+ byte[] b;
+
+ public DecoderTest() throws DecoderException {
+ b = Hex.decodeHex(dump.toCharArray());
+ }
+
+ public void testDecodeError() throws CharacterCodingException {
+ CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
+ ByteBuffer buffer = ByteBuffer.wrap(b);
+
+ try {
+ decoder.decode(buffer);
+ fail("Must throw MalformedInputException");
+ } catch (MalformedInputException e) {
+ // OK
+ }
+ }
+
+ private static class MyFTPClient extends FTPClient {
+ public void sendRawCommand(byte[] b) throws IOException {
+ OutputStream out =_socket_.getOutputStream();
+ out.write(b);
+ }
+ }
+
+ protected FTPClient createFTPClient() throws Exception {
+ FTPClient client = new MyFTPClient();
+ client.setDefaultTimeout(10000);
+ return client;
+ }
+
+ public void testInvalidCharacter() throws Exception {
+ client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
+
+ ((MyFTPClient)client).sendRawCommand(b);
+ client.completePendingCommand();
+
+ assertEquals(501, client.getReplyCode());
+ }
+
+}
From a6e2461749305a12de77b24916d01b0ff4c6acc4 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 30 May 2009 21:47:51 +0000
Subject: [PATCH 022/101] Don't mess with the casing when logging the received
command (FTPSERVER-305)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@780336 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/ftpserver/listener/nio/FtpLoggingFilter.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
index c8242fef..256c81ee 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
@@ -73,9 +73,7 @@ public void messageReceived(NextFilter nextFilter, IoSession session,
String logMessage;
if (maskPassword) {
- request = request.trim().toUpperCase();
-
- if (request.startsWith("PASS ")) {
+ if (request.trim().toUpperCase().startsWith("PASS ")) {
logMessage = "PASS *****";
} else {
logMessage = request;
From 51c0bc638763728810cf22135667694d2541db7a Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 30 May 2009 22:16:22 +0000
Subject: [PATCH 023/101] Comment out the db user manager to make the
configuration valid out of the box (FTPSERVER-301)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@780342 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/res/conf/ftpd-full.xml | 112 ++++++++++++++--------------
1 file changed, 58 insertions(+), 54 deletions(-)
diff --git a/distribution/res/conf/ftpd-full.xml b/distribution/res/conf/ftpd-full.xml
index 71496309..f31722ae 100644
--- a/distribution/res/conf/ftpd-full.xml
+++ b/distribution/res/conf/ftpd-full.xml
@@ -24,76 +24,80 @@
Use this section to define custom listeners, or to redefine the
default listener, aptly named "default"
-->
-
-
+
-
-
+
-
-
-
-
+
+
+
-
-
- 1.2.3.0/16, 1.2.4.0/16, 1.2.3.4
-
-
+
+
+ 1.2.3.0/16, 1.2.4.0/16, 1.2.3.4
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
- INSERT INTO FTP_USER (userid, userpassword,
+
-
-
-
-
-
-
+
+
+
+
+
-
+
\ No newline at end of file
From 90f93f2b044643c357f193a2198b1acae0c45db2 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 7 Jun 2009 20:02:52 +0000
Subject: [PATCH 024/101] Added check for passive ports allocation to check if
the port is not bound by another application (FTPSERVER-302)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@782447 13f79535-47bb-0310-9956-ffa450edef68
---
.../DataConnectionConfigurationFactory.java | 4 +-
.../impl/IODataConnectionFactory.java | 3 +-
.../apache/ftpserver/impl/PassivePorts.java | 44 ++++++++++-
.../impl/ServerDataConnectionFactory.java | 2 +-
.../clienttests/PasvUsedPortTest.java | 77 +++++++++++++++++++
.../ftpserver/impl/PassivePortsTest.java | 36 ++++-----
6 files changed, 139 insertions(+), 27 deletions(-)
create mode 100644 core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
index 22646ec6..5da12b40 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
@@ -47,7 +47,7 @@ public class DataConnectionConfigurationFactory {
private String passiveAddress;
private String passiveExternalAddress;
- private PassivePorts passivePorts = new PassivePorts(new int[] { 0 });
+ private PassivePorts passivePorts = new PassivePorts(new int[] { 0 }, true);
private boolean implicitSsl;
/**
@@ -248,7 +248,7 @@ public String getPassivePorts() {
* @param passivePorts The passive ports string
*/
public void setPassivePorts(String passivePorts) {
- this.passivePorts = new PassivePorts(passivePorts);
+ this.passivePorts = new PassivePorts(passivePorts, true);
}
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
index cfad49fa..c44175ac 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
@@ -153,8 +153,7 @@ private SslConfiguration getSslConfiguration() {
}
/**
- * Initiate a data connection in passive mode (server listening). It returns
- * the success flag.
+ * Initiate a data connection in passive mode (server listening).
*/
public synchronized InetSocketAddress initPassiveDataConnection()
throws DataConnectionException {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index accc3de3..b64804c8 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -19,6 +19,8 @@
package org.apache.ftpserver.impl;
+import java.io.IOException;
+import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -41,6 +43,8 @@ public class PassivePorts {
private String passivePortsString;
+ private boolean checkIfBound;
+
/**
* Parse a string containing passive ports
*
@@ -144,13 +148,13 @@ private static void verifyPort(final int port) {
}
}
- public PassivePorts(final String passivePorts) {
- this(parse(passivePorts));
+ public PassivePorts(final String passivePorts, boolean checkIfBound) {
+ this(parse(passivePorts), checkIfBound);
this.passivePortsString = passivePorts;
}
- public PassivePorts(final int[] passivePorts) {
+ public PassivePorts(final int[] passivePorts, boolean checkIfBound) {
if (passivePorts != null) {
this.passivePorts = passivePorts.clone();
} else {
@@ -158,12 +162,44 @@ public PassivePorts(final int[] passivePorts) {
}
reservedPorts = new boolean[passivePorts.length];
+ this.checkIfBound = checkIfBound;
}
+ private boolean checkPortUnbound(int port) {
+ // is this check disabled?
+ if(!checkIfBound) {
+ return true;
+ }
+
+ // if using 0 port, it will always be available
+ if(port == 0) {
+ return true;
+ }
+
+ ServerSocket ss = null;
+ try {
+ ss = new ServerSocket(port);
+ ss.setReuseAddress(true);
+ return true;
+ } catch (IOException e) {
+ // port probably in used, check next
+ return false;
+ } finally {
+ if(ss != null) {
+ try {
+ ss.close();
+ } catch (IOException e) {
+ // could not close, check next
+ return false;
+ }
+ }
+ }
+ }
+
public int reserveNextPort() {
// search for a free port
for (int i = 0; i < passivePorts.length; i++) {
- if (!reservedPorts[i]) {
+ if (!reservedPorts[i] && checkPortUnbound(passivePorts[i])) {
if (passivePorts[i] != 0) {
reservedPorts[i] = true;
}
diff --git a/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
index 557bb0ac..6284e008 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
@@ -38,7 +38,7 @@ public interface ServerDataConnectionFactory extends DataConnectionFactory {
void initActiveDataConnection(InetSocketAddress address);
/**
- * Initate the passive data connection.
+ * Initiate the passive data connection.
*
* @return The {@link InetSocketAddress} on which the data connection if
* bound.
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
new file mode 100644
index 00000000..b838ab75
--- /dev/null
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.net.ServerSocket;
+
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.ftpserver.test.TestUtil;
+
+/**
+*
+* @author The Apache MINA Project (dev@mina.apache.org)
+*
+*/
+public class PasvUsedPortTest extends ClientTestTemplate {
+
+ private int passivePort;
+
+ @Override
+ protected FtpServerFactory createServer() throws Exception {
+ FtpServerFactory server = super.createServer();
+
+ ListenerFactory listenerFactory = new ListenerFactory(server
+ .getListener("default"));
+
+ DataConnectionConfigurationFactory dccFactory = new DataConnectionConfigurationFactory();
+
+ passivePort = TestUtil.findFreePort(12444);
+
+ dccFactory.setPassivePorts(passivePort + "-" + (passivePort + 1));
+
+ listenerFactory.setDataConnectionConfiguration(dccFactory
+ .createDataConnectionConfiguration());
+
+ server.addListener("default", listenerFactory.createListener());
+
+ return server;
+ }
+
+ public void testPasvWithUsedPort() throws Exception {
+ // bind to the first available passive port
+ ServerSocket ss = new ServerSocket(passivePort);
+
+ client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
+ client.pasv();
+ assertEquals("227 Entering Passive Mode (127,0,0,1,48,157)", client.getReplyString().trim());
+ client.quit();
+ client.disconnect();
+
+ // close blocking socket
+ ss.close();
+
+ client.connect("localhost", getListenerPort());
+ client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
+ client.pasv();
+ assertEquals("227 Entering Passive Mode (127,0,0,1,48,156)", client.getReplyString().trim());
+ }
+}
diff --git a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
index 969b6d1e..88d9836b 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
@@ -28,21 +28,21 @@
public class PassivePortsTest extends TestCase {
public void testParseSingleValue() {
- PassivePorts ports = new PassivePorts("123");
+ PassivePorts ports = new PassivePorts("123", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(-1, ports.reserveNextPort());
}
public void testParseMaxValue() {
- PassivePorts ports = new PassivePorts("65535");
+ PassivePorts ports = new PassivePorts("65535", false);
assertEquals(65535, ports.reserveNextPort());
assertEquals(-1, ports.reserveNextPort());
}
public void testParseMinValue() {
- PassivePorts ports = new PassivePorts("0");
+ PassivePorts ports = new PassivePorts("0", false);
assertEquals(0, ports.reserveNextPort());
assertEquals(0, ports.reserveNextPort());
@@ -53,7 +53,7 @@ public void testParseMinValue() {
public void testParseTooLargeValue() {
try {
- new PassivePorts("65536");
+ new PassivePorts("65536", false);
fail("Must fail due to too high port number");
} catch (IllegalArgumentException e) {
// ok
@@ -62,7 +62,7 @@ public void testParseTooLargeValue() {
public void testParseNonNumericValue() {
try {
- new PassivePorts("foo");
+ new PassivePorts("foo", false);
fail("Must fail due to non numerical port number");
} catch (IllegalArgumentException e) {
// ok
@@ -70,7 +70,7 @@ public void testParseNonNumericValue() {
}
public void testParseListOfValues() {
- PassivePorts ports = new PassivePorts("123, 456,\t\n789");
+ PassivePorts ports = new PassivePorts("123, 456,\t\n789", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(456, ports.reserveNextPort());
@@ -79,7 +79,7 @@ public void testParseListOfValues() {
}
public void testParseListOfValuesOrder() {
- PassivePorts ports = new PassivePorts("123, 789, 456");
+ PassivePorts ports = new PassivePorts("123, 789, 456", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(789, ports.reserveNextPort());
@@ -88,7 +88,7 @@ public void testParseListOfValuesOrder() {
}
public void testParseListOfValuesDuplicate() {
- PassivePorts ports = new PassivePorts("123, 789, 456, 789");
+ PassivePorts ports = new PassivePorts("123, 789, 456, 789", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(789, ports.reserveNextPort());
@@ -97,7 +97,7 @@ public void testParseListOfValuesDuplicate() {
}
public void testParseSimpleRange() {
- PassivePorts ports = new PassivePorts("123-125");
+ PassivePorts ports = new PassivePorts("123-125", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(124, ports.reserveNextPort());
@@ -106,7 +106,7 @@ public void testParseSimpleRange() {
}
public void testParseMultipleRanges() {
- PassivePorts ports = new PassivePorts("123-125, 127-128, 130-132");
+ PassivePorts ports = new PassivePorts("123-125, 127-128, 130-132", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(124, ports.reserveNextPort());
@@ -120,7 +120,7 @@ public void testParseMultipleRanges() {
}
public void testParseMixedRangeAndSingle() {
- PassivePorts ports = new PassivePorts("123-125, 126, 128-129");
+ PassivePorts ports = new PassivePorts("123-125, 126, 128-129", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(124, ports.reserveNextPort());
@@ -132,7 +132,7 @@ public void testParseMixedRangeAndSingle() {
}
public void testParseOverlapingRanges() {
- PassivePorts ports = new PassivePorts("123-125, 124-126");
+ PassivePorts ports = new PassivePorts("123-125, 124-126", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(124, ports.reserveNextPort());
@@ -142,7 +142,7 @@ public void testParseOverlapingRanges() {
}
public void testParseOverlapingRangesorder() {
- PassivePorts ports = new PassivePorts("124-126, 123-125");
+ PassivePorts ports = new PassivePorts("124-126, 123-125", false);
assertEquals(124, ports.reserveNextPort());
assertEquals(125, ports.reserveNextPort());
@@ -152,7 +152,7 @@ public void testParseOverlapingRangesorder() {
}
public void testParseOpenLowerRange() {
- PassivePorts ports = new PassivePorts("9, -3");
+ PassivePorts ports = new PassivePorts("9, -3", false);
assertEquals(9, ports.reserveNextPort());
assertEquals(1, ports.reserveNextPort());
@@ -162,7 +162,7 @@ public void testParseOpenLowerRange() {
}
public void testParseOpenUpperRange() {
- PassivePorts ports = new PassivePorts("65533-");
+ PassivePorts ports = new PassivePorts("65533-", false);
assertEquals(65533, ports.reserveNextPort());
assertEquals(65534, ports.reserveNextPort());
@@ -171,7 +171,7 @@ public void testParseOpenUpperRange() {
}
public void testParseOpenUpperRange3() {
- PassivePorts ports = new PassivePorts("65533-, 65532-");
+ PassivePorts ports = new PassivePorts("65533-, 65532-", false);
assertEquals(65533, ports.reserveNextPort());
assertEquals(65534, ports.reserveNextPort());
@@ -181,7 +181,7 @@ public void testParseOpenUpperRange3() {
}
public void testParseOpenUpperRange2() {
- PassivePorts ports = new PassivePorts("65533-, 1");
+ PassivePorts ports = new PassivePorts("65533-, 1", false);
assertEquals(65533, ports.reserveNextPort());
assertEquals(65534, ports.reserveNextPort());
@@ -191,7 +191,7 @@ public void testParseOpenUpperRange2() {
}
public void testParseRelease() {
- PassivePorts ports = new PassivePorts("123, 456,789");
+ PassivePorts ports = new PassivePorts("123, 456,789", false);
assertEquals(123, ports.reserveNextPort());
assertEquals(456, ports.reserveNextPort());
From 3165e36b6e2e57100518eca542df2bdb3e0fea5c Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 7 Jun 2009 20:10:49 +0000
Subject: [PATCH 025/101] Adding some comments to the new code in FTPSERVER-302
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@782449 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/impl/PassivePorts.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index b64804c8..9851deb1 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -165,6 +165,9 @@ public PassivePorts(final int[] passivePorts, boolean checkIfBound) {
this.checkIfBound = checkIfBound;
}
+ /**
+ * Checks that the port of not bound by another application
+ */
private boolean checkPortUnbound(int port) {
// is this check disabled?
if(!checkIfBound) {
@@ -182,7 +185,7 @@ private boolean checkPortUnbound(int port) {
ss.setReuseAddress(true);
return true;
} catch (IOException e) {
- // port probably in used, check next
+ // port probably in use, check next
return false;
} finally {
if(ss != null) {
From ea65c94fc212a8bdc4c55b30e4964c39dfc16eff Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 8 Jun 2009 20:13:36 +0000
Subject: [PATCH 026/101] Configuring the correct deploy path for releases
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@782760 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index bd158c92..f910846a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -418,13 +418,13 @@
ftplet-apicoredistribution
- examples
+ examples
- apache.snapshots
- Apache Development Snapshot Repository
- scp://people.apache.org/www/people.apache.org/repo/m2-incubating-repository/
+ apache.releases
+ Apache Release Distribution Repository
+ scpexe://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository
From ff7ecd07600599accbfd341f54c5943067ae4ff1 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Tue, 9 Jun 2009 19:34:16 +0000
Subject: [PATCH 027/101] Upgrading to MINA 2.0.0-M6
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@783104 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index f910846a..be17e057 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,7 +150,7 @@
org.apache.minamina-core
- 2.0.0-M4
+ 2.0.0-M6org.easymock
@@ -160,7 +160,7 @@
org.easymockeasymockclassextension
-
+
@@ -172,8 +172,8 @@
commons-loggingcommons-logging
-
-
+
+
From efc363cb5be6620429a61acf08a6c35957668104 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 10 Jun 2009 21:32:40 +0000
Subject: [PATCH 028/101] Using the site URL in author tags (FTPSERVER-314)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@783526 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/examples/EmbeddingFtpServer.java | 7 +++++--
.../org/apache/ftpserver/examples/ManagingUsers.java | 4 +++-
.../main/java/org/apache/ftpserver/ConnectionConfig.java | 2 +-
.../org/apache/ftpserver/ConnectionConfigFactory.java | 2 +-
.../apache/ftpserver/DataConnectionConfiguration.java | 3 ++-
.../ftpserver/DataConnectionConfigurationFactory.java | 3 ++-
.../org/apache/ftpserver/DataConnectionException.java | 3 ++-
core/src/main/java/org/apache/ftpserver/FtpServer.java | 3 ++-
.../ftpserver/FtpServerConfigurationException.java | 3 ++-
.../main/java/org/apache/ftpserver/FtpServerFactory.java | 5 +++--
.../org/apache/ftpserver/command/AbstractCommand.java | 3 ++-
.../main/java/org/apache/ftpserver/command/Command.java | 3 ++-
.../org/apache/ftpserver/command/CommandFactory.java | 3 ++-
.../apache/ftpserver/command/CommandFactoryFactory.java | 3 ++-
.../apache/ftpserver/command/NotSupportedCommand.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/ABOR.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/ACCT.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/APPE.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/AUTH.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/CDUP.java | 3 ++-
.../main/java/org/apache/ftpserver/command/impl/CWD.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/DELE.java | 3 ++-
.../ftpserver/command/impl/DefaultCommandFactory.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/EPRT.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/EPSV.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/FEAT.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/HELP.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/LANG.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/LIST.java | 3 ++-
.../main/java/org/apache/ftpserver/command/impl/MD5.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/MDTM.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/MFMT.java | 3 ++-
.../main/java/org/apache/ftpserver/command/impl/MKD.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/MLSD.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/MLST.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/MODE.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/NLST.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/NOOP.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/OPTS.java | 3 ++-
.../org/apache/ftpserver/command/impl/OPTS_MLST.java | 3 ++-
.../org/apache/ftpserver/command/impl/OPTS_UTF8.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/PASS.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/PASV.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/PBSZ.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/PORT.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/PROT.java | 3 ++-
.../main/java/org/apache/ftpserver/command/impl/PWD.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/QUIT.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/REIN.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/REST.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/RETR.java | 3 ++-
.../main/java/org/apache/ftpserver/command/impl/RMD.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/RNFR.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/RNTO.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/SITE.java | 3 ++-
.../org/apache/ftpserver/command/impl/SITE_DESCUSER.java | 3 ++-
.../org/apache/ftpserver/command/impl/SITE_HELP.java | 3 ++-
.../org/apache/ftpserver/command/impl/SITE_STAT.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/SITE_WHO.java | 3 ++-
.../org/apache/ftpserver/command/impl/SITE_ZONE.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/SIZE.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/STAT.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/STOR.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/STOU.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/STRU.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/SYST.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/TYPE.java | 3 ++-
.../java/org/apache/ftpserver/command/impl/USER.java | 3 ++-
.../ftpserver/command/impl/listing/DirectoryLister.java | 3 ++-
.../ftpserver/command/impl/listing/FileFilter.java | 3 ++-
.../ftpserver/command/impl/listing/FileFormater.java | 3 ++-
.../ftpserver/command/impl/listing/LISTFileFormater.java | 3 ++-
.../ftpserver/command/impl/listing/ListArgument.java | 3 ++-
.../command/impl/listing/ListArgumentParser.java | 3 ++-
.../ftpserver/command/impl/listing/MLSTFileFormater.java | 3 ++-
.../ftpserver/command/impl/listing/NLSTFileFormater.java | 3 ++-
.../ftpserver/command/impl/listing/RegexFileFilter.java | 3 ++-
.../command/impl/listing/VisibleFileFilter.java | 3 ++-
.../spring/CommandFactoryBeanDefinitionParser.java | 3 ++-
.../config/spring/FileSystemBeanDefinitionParser.java | 3 ++-
.../config/spring/FtpServerNamespaceHandler.java | 3 ++-
.../config/spring/ListenerBeanDefinitionParser.java | 3 ++-
.../config/spring/ServerBeanDefinitionParser.java | 3 ++-
.../org/apache/ftpserver/config/spring/SpringUtil.java | 3 ++-
.../config/spring/UserManagerBeanDefinitionParser.java | 3 ++-
.../filesystem/nativefs/NativeFileSystemFactory.java | 3 ++-
.../filesystem/nativefs/impl/NameEqualsFileFilter.java | 3 ++-
.../filesystem/nativefs/impl/NativeFileSystemView.java | 4 ++--
.../filesystem/nativefs/impl/NativeFtpFile.java | 3 ++-
.../ftpserver/ftpletcontainer/FtpletContainer.java | 3 ++-
.../ftpletcontainer/impl/DefaultFtpletContainer.java | 3 ++-
.../apache/ftpserver/impl/DefaultConnectionConfig.java | 2 +-
.../impl/DefaultDataConnectionConfiguration.java | 3 ++-
.../org/apache/ftpserver/impl/DefaultFtpHandler.java | 4 +---
.../org/apache/ftpserver/impl/DefaultFtpRequest.java | 3 ++-
.../java/org/apache/ftpserver/impl/DefaultFtpServer.java | 3 ++-
.../apache/ftpserver/impl/DefaultFtpServerContext.java | 4 ++--
.../org/apache/ftpserver/impl/DefaultFtpSession.java | 3 ++-
.../org/apache/ftpserver/impl/DefaultFtpStatistics.java | 3 ++-
.../java/org/apache/ftpserver/impl/FileObserver.java | 3 ++-
.../main/java/org/apache/ftpserver/impl/FtpHandler.java | 2 +-
.../java/org/apache/ftpserver/impl/FtpIoSession.java | 2 +-
.../java/org/apache/ftpserver/impl/FtpServerContext.java | 3 ++-
.../java/org/apache/ftpserver/impl/IODataConnection.java | 3 ++-
.../apache/ftpserver/impl/IODataConnectionFactory.java | 3 ++-
.../org/apache/ftpserver/impl/LocalizedFtpReply.java | 3 ++-
.../java/org/apache/ftpserver/impl/PassivePorts.java | 3 ++-
.../ftpserver/impl/ServerDataConnectionFactory.java | 2 +-
.../org/apache/ftpserver/impl/ServerFtpStatistics.java | 3 ++-
.../org/apache/ftpserver/impl/StatisticsObserver.java | 3 ++-
.../java/org/apache/ftpserver/listener/Listener.java | 3 ++-
.../org/apache/ftpserver/listener/ListenerFactory.java | 3 ++-
.../apache/ftpserver/listener/nio/AbstractListener.java | 4 ++--
.../apache/ftpserver/listener/nio/FtpHandlerAdapter.java | 4 +---
.../apache/ftpserver/listener/nio/FtpLoggingFilter.java | 5 ++---
.../ftpserver/listener/nio/FtpResponseEncoder.java | 3 ++-
.../listener/nio/FtpServerProtocolCodecFactory.java | 3 ++-
.../org/apache/ftpserver/listener/nio/NioListener.java | 3 ++-
.../src/main/java/org/apache/ftpserver/main/AddUser.java | 3 ++-
.../main/java/org/apache/ftpserver/main/CommandLine.java | 4 ++--
core/src/main/java/org/apache/ftpserver/main/Daemon.java | 4 ++--
.../org/apache/ftpserver/message/MessageResource.java | 4 ++--
.../apache/ftpserver/message/MessageResourceFactory.java | 3 ++-
.../ftpserver/message/impl/DefaultMessageResource.java | 5 ++---
.../main/java/org/apache/ftpserver/ssl/ClientAuth.java | 3 ++-
.../java/org/apache/ftpserver/ssl/SslConfiguration.java | 3 ++-
.../apache/ftpserver/ssl/SslConfigurationFactory.java | 3 ++-
.../org/apache/ftpserver/ssl/impl/AliasKeyManager.java | 3 ++-
.../ftpserver/ssl/impl/DefaultSslConfiguration.java | 3 ++-
.../ftpserver/ssl/impl/ExtendedAliasKeyManager.java | 3 ++-
.../ftpserver/usermanager/AnonymousAuthentication.java | 3 ++-
.../usermanager/ClearTextPasswordEncryptor.java | 3 ++-
.../ftpserver/usermanager/DbUserManagerFactory.java | 3 ++-
.../ftpserver/usermanager/Md5PasswordEncryptor.java | 3 ++-
.../apache/ftpserver/usermanager/PasswordEncryptor.java | 3 ++-
.../usermanager/PropertiesUserManagerFactory.java | 3 ++-
.../ftpserver/usermanager/SaltedPasswordEncryptor.java | 3 ++-
.../apache/ftpserver/usermanager/UserManagerFactory.java | 3 ++-
.../usermanager/UsernamePasswordAuthentication.java | 3 ++-
.../ftpserver/usermanager/impl/AbstractUserManager.java | 3 ++-
.../org/apache/ftpserver/usermanager/impl/BaseUser.java | 3 ++-
.../usermanager/impl/ConcurrentLoginPermission.java | 3 ++-
.../usermanager/impl/ConcurrentLoginRequest.java | 3 ++-
.../apache/ftpserver/usermanager/impl/DbUserManager.java | 3 ++-
.../usermanager/impl/PropertiesUserManager.java | 3 ++-
.../usermanager/impl/TransferRatePermission.java | 3 ++-
.../ftpserver/usermanager/impl/TransferRateRequest.java | 3 ++-
.../apache/ftpserver/usermanager/impl/UserMetadata.java | 3 ++-
.../ftpserver/usermanager/impl/WritePermission.java | 3 ++-
.../apache/ftpserver/usermanager/impl/WriteRequest.java | 3 ++-
.../java/org/apache/ftpserver/util/BaseProperties.java | 3 ++-
.../main/java/org/apache/ftpserver/util/ClassUtils.java | 2 +-
.../main/java/org/apache/ftpserver/util/DateUtils.java | 3 ++-
.../java/org/apache/ftpserver/util/EncryptUtils.java | 3 ++-
.../org/apache/ftpserver/util/FileRegularFilter.java | 3 ++-
.../ftpserver/util/IllegalInetAddressException.java | 3 ++-
.../org/apache/ftpserver/util/IllegalPortException.java | 3 ++-
.../src/main/java/org/apache/ftpserver/util/IoUtils.java | 3 ++-
core/src/main/java/org/apache/ftpserver/util/OS.java | 3 ++-
.../main/java/org/apache/ftpserver/util/RegularExpr.java | 3 ++-
.../org/apache/ftpserver/util/SocketAddressEncoder.java | 3 ++-
.../main/java/org/apache/ftpserver/util/StringUtils.java | 3 ++-
.../ftpserver/clienttests/ActiveModeReplyTest.java | 2 +-
.../ftpserver/clienttests/BindExceptionParallelTest.java | 2 +-
.../ftpserver/clienttests/BindExceptionSerialTest.java | 8 ++++----
.../ftpserver/clienttests/CdCaseInsensitiveTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/CdTest.java | 2 +-
.../apache/ftpserver/clienttests/ClientTestTemplate.java | 2 +-
.../ftpserver/clienttests/ConcatedCommandsTest.java | 2 +-
.../ftpserver/clienttests/ConnectPickPortTest.java | 3 +--
.../org/apache/ftpserver/clienttests/ConnectTest.java | 2 +-
.../apache/ftpserver/clienttests/CustomMaxLoginTest.java | 2 +-
.../ftpserver/clienttests/DataTransferTimeoutTest.java | 5 +----
.../org/apache/ftpserver/clienttests/DecoderTest.java | 2 +-
.../ftpserver/clienttests/DefaultMaxLoginTest.java | 2 +-
.../org/apache/ftpserver/clienttests/DeleteTest.java | 2 +-
.../org/apache/ftpserver/clienttests/DirectoryTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/FeatTest.java | 2 +-
.../org/apache/ftpserver/clienttests/FtpMd5Test.java | 2 +-
.../java/org/apache/ftpserver/clienttests/HelpTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/I18NTest.java | 2 +-
.../ftpserver/clienttests/InetAddressBlacklistTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/LangTest.java | 2 +-
.../apache/ftpserver/clienttests/ListPassiveTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/ListTest.java | 2 +-
.../apache/ftpserver/clienttests/LoginNoAnonTest.java | 3 +--
.../java/org/apache/ftpserver/clienttests/LoginTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/MDTMTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/MFMTTest.java | 5 +----
.../apache/ftpserver/clienttests/PasvAddressTest.java | 2 +-
.../clienttests/PasvAddressWithHostnameTest.java | 5 +----
.../java/org/apache/ftpserver/clienttests/PasvTest.java | 2 +-
.../apache/ftpserver/clienttests/PasvUsedPortTest.java | 2 +-
.../org/apache/ftpserver/clienttests/RenameTest.java | 2 +-
.../ftpserver/clienttests/RetrievePassiveTest.java | 2 +-
.../org/apache/ftpserver/clienttests/RetrieveTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/RmDirTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/SiteTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/SizeTest.java | 2 +-
.../apache/ftpserver/clienttests/StorePassiveTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/StoreTest.java | 2 +-
.../ftpserver/clienttests/SubnetBlacklistTest.java | 2 +-
.../apache/ftpserver/clienttests/SuspendResumeTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/SystTest.java | 2 +-
.../java/org/apache/ftpserver/clienttests/TypeTest.java | 2 +-
.../ftpserver/clienttests/UnlimitedMaxLoginTest.java | 2 +-
.../commands/impl/DefaultCommandFactoryTest.java | 2 +-
.../commands/impl/listing/DirectoryListerTest.java | 2 +-
.../commands/impl/listing/LISTFileFormaterTest.java | 2 +-
.../commands/impl/listing/ListArgumentParserTest.java | 2 +-
.../commands/impl/listing/ListArgumentTest.java | 2 +-
.../commands/impl/listing/MLSTFileFormaterTest.java | 2 +-
.../commands/impl/listing/NLSTFileFormaterTest.java | 2 +-
.../ftpserver/config/spring/DbUserManagerConfigTest.java | 3 +--
.../config/spring/FileUserManagerConfigTest.java | 3 +--
.../ftpserver/config/spring/FtpletsConfigTest.java | 9 +--------
.../apache/ftpserver/config/spring/MockUserManager.java | 3 +++
.../apache/ftpserver/config/spring/MyCustomListener.java | 2 +-
.../ftpserver/config/spring/PropertyPlaceholderTest.java | 2 +-
.../apache/ftpserver/config/spring/SpringConfigTest.java | 2 +-
.../config/spring/SpringConfigTestTemplate.java | 2 +-
.../org/apache/ftpserver/config/spring/TestFtplet.java | 2 +-
.../filesystem/nativefs/impl/FileSystemViewTemplate.java | 2 +-
.../filesystem/nativefs/impl/FtpFileTestTemplate.java | 2 +-
.../filesystem/nativefs/impl/NativeFileObjectTest.java | 2 +-
.../nativefs/impl/NativeFileSystemViewTest.java | 2 +-
.../ftpletcontainer/DefaultFtpLetContainerTest.java | 2 +-
.../ftpletcontainer/FtpLetContainerTestTemplate.java | 3 +++
.../ftpserver/ftpletcontainer/FtpLetOnConnectTest.java | 7 +------
.../ftpletcontainer/FtpLetReturnDefaultTest.java | 3 +--
.../ftpletcontainer/FtpLetReturnDisconnectTest.java | 3 +--
.../ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java | 3 +--
.../ftpletcontainer/FtpLetThrowFtpExceptionTest.java | 2 +-
.../ftpletcontainer/FtpLetThrowIOExceptionTest.java | 2 +-
.../ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java | 2 +-
.../org/apache/ftpserver/ftpletcontainer/MockFtplet.java | 2 +-
.../ftpserver/ftpletcontainer/MockFtpletCallback.java | 2 +-
.../org/apache/ftpserver/impl/DefaultFtpReplyTest.java | 2 +-
.../org/apache/ftpserver/impl/DefaultFtpServerTest.java | 7 +++----
.../org/apache/ftpserver/impl/FtpRequestImplTest.java | 2 +-
.../org/apache/ftpserver/impl/FtpStatisticsImplTest.java | 2 +-
.../java/org/apache/ftpserver/impl/PassivePortsTest.java | 2 +-
.../ftpserver/impl/ServerFtpStatisticsTestTemplate.java | 2 +-
.../ftpserver/ssl/ExplicitSecurityTestTemplate.java | 2 +-
.../ftpserver/ssl/ImplicitSecurityTestTemplate.java | 2 +-
.../org/apache/ftpserver/ssl/MinaCipherSuitesTest.java | 2 +-
.../org/apache/ftpserver/ssl/MinaClientAuthTest.java | 2 +-
.../org/apache/ftpserver/ssl/MinaExplicitSSLTest.java | 2 +-
.../org/apache/ftpserver/ssl/MinaExplicitTLSTest.java | 2 +-
.../apache/ftpserver/ssl/MinaImplicitClientAuthTest.java | 2 +-
.../ftpserver/ssl/MinaImplicitDataChannelTest.java | 3 ++-
.../org/apache/ftpserver/ssl/MinaImplicitSSLTest.java | 2 +-
.../org/apache/ftpserver/ssl/MinaImplicitTLSTest.java | 2 +-
.../java/org/apache/ftpserver/ssl/SSLTestTemplate.java | 6 +-----
.../apache/ftpserver/ssl/impl/AliasKeymanagerTest.java | 2 +-
.../ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java | 2 +-
.../test/java/org/apache/ftpserver/test/TestUtil.java | 2 +-
.../usermanager/UsernamePasswordAuthenticationTest.java | 4 +---
.../apache/ftpserver/usermanager/impl/BaseUserTest.java | 3 +--
.../usermanager/impl/ClearTextDbUserManagerTest.java | 2 +-
.../usermanager/impl/ClearTextPasswordEncryptorTest.java | 2 +-
.../usermanager/impl/ConcurrentLoginPermissionTest.java | 5 +----
.../ftpserver/usermanager/impl/DbUserManagerTest.java | 2 +-
.../usermanager/impl/Md5PasswordEncryptorTest.java | 2 +-
.../usermanager/impl/PropertiesUserManagerTest.java | 2 +-
.../usermanager/impl/SaltedPasswordEncryptorTest.java | 2 +-
.../usermanager/impl/UserManagerTestTemplate.java | 9 +--------
.../impl/VolatilePropertiesUserManagerTest.java | 2 +-
.../ftpserver/usermanager/impl/WritePermissionTest.java | 5 +----
.../org/apache/ftpserver/util/BasePropertiesTest.java | 2 +-
.../java/org/apache/ftpserver/util/EncryptUtilsTest.java | 2 +-
.../java/org/apache/ftpserver/util/RegularExprTest.java | 2 +-
.../apache/ftpserver/util/SocketAddressEncoderTest.java | 2 +-
.../java/org/apache/ftpserver/ftplet/Authentication.java | 3 ++-
.../ftpserver/ftplet/AuthenticationFailedException.java | 3 ++-
.../main/java/org/apache/ftpserver/ftplet/Authority.java | 3 ++-
.../apache/ftpserver/ftplet/AuthorizationRequest.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/DataConnection.java | 3 ++-
.../apache/ftpserver/ftplet/DataConnectionFactory.java | 3 ++-
.../main/java/org/apache/ftpserver/ftplet/DataType.java | 3 ++-
.../org/apache/ftpserver/ftplet/DefaultFtpReply.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/DefaultFtplet.java | 3 ++-
.../org/apache/ftpserver/ftplet/FileSystemFactory.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/FileSystemView.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/FtpException.java | 3 ++-
.../main/java/org/apache/ftpserver/ftplet/FtpFile.java | 3 ++-
.../main/java/org/apache/ftpserver/ftplet/FtpReply.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/FtpRequest.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/FtpSession.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/FtpStatistics.java | 3 ++-
.../main/java/org/apache/ftpserver/ftplet/Ftplet.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/FtpletContext.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/FtpletResult.java | 3 ++-
.../main/java/org/apache/ftpserver/ftplet/Structure.java | 3 ++-
.../src/main/java/org/apache/ftpserver/ftplet/User.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/UserManager.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/DataTypeTest.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/ExampleFtplet.java | 3 ++-
.../java/org/apache/ftpserver/ftplet/StructureTest.java | 3 ++-
299 files changed, 493 insertions(+), 367 deletions(-)
diff --git a/core/src/examples/java/org/apache/ftpserver/examples/EmbeddingFtpServer.java b/core/src/examples/java/org/apache/ftpserver/examples/EmbeddingFtpServer.java
index 6b970b09..3e3d5576 100644
--- a/core/src/examples/java/org/apache/ftpserver/examples/EmbeddingFtpServer.java
+++ b/core/src/examples/java/org/apache/ftpserver/examples/EmbeddingFtpServer.java
@@ -1,5 +1,3 @@
-package org.apache.ftpserver.examples;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -19,6 +17,8 @@
* under the License.
*/
+package org.apache.ftpserver.examples;
+
import java.io.File;
import org.apache.ftpserver.FtpServer;
@@ -27,6 +27,9 @@
import org.apache.ftpserver.ssl.SslConfigurationFactory;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
+/**
+* @author Apache MINA Project*
+*/
public class EmbeddingFtpServer {
public static void main(String[] args) throws Exception {
diff --git a/core/src/examples/java/org/apache/ftpserver/examples/ManagingUsers.java b/core/src/examples/java/org/apache/ftpserver/examples/ManagingUsers.java
index bec4802d..dc86b62c 100644
--- a/core/src/examples/java/org/apache/ftpserver/examples/ManagingUsers.java
+++ b/core/src/examples/java/org/apache/ftpserver/examples/ManagingUsers.java
@@ -21,12 +21,14 @@
import java.io.File;
-import org.apache.ftpserver.ftplet.User;
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor;
import org.apache.ftpserver.usermanager.impl.BaseUser;
+/**
+* @author Apache MINA Project*
+*/
public class ManagingUsers {
public static void main(String[] args) throws Exception {
diff --git a/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java b/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java
index a8c125f5..0a415284 100644
--- a/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java
+++ b/core/src/main/java/org/apache/ftpserver/ConnectionConfig.java
@@ -23,7 +23,7 @@
* Interface for providing the configuration for the control socket connections.
*
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project
*/
public interface ConnectionConfig {
diff --git a/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java b/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java
index deeb235e..188c0c85 100644
--- a/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/ConnectionConfigFactory.java
@@ -24,7 +24,7 @@
/**
* Factory for creating connection configurations
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project
*/
public class ConnectionConfigFactory {
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java b/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java
index d6689bc2..6cdd11e8 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionConfiguration.java
@@ -26,7 +26,8 @@
/**
* Data connection configuration interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface DataConnectionConfiguration {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
index 5da12b40..a0482bf5 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
@@ -31,7 +31,8 @@
/**
* Data connection factory
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DataConnectionConfigurationFactory {
private Logger log = LoggerFactory.getLogger(DataConnectionConfigurationFactory.class);
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionException.java b/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
index 6f492e14..4e8fd8e0 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
@@ -24,7 +24,8 @@
/**
* Thrown if a data connection can not be established
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DataConnectionException extends FtpException {
private static final long serialVersionUID = -1328383839917648987L;
diff --git a/core/src/main/java/org/apache/ftpserver/FtpServer.java b/core/src/main/java/org/apache/ftpserver/FtpServer.java
index 062d711c..6f84e496 100644
--- a/core/src/main/java/org/apache/ftpserver/FtpServer.java
+++ b/core/src/main/java/org/apache/ftpserver/FtpServer.java
@@ -27,7 +27,8 @@
* thread. Server implementation is used to create the server
* socket and handle client connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpServer {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java b/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java
index 6b154a61..ae19a520 100644
--- a/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java
+++ b/core/src/main/java/org/apache/ftpserver/FtpServerConfigurationException.java
@@ -23,7 +23,8 @@
* Exception used during startup to indicate that the configuration is not
* correct.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FtpServerConfigurationException extends RuntimeException {
private static final long serialVersionUID = -1328432839915898987L;
diff --git a/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java b/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
index 4cccb51c..cac1aa8b 100644
--- a/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
@@ -27,8 +27,8 @@
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.ftpletcontainer.impl.DefaultFtpletContainer;
-import org.apache.ftpserver.impl.DefaultFtpServerContext;
import org.apache.ftpserver.impl.DefaultFtpServer;
+import org.apache.ftpserver.impl.DefaultFtpServerContext;
import org.apache.ftpserver.listener.Listener;
import org.apache.ftpserver.message.MessageResource;
@@ -36,7 +36,8 @@
* This is the starting point of all the servers. Creates server instances based on
* the provided configuration.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FtpServerFactory {
private DefaultFtpServerContext serverContext;
diff --git a/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java b/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java
index 0c05bbb0..43a06061 100644
--- a/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java
+++ b/core/src/main/java/org/apache/ftpserver/command/AbstractCommand.java
@@ -23,7 +23,8 @@
/**
* Common base class recommended for {@link Command} implementations
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public abstract class AbstractCommand implements Command {
}
diff --git a/core/src/main/java/org/apache/ftpserver/command/Command.java b/core/src/main/java/org/apache/ftpserver/command/Command.java
index 05e5d390..24c1dc1c 100644
--- a/core/src/main/java/org/apache/ftpserver/command/Command.java
+++ b/core/src/main/java/org/apache/ftpserver/command/Command.java
@@ -29,7 +29,8 @@
/**
* This interface encapsulates all the FTP commands.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface Command {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java b/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java
index 2c381db3..ced5bdad 100644
--- a/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/CommandFactory.java
@@ -22,7 +22,8 @@
/**
* Command factory interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface CommandFactory {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java b/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
index 5f4e5afa..ad3a2316 100644
--- a/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
@@ -73,7 +73,8 @@
/**
* Factory for {@link CommandFactory} instances
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class CommandFactoryFactory {
private static final HashMap DEFAULT_COMMAND_MAP = new HashMap();
diff --git a/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java b/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java
index 2ef4f3ca..0a7f14f8 100644
--- a/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java
+++ b/core/src/main/java/org/apache/ftpserver/command/NotSupportedCommand.java
@@ -31,7 +31,8 @@
* A command used primarily for overriding already installed commands when one
* wants to disable the command.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NotSupportedCommand extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java b/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java
index 400ef866..e1583bec 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/ABOR.java
@@ -40,7 +40,8 @@
* Current implementation does not do anything. As here data transfers are not
* multi-threaded.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ABOR extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java b/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java
index e701a8fa..e57c6c4f 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/ACCT.java
@@ -36,7 +36,8 @@
* Acknowledges the ACCT (account) command with a 202 reply. The command however
* is irrelevant to any workings.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ACCT extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java b/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
index c7fb4bc1..c506d2e5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/APPE.java
@@ -52,7 +52,8 @@
* be appended to that file; otherwise the file specified in the pathname shall
* be created at the server site.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class APPE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(APPE.class);
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 8358ba1d..ff4cd0d9 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
@@ -40,7 +40,8 @@
*
* This server supports explicit SSL support.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class AUTH extends AbstractCommand {
private static final String SSL_SESSION_FILTER_NAME = "sslSessionFilter";
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java b/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java
index 8b8854e8..90fee6ef 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/CDUP.java
@@ -42,7 +42,8 @@
* systems having different syntaxes for naming the parent directory. The reply
* codes shall be identical to the reply codes of CWD.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class CDUP extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(CDUP.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java b/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java
index c1d3faab..c92cc1d6 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/CWD.java
@@ -42,7 +42,8 @@
* Transfer parameters are similarly unchanged. The argument is a pathname
* specifying a directory.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class CWD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(CWD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java b/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
index fbe85de3..3035e269 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
@@ -41,7 +41,8 @@
* This command causes the file specified in the pathname to be deleted at the
* server site.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DELE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(DELE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java b/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
index 9597c1b0..dea5a2e4 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
@@ -34,7 +34,8 @@
*
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultCommandFactory implements CommandFactory {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java b/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
index 41ae58a5..1769daa5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
@@ -43,7 +43,8 @@
*
* EPRT
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class EPRT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(EPRT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java b/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java
index 9c8c1483..09c95830 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/EPSV.java
@@ -44,7 +44,8 @@
* response code for entering passive mode using an extended address MUST be
* 229.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class EPSV extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java
index 474baad9..e1558380 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/FEAT.java
@@ -37,7 +37,8 @@
* a server supports the FEAT command then it MUST advertise supported AUTH,
* PBSZ and PROT commands in the reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FEAT extends AbstractCommand {
public void execute(final FtpIoSession session,
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java b/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java
index 7adab29f..6a7ebcff 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/HELP.java
@@ -39,7 +39,8 @@
* may take an argument (e.g., any command name) and return more specific
* information as a response.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class HELP extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java b/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java
index 0ed01461..01422ccb 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/LANG.java
@@ -38,7 +38,8 @@
* process to determine in which language to present server greetings and the
* textual part of command responses.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class LANG extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java b/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
index b7be6b09..86f142e2 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
@@ -54,7 +54,8 @@
* A null argument implies the user's current working or default directory. The
* data transfer is over the data connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class LIST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(LIST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
index b5e9fe1b..eccc88b6 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
@@ -45,7 +45,8 @@
* Returns the MD5 value for a file or multiple files according to
* draft-twine-ftpmd5-00.txt.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MD5 extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MD5.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java b/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java
index f1b82f94..d67cd8bc 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MDTM.java
@@ -40,7 +40,8 @@
*
* Returns the date and time of when a file was modified.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MDTM extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MDTM.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java b/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java
index 03da4d24..db515b85 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MFMT.java
@@ -40,7 +40,8 @@
* Specified in the following document:
* http://www.omz13.com/downloads/draft-somers-ftp-mfxx-00.html#anchor8
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MFMT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MFMT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java b/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
index 2f8c78b8..b497f5db 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
@@ -43,7 +43,8 @@
* a directory (if the pathname is absolute) or as a subdirectory of the current
* working directory (if the pathname is relative).
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MKD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MKD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java b/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
index 0ea31272..f1f49aa9 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
@@ -52,7 +52,8 @@
* files in the specified directory. A null argument implies the user's current
* working or default directory. The data transfer is over the data connection
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MLSD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MLSD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java
index ddb10693..2c137c8f 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MLST.java
@@ -43,7 +43,8 @@
*
* Returns info on the file over the control connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MLST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(MLST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java b/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java
index 698b6001..4271b730 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MODE.java
@@ -36,7 +36,8 @@
* The argument is a single Telnet character code specifying the data transfer
* modes described in the Section on Transmission Modes.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MODE extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
index e6ea06e3..61bdf59a 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
@@ -53,7 +53,8 @@
* descriptor; a null argument implies the current directory. The server will
* return a stream of names of files and no other information.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NLST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(NLST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java b/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java
index 3e697a56..2c95d11f 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/NOOP.java
@@ -37,7 +37,8 @@
* This command does not affect any parameters or previously entered commands.
* It specifies no action other than that the server send an OK reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NOOP extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java
index a310924d..cc0742c3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS.java
@@ -41,7 +41,8 @@
* This command shall cause the server use optional features for the command
* specified.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class OPTS extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(OPTS.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
index dc994542..d8375c40 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
@@ -36,7 +36,8 @@
* Client-Server listing negotation. Instruct the server what listing types to
* include in machine directory/file listings.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class OPTS_MLST extends AbstractCommand {
private final static String[] AVAILABLE_TYPES = { "Size", "Modify", "Type",
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java
index e031b4c6..a38d1bc6 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_UTF8.java
@@ -36,7 +36,8 @@
* UTF-8 and back. Note that the servers default encoding is UTF-8. So this
* command has no effect.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class OPTS_UTF8 extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java b/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
index 0d204ff2..e889131d 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PASS.java
@@ -50,7 +50,8 @@
* The argument field is a Telnet string specifying the user's password. This
* command must be immediately preceded by the user name command.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PASS extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(PASS.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java b/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java
index 9aa4b502..6ef1bf51 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PASV.java
@@ -47,7 +47,8 @@
* upon receipt of a transfer command. The response to this command includes the
* host and port address this server is listening on.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PASV extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(PASV.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java b/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java
index 945aefb6..9f7d0237 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PBSZ.java
@@ -34,7 +34,8 @@
*
* Protection buffer size.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PBSZ extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java b/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
index de8f51dd..6d2c7c03 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
@@ -55,7 +55,8 @@
*
* where h1 is the high order 8 bits of the internet host address.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PORT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(PORT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java b/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
index addecc16..119309c2 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PROT.java
@@ -37,7 +37,8 @@
*
* Data channel protection level.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PROT extends AbstractCommand {
private SslConfiguration getSslConfiguration(final FtpIoSession session) {
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java b/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java
index 761c198c..bb6902c9 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PWD.java
@@ -38,7 +38,8 @@
* This command causes the name of the current working directory to be returned
* in the reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PWD extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java b/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
index 45093f03..128bb527 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/QUIT.java
@@ -38,7 +38,8 @@
* This command terminates a USER and if file transfer is not in progress, the
* server closes the control connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class QUIT extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(QUIT.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java b/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java
index 3c1c25d2..e6d4385b 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/REIN.java
@@ -36,7 +36,8 @@
* This command flushes a USER, without affecting transfers in progress. The
* server state should otherwise be as when the user first connects.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class REIN extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/REST.java b/core/src/main/java/org/apache/ftpserver/command/impl/REST.java
index 5eadb7ff..a671af05 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/REST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/REST.java
@@ -41,7 +41,8 @@
* followed by the appropriate FTP service command which shall cause file
* transfer to resume.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class REST extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(REST.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java b/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
index b13cb287..ac3b4c88 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RETR.java
@@ -53,7 +53,8 @@
* connection. The status and contents of the file at the server site shall be
* unaffected.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class RETR extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RETR.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java b/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java
index 1eefb2ed..b934db76 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RMD.java
@@ -42,7 +42,8 @@
* a directory (if the pathname is absolute) or as a subdirectory of the current
* working directory (if the pathname is relative).
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class RMD extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RMD.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java b/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java
index 00d43567..9548ab96 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RNFR.java
@@ -41,7 +41,8 @@
* This command must be immediately followed by a "rename to" command specifying
* the new file pathname.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class RNFR extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RNFR.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java b/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java
index 14cd0b35..54b7cbf1 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/RNTO.java
@@ -41,7 +41,8 @@
* immediately preceding "rename from" command. Together the two commands cause
* a file to be renamed.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class RNTO extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(RNTO.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
index ddd43dc5..52d3291e 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
@@ -38,7 +38,8 @@
*
* Handle SITE command.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SITE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(SITE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
index e811b5c3..fdca6598 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
@@ -41,7 +41,8 @@
*
* This SITE command returns the specified user information.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SITE_DESCUSER extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(SITE_DESCUSER.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java
index 5f25b55e..bd4c9e47 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_HELP.java
@@ -34,7 +34,8 @@
*
* Show SITE help message.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SITE_HELP extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
index 0b8cb248..77e49ae9 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
@@ -38,7 +38,8 @@
*
* Show all statistics information.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SITE_STAT extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
index 2446cd48..245c8cd2 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
@@ -43,7 +43,8 @@
*
* Sends the list of all the connected users.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SITE_WHO extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java
index c4380f87..64d41afe 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_ZONE.java
@@ -36,7 +36,8 @@
*
* Displays the FTP server timezone in RFC 822 format.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SITE_ZONE extends AbstractCommand {
private final static SimpleDateFormat TIMEZONE_FMT = new SimpleDateFormat(
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java b/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java
index 1c659edc..99665fe5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SIZE.java
@@ -39,7 +39,8 @@
*
* Returns the size of the file in bytes.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SIZE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(SIZE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
index 2bf7439f..28b6867c 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
@@ -36,7 +36,8 @@
* This command shall cause a status response to be sent over the control
* connection in the form of a reply.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class STAT extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java b/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
index 4bffa56e..4a6a6051 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STOR.java
@@ -52,7 +52,8 @@
* shall be replaced by the data being transferred. A new file is created at the
* server site if the file specified in the pathname does not already exist.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class STOR extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(STOR.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java b/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
index 2bfd70e1..6b506f2e 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STOU.java
@@ -52,7 +52,8 @@
* 150 Transfer Started response must include the name generated, See RFC1123
* section 4.1.2.9
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class STOU extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(STOU.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java b/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java
index eee6a3b7..d86d0d01 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STRU.java
@@ -38,7 +38,8 @@
*
* The argument is a single Telnet character code specifying file structure.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class STRU extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(STRU.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java b/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java
index e40b2d0a..e2612de4 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SYST.java
@@ -35,7 +35,8 @@
*
* This command is used to find out the type of operating system at the server.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SYST extends AbstractCommand {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java b/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java
index 9abfc34a..48ee344e 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/TYPE.java
@@ -38,7 +38,8 @@
*
* The argument specifies the representation type.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class TYPE extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(TYPE.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/USER.java b/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
index d2f79bf7..8e98e362 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/USER.java
@@ -47,7 +47,8 @@
* system. This command will normally be the first command transmitted by the
* user after the control connections are made.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class USER extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(USER.class);
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
index f3105abb..ea7baeb5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
@@ -32,7 +32,8 @@
*
* This class prints file listing.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DirectoryLister {
private String traverseFiles(final List files,
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java
index bd6b446c..0fed5fc4 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFilter.java
@@ -27,7 +27,8 @@
*
* @see java.io.FileFilter
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FileFilter {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java
index ad0c8d0f..96eb4826 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/FileFormater.java
@@ -25,7 +25,8 @@
*
* Interface for formating output based on a {@link FtpFile}
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FileFormater {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
index ac729890..3493be0e 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
@@ -28,7 +28,8 @@
*
* Formats files according to the LIST specification
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class LISTFileFormater implements FileFormater {
private final static char DELIM = ' ';
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
index 6f6db035..b1002ed5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
@@ -23,7 +23,8 @@
*
* Contains the parsed argument for a list command (e.g. LIST or NLST)
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ListArgument {
private String file;
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
index e2e14c7a..87a7a5f6 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
@@ -25,7 +25,8 @@
*
* Parses a list argument (e.g. for LIST or NLST) into a {@link ListArgument}
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ListArgumentParser {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
index e480c3a8..2fcaeeeb 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
@@ -26,7 +26,8 @@
*
* Formats files according to the MLST specification
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MLSTFileFormater implements FileFormater {
private static final String[] DEFAULT_TYPES = new String[] { "Size",
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
index 8526b002..adbdffec 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
@@ -25,7 +25,8 @@
*
* Formats files according to the NLST specification
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NLSTFileFormater implements FileFormater {
private final static char[] NEWLINE = { '\r', '\n' };
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
index 04214458..490653ef 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
@@ -26,7 +26,8 @@
*
* Selects files which short name matches a regular expression
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class RegexFileFilter implements FileFilter {
private RegularExpr regex;
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
index 61f2fda3..e424983d 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
@@ -25,7 +25,8 @@
*
* Selects files that are visible
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class VisibleFileFilter implements FileFilter {
private FileFilter wrappedFilter;
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java
index f9b4d87e..6239cf03 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/CommandFactoryBeanDefinitionParser.java
@@ -35,7 +35,8 @@
/**
* Parses the FtpServer "commands" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class CommandFactoryBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java
index ccfb42e3..8aa1ff6b 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/FileSystemBeanDefinitionParser.java
@@ -30,7 +30,8 @@
/**
* Parses the FtpServer "native-filesystem" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FileSystemBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java b/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java
index b282cdae..ae0ddcc0 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/FtpServerNamespaceHandler.java
@@ -24,7 +24,8 @@
/**
* Registration point for FtpServer bean defintion parsers
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FtpServerNamespaceHandler extends NamespaceHandlerSupport {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
index 3ab92341..dbe31fbd 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
@@ -43,7 +43,8 @@
/**
* Parses the FtpServer "nio-listener" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ListenerBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
index 67443432..e5ab8327 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
@@ -42,7 +42,8 @@
/**
* Parses the FtpServer "server" element into a Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ServerBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java b/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
index 20ce9f8c..dbd96b8e 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
@@ -37,7 +37,8 @@
/**
* Various util methods for the Spring config parsing and configuration
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SpringUtil {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java
index b5160598..8e56d991 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/UserManagerBeanDefinitionParser.java
@@ -36,7 +36,8 @@
* Parses the FtpServer "file-user-manager" or "db-user-manager" elements into a
* Spring bean graph
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class UserManagerBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java
index 5c5f5c6c..f15a19de 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/NativeFileSystemFactory.java
@@ -32,7 +32,8 @@
/**
* Native file system factory. It uses the OS file system.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NativeFileSystemFactory implements FileSystemFactory {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
index cd031889..3bacdac2 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
@@ -27,7 +27,8 @@
*
* FileFilter used for simple file name matching
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NameEqualsFileFilter implements FileFilter {
private String nameToMatch;
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
index d99d3c97..55da62da 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
@@ -26,7 +26,6 @@
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpFile;
import org.apache.ftpserver.ftplet.User;
-import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,7 +35,8 @@
* File system view based on native file system. Here the root directory will be
* user virtual root (/).
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NativeFileSystemView implements FileSystemView {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index dcfc2821..300193e5 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -43,7 +43,8 @@
*
* This class wraps native file object.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NativeFtpFile implements FtpFile {
private final Logger LOG = LoggerFactory.getLogger(NativeFtpFile.class);
diff --git a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java
index 03360046..fb84971f 100644
--- a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java
+++ b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/FtpletContainer.java
@@ -28,7 +28,8 @@
* {@link Ftplet} interface and forward any events to the Ftplets hosted by the
* container.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpletContainer extends Ftplet {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java
index c25ccf53..7d85fa3d 100644
--- a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java
+++ b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/DefaultFtpletContainer.java
@@ -42,7 +42,8 @@
*
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtpletContainer implements FtpletContainer {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
index 1f86c249..97edab13 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
@@ -25,7 +25,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class DefaultConnectionConfig implements ConnectionConfig {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
index fa53c0d1..aa7a7485 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
@@ -28,7 +28,8 @@
*
* Data connection configuration.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultDataConnectionConfiguration implements
DataConnectionConfiguration {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
index 6aec7bf4..bd66ab2d 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
@@ -24,8 +24,6 @@
import org.apache.ftpserver.command.Command;
import org.apache.ftpserver.command.CommandFactory;
-import org.apache.ftpserver.ftplet.DataConnection;
-import org.apache.ftpserver.ftplet.DataConnectionFactory;
import org.apache.ftpserver.ftplet.DefaultFtpReply;
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpReply;
@@ -42,7 +40,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class DefaultFtpHandler implements FtpHandler {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
index fd10e10c..548e3ad2 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
@@ -26,7 +26,8 @@
*
* FTP request object.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtpRequest implements FtpRequest {
private String line;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
index 0f020782..caed535c 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
@@ -43,7 +43,8 @@
* thread. Server implementation is used to create the server
* socket and handle client connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtpServer implements FtpServer {
private final Logger LOG = LoggerFactory.getLogger(DefaultFtpServer.class);
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
index f2372ffe..931dc770 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
@@ -21,7 +21,6 @@
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -54,7 +53,8 @@
*
* FTP server configuration implementation. It holds all the components used.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtpServerContext implements FtpServerContext {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
index 99a63a2a..cefad774 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
@@ -39,7 +39,8 @@
*
* FTP session
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtpSession implements FtpSession {
private FtpIoSession ioSession;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
index 69e81f35..e8228e5a 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
@@ -38,7 +38,8 @@
* TODO revisit concurrency, right now we're a bit over zealous with both Atomic*
* counters and synchronization
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtpStatistics implements ServerFtpStatistics {
private StatisticsObserver observer = null;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java b/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java
index 624b0219..9eba476b 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FileObserver.java
@@ -26,7 +26,8 @@
*
* This is the file related activity observer.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FileObserver {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java b/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java
index 0200d815..69e1c2e7 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpHandler.java
@@ -31,7 +31,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public interface FtpHandler {
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 af58e30d..7e039d93 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
@@ -55,7 +55,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class FtpIoSession implements IoSession {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java b/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java
index bfb25fde..890ff057 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpServerContext.java
@@ -34,7 +34,8 @@
* This is basically org.apache.ftpserver.ftplet.FtpletContext with
* added connection manager, message resource functionalities.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpServerContext extends FtpletContext {
ConnectionConfig getConnectionConfig();
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
index 37593abe..00d6e7a2 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
@@ -44,7 +44,8 @@
* An active open data connection, used for transfering data over the data
* connection.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class IODataConnection implements DataConnection {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
index c44175ac..323a6e1f 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnectionFactory.java
@@ -45,7 +45,8 @@
* We can get the FTP data connection using this class. It uses either PORT or
* PASV command.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class IODataConnectionFactory implements ServerDataConnectionFactory {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
index e969690e..8769527a 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
@@ -35,7 +35,8 @@
*
* FTP reply translator.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class LocalizedFtpReply extends DefaultFtpReply {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index 9851deb1..79373fac 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -32,7 +32,8 @@
* Provides support for parsing a passive ports string as well as keeping track
* of reserved passive ports.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PassivePorts {
private static final int MAX_PORT = 65535;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java b/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
index 6284e008..cf882531 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/ServerDataConnectionFactory.java
@@ -28,7 +28,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public interface ServerDataConnectionFactory extends DataConnectionFactory {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java b/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java
index dd9a8bde..a174ed09 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/ServerFtpStatistics.java
@@ -28,7 +28,8 @@
* This is same as org.apache.ftpserver.ftplet.FtpStatistics with
* added observer and setting values functionalities.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface ServerFtpStatistics extends FtpStatistics {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java b/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java
index 9fb21f29..5ee95936 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/StatisticsObserver.java
@@ -26,7 +26,8 @@
*
* FTP statistics observer interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface StatisticsObserver {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/listener/Listener.java b/core/src/main/java/org/apache/ftpserver/listener/Listener.java
index 8675b515..05bac9c3 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/Listener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/Listener.java
@@ -33,7 +33,8 @@
* Interface for the component responsible for waiting for incoming socket
* requests and kicking off {@link FtpIoSession}s
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface Listener {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
index f3bcd849..d98120c4 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
@@ -34,7 +34,8 @@
* Factory for listeners. Listeners themselves are immutable and must be
* created using this factory.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ListenerFactory {
private String serverAddress;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
index 1d80c8b3..4a5b8a37 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
@@ -24,7 +24,6 @@
import java.util.List;
import org.apache.ftpserver.DataConnectionConfiguration;
-import org.apache.ftpserver.impl.DefaultDataConnectionConfiguration;
import org.apache.ftpserver.listener.Listener;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.ssl.SslConfiguration;
@@ -35,7 +34,8 @@
*
* Common base class for listener implementations
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public abstract class AbstractListener implements Listener {
private String serverAddress;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
index 7196af7b..5899784f 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
@@ -19,8 +19,6 @@
*/
package org.apache.ftpserver.listener.nio;
-import java.util.UUID;
-
import org.apache.ftpserver.ftplet.FtpReply;
import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.impl.DefaultFtpRequest;
@@ -37,7 +35,7 @@
*
* Adapter between MINA handler and the {@link FtpHandler} interface
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class FtpHandlerAdapter implements IoHandler {
private FtpServerContext context;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
index 256c81ee..fba9f313 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpLoggingFilter.java
@@ -19,9 +19,7 @@
package org.apache.ftpserver.listener.nio;
-import org.apache.mina.core.session.IoEventType;
import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.logging.LogLevel;
import org.apache.mina.filter.logging.LoggingFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,7 +29,8 @@
*
* Specialized @see {@link LoggingFilter} that optionally masks FTP passwords.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FtpLoggingFilter extends LoggingFilter {
private boolean maskPassword = true;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java
index 3c3a4309..4c4b884f 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpResponseEncoder.java
@@ -34,7 +34,8 @@
*
* A {@link MessageEncoder} that encodes {@link FtpReply}.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FtpResponseEncoder extends ProtocolEncoderAdapter {
private static final CharsetEncoder ENCODER = Charset.forName("UTF-8")
.newEncoder();
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
index 161b7fb1..92da13d8 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
@@ -32,7 +32,8 @@
*
* Factory for creating decoders and encoders
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FtpServerProtocolCodecFactory implements ProtocolCodecFactory {
private ProtocolDecoder decoder = new TextLineDecoder(Charset
.forName("UTF-8"));
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
index 76ada990..954a9986 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
@@ -61,7 +61,8 @@
*
* The default {@link Listener} implementation.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class NioListener extends AbstractListener {
private final Logger LOG = LoggerFactory.getLogger(NioListener.class);
diff --git a/core/src/main/java/org/apache/ftpserver/main/AddUser.java b/core/src/main/java/org/apache/ftpserver/main/AddUser.java
index 88656584..38f07be2 100644
--- a/core/src/main/java/org/apache/ftpserver/main/AddUser.java
+++ b/core/src/main/java/org/apache/ftpserver/main/AddUser.java
@@ -39,7 +39,8 @@
/**
* Used to add users to the user manager for a particular FtpServer configuration
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class AddUser extends CommandLine {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/main/CommandLine.java b/core/src/main/java/org/apache/ftpserver/main/CommandLine.java
index d311b778..89a05391 100644
--- a/core/src/main/java/org/apache/ftpserver/main/CommandLine.java
+++ b/core/src/main/java/org/apache/ftpserver/main/CommandLine.java
@@ -21,14 +21,14 @@
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* This class is the starting point for the FtpServer when it is started using
* the command line mode.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class CommandLine {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/main/Daemon.java b/core/src/main/java/org/apache/ftpserver/main/Daemon.java
index 4c193f22..dfc12ae2 100644
--- a/core/src/main/java/org/apache/ftpserver/main/Daemon.java
+++ b/core/src/main/java/org/apache/ftpserver/main/Daemon.java
@@ -22,7 +22,6 @@
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.FtpException;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.FileSystemXmlApplicationContext;
@@ -31,7 +30,8 @@
* Invokes FtpServer as a daemon, running in the background. Used for example
* for the Windows service.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class Daemon {
private static final Logger LOG = LoggerFactory.getLogger(Daemon.class);
diff --git a/core/src/main/java/org/apache/ftpserver/message/MessageResource.java b/core/src/main/java/org/apache/ftpserver/message/MessageResource.java
index dd836420..924fa1a8 100644
--- a/core/src/main/java/org/apache/ftpserver/message/MessageResource.java
+++ b/core/src/main/java/org/apache/ftpserver/message/MessageResource.java
@@ -21,12 +21,12 @@
import java.util.List;
import java.util.Map;
-import java.util.Properties;
/**
* This is message resource interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface MessageResource {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java b/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java
index 002b005f..a55c7d3b 100644
--- a/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/message/MessageResourceFactory.java
@@ -27,7 +27,8 @@
/**
* Factory for creating message resource implementation
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class MessageResourceFactory {
private List languages;
diff --git a/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java b/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
index 5f11d47a..2b0fffa4 100644
--- a/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
+++ b/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
@@ -23,9 +23,7 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.net.URL;
import java.util.Collections;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -50,7 +48,8 @@
* Custom Language Specific Messages -> Default Language Specific Messages ->
* Custom Common Messages -> Default Common Messages -> null (not found)
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultMessageResource implements MessageResource {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java b/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java
index b0e1671f..a9335d3e 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/ClientAuth.java
@@ -20,7 +20,8 @@
* Enumeration of possible levels of client authentication during an SSL
* session.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public enum ClientAuth {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java b/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java
index 3a802620..6665c5b9 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/SslConfiguration.java
@@ -26,7 +26,8 @@
/**
* SSL configuration
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface SslConfiguration {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
index 94f1e481..c36ca3ba 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/SslConfigurationFactory.java
@@ -39,7 +39,8 @@
* Used to configure the SSL settings for the control channel or the data
* channel.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SslConfigurationFactory {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
index 509ea9ff..7ed739d4 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
@@ -36,7 +36,8 @@
*
* Based of org.apache.tomcat.util.net.jsse.JSSEKeyManager.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public final class AliasKeyManager implements X509KeyManager {
private X509KeyManager delegate;
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
index 4b988c58..6e752473 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
@@ -40,7 +40,8 @@
*
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultSslConfiguration implements SslConfiguration {
private KeyManagerFactory keyManagerFactory;
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java
index 4079d7d7..936e7dd9 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeyManager.java
@@ -34,7 +34,8 @@
*
* Based of org.apache.tomcat.util.net.jsse.JSSEKeyManager.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public final class ExtendedAliasKeyManager extends X509ExtendedKeyManager {
private X509ExtendedKeyManager delegate;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java b/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java
index 69128dc9..797f64d5 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/AnonymousAuthentication.java
@@ -25,7 +25,8 @@
/**
* Class representing an anonymous authentication attempt
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class AnonymousAuthentication implements Authentication {
private UserMetadata userMetadata;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java
index 656efab4..e9dc49e7 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/ClearTextPasswordEncryptor.java
@@ -26,7 +26,8 @@
* Password encryptor that does no encryption, that is, keps the
* password in clear text
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ClearTextPasswordEncryptor implements PasswordEncryptor {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java b/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java
index 6ea2b92b..e64823d1 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/DbUserManagerFactory.java
@@ -28,7 +28,8 @@
/**
* Factory for database backed {@link UserManager} instances.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DbUserManagerFactory implements UserManagerFactory {
private String adminName = "admin";
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java
index 0266ab7a..3401eb2f 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/Md5PasswordEncryptor.java
@@ -26,7 +26,8 @@
* Password encryptor that hashes the password using MD5. Please note that this form
* of encryption is sensitive to lookup attacks.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class Md5PasswordEncryptor implements PasswordEncryptor {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java
index 595dd0e9..5881aa4e 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/PasswordEncryptor.java
@@ -24,7 +24,8 @@
* Strategy used for encrypting and matching encrypted passwords.
* The purpose is to make the password encryption possible to extend.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface PasswordEncryptor {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java b/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
index 1b517ad9..b3ddc7e6 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
@@ -28,7 +28,8 @@
/**
* Factory for the properties file based UserManager implementation.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PropertiesUserManagerFactory implements UserManagerFactory {
private String adminName = "admin";
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java b/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java
index 6120dba8..1cd1bf5b 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/SaltedPasswordEncryptor.java
@@ -31,7 +31,8 @@
* The algorithm is based on the principles described in
* http://www.jasypt.org/howtoencryptuserpasswords.html
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SaltedPasswordEncryptor implements PasswordEncryptor {
private SecureRandom rnd = new SecureRandom();
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java b/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java
index 51d96bc1..5c3686c9 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/UserManagerFactory.java
@@ -24,7 +24,8 @@
/**
* Interface for user manager factories
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface UserManagerFactory {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java b/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java
index f0877709..546b6c57 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthentication.java
@@ -26,7 +26,8 @@
* Class representing a normal authentication attempt using username and
* password
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class UsernamePasswordAuthentication implements Authentication {
private String username;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
index 6793c6d4..ed02b01c 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
@@ -29,7 +29,8 @@
*
* Abstract common base type for {@link UserManager} implementations
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public abstract class AbstractUserManager implements UserManager {
public static final String ATTR_LOGIN = "userid";
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 844c5bf4..c303a300 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
@@ -42,7 +42,8 @@
*
downloadrate
*
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class BaseUser implements User {
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
index caa2c4e6..ab9ff6f7 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
@@ -27,7 +27,8 @@
*
* The max upload rate permission
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ConcurrentLoginPermission implements Authority {
private int maxConcurrentLogins;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
index 8b7459ae..c2573431 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
@@ -26,7 +26,8 @@
*
* Class representing a request to log in a number of concurrent times
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ConcurrentLoginRequest implements AuthorizationRequest {
private int concurrentLogins;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
index 015874b4..ac338638 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
@@ -52,7 +52,8 @@
* All the user attributes are replaced during run-time. So we can use your
* database schema. Then you need to modify the SQLs in the configuration file.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DbUserManager extends AbstractUserManager {
private final Logger LOG = LoggerFactory.getLogger(DbUserManager.class);
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
index 77680db1..8faf5f3d 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
@@ -112,7 +112,8 @@
* ftpserver.user.admin.uploadrate=0
* ftpserver.user.admin.downloadrate=0
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class PropertiesUserManager extends AbstractUserManager {
private final Logger LOG = LoggerFactory
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java
index ab21bd30..066901cc 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRatePermission.java
@@ -27,7 +27,8 @@
*
* The max upload rate permission
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class TransferRatePermission implements Authority {
private int maxDownloadRate;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java
index b95b2d7a..99d920dc 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/TransferRateRequest.java
@@ -26,7 +26,8 @@
*
* Request for getting the maximum allowed transfer rates for a user
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class TransferRateRequest implements AuthorizationRequest {
private int maxDownloadRate = 0;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java
index 28f2dd80..d978e19c 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/UserMetadata.java
@@ -27,7 +27,8 @@
*
* User metadata used during authentication
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class UserMetadata {
private Certificate[] certificateChain;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java
index e656fdf4..16b62dce 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WritePermission.java
@@ -27,7 +27,8 @@
*
* Class representing a write permission
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class WritePermission implements Authority {
private String permissionRoot;
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java
index 6e33c12a..32a828b4 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/WriteRequest.java
@@ -26,7 +26,8 @@
*
* Class representing a write request
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class WriteRequest implements AuthorizationRequest {
private String file;
diff --git a/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java b/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java
index 4788cb74..0761c891 100644
--- a/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java
+++ b/core/src/main/java/org/apache/ftpserver/util/BaseProperties.java
@@ -37,7 +37,8 @@
* This class encapsulates java.util.Properties to add java
* primitives and some other java classes.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class BaseProperties extends Properties {
private static final long serialVersionUID = 5572645129592131953L;
diff --git a/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java b/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java
index 555b183c..541ca39b 100644
--- a/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/ClassUtils.java
@@ -22,7 +22,7 @@
/**
* Internal class, do not use directly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class ClassUtils {
diff --git a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
index 55a6bc3b..76b3f337 100644
--- a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
@@ -32,7 +32,8 @@
*
* Standard date related utility methods.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DateUtils {
private final static String[] MONTHS = { "Jan", "Feb", "Mar", "Apr", "May",
diff --git a/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java b/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java
index d2f8d92a..77077262 100644
--- a/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/EncryptUtils.java
@@ -27,7 +27,8 @@
*
* String encryption utility methods.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class EncryptUtils {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java b/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java
index a715273c..3a572d26 100644
--- a/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/util/FileRegularFilter.java
@@ -27,7 +27,8 @@
*
* This is regular expression filename filter.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FileRegularFilter implements FilenameFilter {
private RegularExpr regularExpr = null;
diff --git a/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java b/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java
index d10bc7e2..6e2e5c19 100644
--- a/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java
+++ b/core/src/main/java/org/apache/ftpserver/util/IllegalInetAddressException.java
@@ -25,7 +25,8 @@
* Thrown if the provided string representation does not match a valid IP
* address
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class IllegalInetAddressException extends IllegalArgumentException {
private static final long serialVersionUID = -7771719692741419933L;
diff --git a/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java b/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java
index 475ff80d..1f0f4530 100644
--- a/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java
+++ b/core/src/main/java/org/apache/ftpserver/util/IllegalPortException.java
@@ -24,7 +24,8 @@
*
* Thrown if the provided string representation does not match a valid IP port
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class IllegalPortException extends IllegalArgumentException {
private static final long serialVersionUID = -7771719692741419931L;
diff --git a/core/src/main/java/org/apache/ftpserver/util/IoUtils.java b/core/src/main/java/org/apache/ftpserver/util/IoUtils.java
index 53fa4427..75e47ad1 100644
--- a/core/src/main/java/org/apache/ftpserver/util/IoUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/IoUtils.java
@@ -44,7 +44,8 @@
* commons-io library we prefer to our own implementation to, using a external
* library might cause additional constraints on users embedding FtpServer.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class IoUtils {
/**
diff --git a/core/src/main/java/org/apache/ftpserver/util/OS.java b/core/src/main/java/org/apache/ftpserver/util/OS.java
index ff9ea071..a1a90c5d 100644
--- a/core/src/main/java/org/apache/ftpserver/util/OS.java
+++ b/core/src/main/java/org/apache/ftpserver/util/OS.java
@@ -24,7 +24,8 @@
*
* Condition that tests the OS type.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public final class OS {
private static final String FAMILY_OS_400 = "os/400";
diff --git a/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java b/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java
index c2bc3c85..22169bde 100644
--- a/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java
+++ b/core/src/main/java/org/apache/ftpserver/util/RegularExpr.java
@@ -25,7 +25,8 @@
* This is a simplified regular character mattching class. Supports *?^[]-
* pattern characters.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class RegularExpr {
private char[] pattern;
diff --git a/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java b/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
index 5f00e25d..7092271a 100644
--- a/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
+++ b/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
@@ -30,7 +30,8 @@
* Encodes and decodes socket addresses (IP and port) from and to the format
* used with for example the PORT and PASV command
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class SocketAddressEncoder {
private static int convertAndValidateNumber(String s) {
diff --git a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
index 5268a3fc..4d24b586 100644
--- a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
@@ -26,7 +26,8 @@
*
* String utility methods.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class StringUtils {
/**
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
index a3b1ce8d..4530320b 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
@@ -28,7 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
+* @author Apache MINA Project
*
*/
public class ActiveModeReplyTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
index 73a6203e..e5efb340 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
@@ -33,7 +33,7 @@
*
* From FTPSERVER-250
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class BindExceptionParallelTest extends ClientTestTemplate {
private static final int NUMBER_OF_CLIENTS = 2;
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java
index 5bed73ab..29ad5667 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionSerialTest.java
@@ -19,17 +19,17 @@
package org.apache.ftpserver.clienttests;
-import org.apache.commons.net.ftp.FTPClient;
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
-
import java.io.IOException;
import java.util.Arrays;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+
/**
*
* From FTPSERVER-250
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class BindExceptionSerialTest extends ClientTestTemplate {
@Override
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java
index 0399afc5..b51dc7c0 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/CdCaseInsensitiveTest.java
@@ -24,7 +24,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class CdCaseInsensitiveTest extends CdTest {
protected FtpServerFactory createServer() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java
index 32ad30da..86dd6b50 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/CdTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class CdTest extends ClientTestTemplate {
protected static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
index 1ceeaaea..cd6da8e2 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
@@ -43,7 +43,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class ClientTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java
index 574d5677..34f250ed 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ConcatedCommandsTest.java
@@ -24,7 +24,7 @@
/**
* Tests that commands sent simultaniously are handled correctly.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class ConcatedCommandsTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java
index 1bf85e61..db53557f 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectPickPortTest.java
@@ -20,13 +20,12 @@
package org.apache.ftpserver.clienttests;
import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.listener.nio.NioListener;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ConnectPickPortTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
index d29e81ee..6a8c1335 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ConnectTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java
index 30357f50..9774ee3c 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/CustomMaxLoginTest.java
@@ -27,7 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class CustomMaxLoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java
index 5e49d527..91b8f483 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DataTransferTimeoutTest.java
@@ -20,19 +20,16 @@
package org.apache.ftpserver.clienttests;
import java.io.File;
-import java.io.InputStream;
import java.io.OutputStream;
-import java.util.Arrays;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.listener.ListenerFactory;
-import org.apache.ftpserver.test.TestUtil;
/**
*
* Test for FTPSERVER-170
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DataTransferTimeoutTest extends ClientTestTemplate {
private static final String TEST_FILENAME = "test.txt";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java
index e36dfb1b..e3dbbaaa 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DecoderTest.java
@@ -34,7 +34,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DecoderTest extends ClientTestTemplate {
private String dump = "4C 49 53 54 20 61 62 63 64 AE 2E 0D 0A".replace(" ", "");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java
index e05c6e62..4b4fa784 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DefaultMaxLoginTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DefaultMaxLoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
index 13b3a8c8..e6c5d4cd 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DeleteTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
index bd583898..975d3fdd 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DirectoryTest extends ClientTestTemplate {
private static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java
index 74a3f976..38a5a40f 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/FeatTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FeatTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java b/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
index 40a65f30..f3e85045 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
@@ -28,7 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpMd5Test extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java
index 77096b2a..c03f4917 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/HelpTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class HelpTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java
index 4b15b953..632e1fc4 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/I18NTest.java
@@ -28,7 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class I18NTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
index 8eb1f677..06cee742 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
@@ -29,7 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class InetAddressBlacklistTest extends ClientTestTemplate {
protected FtpServerFactory createServer() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java
index 8c42515e..2edbc201 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/LangTest.java
@@ -26,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class LangTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java
index b5931b93..f1dbbcad 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ListPassiveTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ListPassiveTest extends ListTest {
/*
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
index e5751f01..6d9bd374 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
@@ -29,7 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ListTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java
index 79dcb273..89a91cd7 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/LoginNoAnonTest.java
@@ -21,11 +21,10 @@
import org.apache.ftpserver.ConnectionConfigFactory;
import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.impl.DefaultConnectionConfig;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class LoginNoAnonTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
index 1af41d19..45bb27aa 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
@@ -27,7 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class LoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
index df5939ae..fc6d3bf8 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MDTMTest extends ClientTestTemplate {
private static final SimpleDateFormat FTP_DATE_FORMAT = new SimpleDateFormat(
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java
index 55cb92b7..64c12249 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/MFMTTest.java
@@ -20,16 +20,13 @@
package org.apache.ftpserver.clienttests;
import java.io.File;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
import java.util.Calendar;
-import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MFMTTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java
index 8a18409e..653e67e6 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressTest.java
@@ -31,7 +31,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class PasvAddressTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java
index b2e54f1d..38c6e827 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvAddressWithHostnameTest.java
@@ -19,18 +19,15 @@
package org.apache.ftpserver.clienttests;
-import java.net.InetAddress;
-
import org.apache.ftpserver.DataConnectionConfigurationFactory;
import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.impl.DefaultDataConnectionConfiguration;
import org.apache.ftpserver.listener.ListenerFactory;
/**
* Test for external passive address configured as hostname rather than IP
* address.
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class PasvAddressWithHostnameTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
index d9e6a0f0..9e97918f 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
@@ -27,7 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class PasvTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
index b838ab75..00492421 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
@@ -28,7 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
+* @author Apache MINA Project
*
*/
public class PasvUsedPortTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java
index a1992e06..73964e10 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RenameTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class RenameTest extends ClientTestTemplate {
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java
index 63dd22d6..d22a96b8 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RetrievePassiveTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class RetrievePassiveTest extends RetrieveTest {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java
index 4dcbb9f7..f8679fdd 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RetrieveTest.java
@@ -26,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class RetrieveTest extends ClientTestTemplate {
private static final String TEST_FILENAME = "test.txt";
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java
index 2611c68a..519a36ee 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/RmDirTest.java
@@ -22,7 +22,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class RmDirTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
index a719d968..7eb22424 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
@@ -28,7 +28,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SiteTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java
index 619ca605..b80f7caf 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SizeTest.java
@@ -26,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SizeTest extends ClientTestTemplate {
protected static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java
index 698dd488..2764edee 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/StorePassiveTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class StorePassiveTest extends StoreTest {
/*
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
index 69c8f331..9846e999 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
@@ -27,7 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class StoreTest extends ClientTestTemplate {
private static final String EOL = System.getProperty("line.separator");
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
index 157cd8db..2ba440b3 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
@@ -30,7 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SubnetBlacklistTest extends ClientTestTemplate {
protected FtpServerFactory createServer() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
index 63ca9061..6c8804f6 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
@@ -24,7 +24,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SuspendResumeTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java
index 26833456..75b6368b 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/SystTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SystTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java
index 6a8a586e..b85e7abe 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/TypeTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class TypeTest extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java
index 6297f1cd..ebfa2fb3 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/UnlimitedMaxLoginTest.java
@@ -24,7 +24,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class UnlimitedMaxLoginTest extends ClientTestTemplate {
private static final String UNKNOWN_USERNAME = "foo";
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java
index 15f26b82..c4e731fc 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/DefaultCommandFactoryTest.java
@@ -30,7 +30,7 @@
/**
*
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class DefaultCommandFactoryTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
index 6ef0dcad..56c3a4f1 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
@@ -35,7 +35,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
+* @author Apache MINA Project
*
*/
public class DirectoryListerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java
index 33891054..de6f80a8 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/LISTFileFormaterTest.java
@@ -32,7 +32,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
@SuppressWarnings("deprecation")
public class LISTFileFormaterTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java
index c10dd524..cf757232 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentParserTest.java
@@ -26,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ListArgumentParserTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java
index ff80c1dc..311392a9 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/ListArgumentTest.java
@@ -27,7 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ListArgumentTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
index 94d272db..6d1f1f29 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
@@ -32,7 +32,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
@SuppressWarnings("deprecation")
public class MLSTFileFormaterTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java
index dd5d9e90..1a2a2f91 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/NLSTFileFormaterTest.java
@@ -31,7 +31,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class NLSTFileFormaterTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java
index 1bb7b2c9..5ef50318 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/DbUserManagerConfigTest.java
@@ -19,7 +19,6 @@
package org.apache.ftpserver.config.spring;
-import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor;
import org.apache.ftpserver.usermanager.impl.DbUserManager;
@@ -27,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DbUserManagerConfigTest extends SpringConfigTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
index 9ae34563..07077b00 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
@@ -21,7 +21,6 @@
import java.io.File;
-import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
import org.apache.ftpserver.usermanager.Md5PasswordEncryptor;
@@ -30,7 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FileUserManagerConfigTest extends SpringConfigTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
index 57d30b58..609af8c7 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
@@ -19,21 +19,14 @@
package org.apache.ftpserver.config.spring;
-import java.io.File;
import java.util.Map;
-import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.ftplet.Ftplet;
-import org.apache.ftpserver.ftpletcontainer.FtpletContainer;
import org.apache.ftpserver.impl.DefaultFtpServer;
-import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
-import org.apache.ftpserver.usermanager.Md5PasswordEncryptor;
-import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor;
-import org.apache.ftpserver.usermanager.impl.PropertiesUserManager;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpletsConfigTest extends SpringConfigTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/MockUserManager.java b/core/src/test/java/org/apache/ftpserver/config/spring/MockUserManager.java
index cd80b395..5ee00e21 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/MockUserManager.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/MockUserManager.java
@@ -25,6 +25,9 @@
import org.apache.ftpserver.ftplet.User;
import org.apache.ftpserver.ftplet.UserManager;
+/**
+* @author Apache MINA Project*
+*/
public class MockUserManager implements UserManager {
public User authenticate(Authentication authentication)
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
index 0bd0c3d1..98aa9ac4 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
@@ -33,7 +33,7 @@
/**
* Used for testing creation of custom listeners from Spring config
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class MyCustomListener implements Listener {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java
index a6ab829b..995ee4e2 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/PropertyPlaceholderTest.java
@@ -26,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class PropertyPlaceholderTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
index 0c848077..d0014737 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
@@ -38,7 +38,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SpringConfigTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java
index ee9a2979..1fefa9cb 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTestTemplate.java
@@ -27,7 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class SpringConfigTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java b/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java
index c6730a5e..e7290226 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/TestFtplet.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class TestFtplet extends DefaultFtplet {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java
index 163561fa..bf34fc0c 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FileSystemViewTemplate.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class FileSystemViewTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java
index 3d7977bc..38994208 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/FtpFileTestTemplate.java
@@ -30,7 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class FtpFileTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java
index 2f09dabf..fd8c8bcc 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileObjectTest.java
@@ -30,7 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class NativeFileObjectTest extends FtpFileTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java
index 03597e16..6178d86b 100644
--- a/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java
+++ b/core/src/test/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemViewTest.java
@@ -27,7 +27,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class NativeFileSystemViewTest extends FileSystemViewTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java
index 2d054cc9..8d4bb702 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/DefaultFtpLetContainerTest.java
@@ -26,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DefaultFtpLetContainerTest extends FtpLetContainerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetContainerTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetContainerTestTemplate.java
index 40435747..d9e49e48 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetContainerTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetContainerTestTemplate.java
@@ -40,6 +40,9 @@
import org.apache.ftpserver.impl.DefaultFtpRequest;
import org.apache.ftpserver.impl.DefaultFtpSession;
+/**
+* @author Apache MINA Project*
+*/
public abstract class FtpLetContainerTestTemplate extends TestCase {
private final List calls = new ArrayList();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
index 8aecec19..63ce9b65 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetOnConnectTest.java
@@ -19,8 +19,6 @@
package org.apache.ftpserver.ftpletcontainer;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.SocketException;
@@ -31,16 +29,13 @@
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.clienttests.ClientTestTemplate;
import org.apache.ftpserver.ftplet.FtpException;
-import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletResult;
-import org.apache.ftpserver.impl.DefaultFtpServer;
-import org.apache.ftpserver.test.TestUtil;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpLetOnConnectTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
index 09c0c26c..04264417 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
@@ -34,12 +34,11 @@
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletResult;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.test.TestUtil;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpLetReturnDefaultTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java
index 877204ee..7d295377 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDisconnectTest.java
@@ -35,12 +35,11 @@
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletResult;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.test.TestUtil;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpLetReturnDisconnectTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java
index 5bd3a930..1431a427 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnSkipTest.java
@@ -36,12 +36,11 @@
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletResult;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.test.TestUtil;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpLetReturnSkipTest extends ClientTestTemplate {
private static final byte[] TESTDATA = "TESTDATA".getBytes();
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java
index 904f6509..b85a62ab 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowFtpExceptionTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpLetThrowFtpExceptionTest extends FtpLetReturnDisconnectTest {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java
index c2b90652..cd1ef78f 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowIOExceptionTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpLetThrowIOExceptionTest extends FtpLetThrowFtpExceptionTest {
protected void throwException() throws IOException {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java
index 90586074..d7ca8ede 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetThrowRuntimeExceptionTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpLetThrowRuntimeExceptionTest extends
FtpLetThrowFtpExceptionTest {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java
index 76894866..2d5dc2c0 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtplet.java
@@ -30,7 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MockFtplet extends DefaultFtplet {
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java
index dfdf9a19..c3c0aeef 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/MockFtpletCallback.java
@@ -30,7 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MockFtpletCallback extends DefaultFtplet {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
index c2e4935c..6a898195 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
@@ -25,7 +25,7 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class DefaultFtpReplyTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
index bf010993..17f57627 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
@@ -19,9 +19,10 @@
package org.apache.ftpserver.impl;
-import java.io.IOException;
import java.net.BindException;
+import junit.framework.TestCase;
+
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerConfigurationException;
import org.apache.ftpserver.FtpServerFactory;
@@ -29,11 +30,9 @@
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.test.TestUtil;
-import junit.framework.TestCase;
-
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) *
+ * @author Apache MINA Project *
*/
public class DefaultFtpServerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java b/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java
index 9a342e04..812c28c6 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/FtpRequestImplTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpRequestImplTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java b/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java
index cdf2c9ab..707e8c2a 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/FtpStatisticsImplTest.java
@@ -22,7 +22,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class FtpStatisticsImplTest extends ServerFtpStatisticsTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
index 88d9836b..0fe40d1d 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class PassivePortsTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java b/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java
index 4e5c90ae..983e21ba 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/ServerFtpStatisticsTestTemplate.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class ServerFtpStatisticsTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
index db045076..3d919373 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
@@ -29,7 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class ExplicitSecurityTestTemplate extends SSLTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java
index 8c2a8eb2..009c4459 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/ImplicitSecurityTestTemplate.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class ImplicitSecurityTestTemplate extends
ExplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
index 5206dbd1..b85b105f 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)
+* @author Apache MINA Project
*
*/
public class MinaCipherSuitesTest extends SSLTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java
index fbc216e6..a624f833 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaClientAuthTest.java
@@ -31,7 +31,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MinaClientAuthTest extends SSLTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java
index 626908c2..e720025a 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitSSLTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MinaExplicitSSLTest extends ExplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java
index 4ff5405f..d7a49440 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaExplicitTLSTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MinaExplicitTLSTest extends ExplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java
index 23580a0f..394c693d 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitClientAuthTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MinaImplicitClientAuthTest extends MinaClientAuthTest {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
index d4b6c537..076abd7f 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
@@ -34,7 +34,8 @@
import org.apache.ftpserver.impl.ServerDataConnectionFactory;
/**
-* @author The Apache MINA Project (dev@mina.apache.org) */
+* @author Apache MINA Project
+ */
public class MinaImplicitDataChannelTest extends ImplicitSecurityTestTemplate {
protected void setUp() throws Exception {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java
index fb6b57e7..a5895e61 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitSSLTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MinaImplicitSSLTest extends ImplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java
index 1bed3aa3..a5546d12 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitTLSTest.java
@@ -21,7 +21,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class MinaImplicitTLSTest extends ImplicitSecurityTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
index 62963bb8..b79d9686 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/SSLTestTemplate.java
@@ -31,19 +31,15 @@
import javax.net.ssl.TrustManagerFactory;
import org.apache.commons.net.ftp.FTPSClient;
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.clienttests.ClientTestTemplate;
-import org.apache.ftpserver.impl.DefaultDataConnectionConfiguration;
-import org.apache.ftpserver.impl.DefaultFtpServerContext;
-import org.apache.ftpserver.impl.DefaultFtpServer;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.test.TestUtil;
import org.apache.ftpserver.util.IoUtils;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class SSLTestTemplate extends ClientTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java b/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
index cd8a9241..9ee1a378 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/impl/AliasKeymanagerTest.java
@@ -29,7 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class AliasKeymanagerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java b/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
index 178560ad..4bccdc3c 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/impl/ExtendedAliasKeymanagerTest.java
@@ -29,7 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ExtendedAliasKeymanagerTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/test/TestUtil.java b/core/src/test/java/org/apache/ftpserver/test/TestUtil.java
index e5374fdf..c66dbbf6 100644
--- a/core/src/test/java/org/apache/ftpserver/test/TestUtil.java
+++ b/core/src/test/java/org/apache/ftpserver/test/TestUtil.java
@@ -37,7 +37,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class TestUtil {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java
index f0a2f0a3..f4b01eb6 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/UsernamePasswordAuthenticationTest.java
@@ -19,13 +19,11 @@
package org.apache.ftpserver.usermanager;
-import org.apache.ftpserver.usermanager.UsernamePasswordAuthentication;
-
import junit.framework.TestCase;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class UsernamePasswordAuthenticationTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java
index 727df2c8..f315e277 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/BaseUserTest.java
@@ -26,11 +26,10 @@
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.AuthorizationRequest;
-import org.apache.ftpserver.usermanager.impl.BaseUser;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class BaseUserTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java
index 1cc542b5..945873df 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextDbUserManagerTest.java
@@ -29,7 +29,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ClearTextDbUserManagerTest extends DbUserManagerTest {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java
index 866a499a..da60ffe8 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ClearTextPasswordEncryptorTest.java
@@ -26,7 +26,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ClearTextPasswordEncryptorTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java
index 343866a3..0b913ccc 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermissionTest.java
@@ -21,12 +21,9 @@
import junit.framework.TestCase;
-import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
-import org.apache.ftpserver.usermanager.impl.ConcurrentLoginRequest;
-
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class ConcurrentLoginPermissionTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java
index 15246033..733a1f4f 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/DbUserManagerTest.java
@@ -33,7 +33,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class DbUserManagerTest extends UserManagerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java
index 458497a4..8ce31a4b 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/Md5PasswordEncryptorTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class Md5PasswordEncryptorTest extends ClearTextPasswordEncryptorTest {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java
index ad9a24ee..3f860621 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManagerTest.java
@@ -35,7 +35,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class PropertiesUserManagerTest extends UserManagerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java
index ea1f79a3..1dd46920 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/SaltedPasswordEncryptorTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SaltedPasswordEncryptorTest extends ClearTextPasswordEncryptorTest {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java
index e7577fbc..719afd74 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/UserManagerTestTemplate.java
@@ -31,17 +31,10 @@
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.usermanager.UserManagerFactory;
import org.apache.ftpserver.usermanager.UsernamePasswordAuthentication;
-import org.apache.ftpserver.usermanager.impl.BaseUser;
-import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
-import org.apache.ftpserver.usermanager.impl.ConcurrentLoginRequest;
-import org.apache.ftpserver.usermanager.impl.TransferRatePermission;
-import org.apache.ftpserver.usermanager.impl.TransferRateRequest;
-import org.apache.ftpserver.usermanager.impl.WritePermission;
-import org.apache.ftpserver.usermanager.impl.WriteRequest;
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public abstract class UserManagerTestTemplate extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java
index 698bb5e3..90b8dec4 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/VolatilePropertiesUserManagerTest.java
@@ -30,7 +30,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class VolatilePropertiesUserManagerTest extends UserManagerTestTemplate {
diff --git a/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java b/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java
index d5c05095..14aebea9 100644
--- a/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java
+++ b/core/src/test/java/org/apache/ftpserver/usermanager/impl/WritePermissionTest.java
@@ -21,12 +21,9 @@
import junit.framework.TestCase;
-import org.apache.ftpserver.usermanager.impl.WritePermission;
-import org.apache.ftpserver.usermanager.impl.WriteRequest;
-
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class WritePermissionTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java b/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
index 0f524457..517c04dd 100644
--- a/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
@@ -33,7 +33,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class BasePropertiesTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java b/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java
index 46ca0472..aa59a14c 100644
--- a/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/EncryptUtilsTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class EncryptUtilsTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java b/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java
index 65f869cc..08c96bf5 100644
--- a/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/RegularExprTest.java
@@ -23,7 +23,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class RegularExprTest extends TestCase {
diff --git a/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java b/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java
index 45a99f38..1c812531 100644
--- a/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java
+++ b/core/src/test/java/org/apache/ftpserver/util/SocketAddressEncoderTest.java
@@ -25,7 +25,7 @@
/**
*
-* @author The Apache MINA Project (dev@mina.apache.org)*
+* @author Apache MINA Project*
*/
public class SocketAddressEncoderTest extends TestCase {
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java
index c7f6285a..296551a3 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authentication.java
@@ -23,7 +23,8 @@
* Represents a type of authentication request, typically anonymous or a
* username and password combination
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface Authentication {
}
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
index c7815dda..54ee3e04 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
@@ -22,7 +22,8 @@
/**
* Thrown if an authentication request fails
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class AuthenticationFailedException extends FtpException {
private static final long serialVersionUID = -1328383839915898987L;
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java
index 107e5709..42ae1b0a 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Authority.java
@@ -23,7 +23,8 @@
* Interface for an authority granted to the user, typical example is write
* access or the number of concurrent logins
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface Authority {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java
index d1fc16bd..e99d47a1 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthorizationRequest.java
@@ -22,7 +22,8 @@
/**
* A request for authorization for a specific task, for example write access.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface AuthorizationRequest {
}
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java
index 0a27ff44..9a8a5b5b 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnection.java
@@ -25,7 +25,8 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface DataConnection {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java
index 02ee0720..90a0cf2b 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataConnectionFactory.java
@@ -21,7 +21,8 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface DataConnectionFactory {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java
index c840f268..89effc18 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DataType.java
@@ -22,7 +22,8 @@
/**
* Type safe enum for describing the data type
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public enum DataType {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
index 07ba35e5..da1431fb 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
@@ -22,7 +22,8 @@
/**
* FTP reply object.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtpReply implements FtpReply {
private int code;
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java
index 819ee650..8e1d8e16 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtplet.java
@@ -26,7 +26,8 @@
* just an empty implementation. You can derive your ftplet implementation from
* this class.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DefaultFtplet implements Ftplet {
public void init(FtpletContext ftpletContext) throws FtpException {
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java
index 4fc75d6e..38e07abf 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemFactory.java
@@ -22,7 +22,8 @@
/**
* Factory for file system implementations - it returns the file system view for user.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FileSystemFactory {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java
index 30756c0e..95d88e98 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FileSystemView.java
@@ -22,7 +22,8 @@
/**
* This is an abstraction over the user file system view.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FileSystemView {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
index ae9c52cc..f5e3d871 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
@@ -25,7 +25,8 @@
/**
* Ftplet exception class.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class FtpException extends Exception {
private static final long serialVersionUID = -1328383839915898987L;
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
index 7cc591dc..84d4b713 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
@@ -28,7 +28,8 @@
/**
* This is the file abstraction used by the server.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpFile {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java
index fc68cccb..6081980d 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpReply.java
@@ -22,7 +22,8 @@
/**
* Interface for a reply to an FTP request.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpReply {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java
index 95f188ec..a4fee35e 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpRequest.java
@@ -22,7 +22,8 @@
/**
* One FtpRequest made by the client.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpRequest {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
index 50a5b54c..793832d6 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
@@ -32,7 +32,8 @@
* attributes set by setAttribute() will be always available later
* unless that attribute is removed or the client disconnects.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpSession {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java
index 7c61b0dd..39a95571 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpStatistics.java
@@ -25,7 +25,8 @@
/**
* This interface holds all the ftp server statistical information.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpStatistics {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java
index 1cf7699b..828ffac5 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Ftplet.java
@@ -44,7 +44,8 @@
* FtpletEnum.DEFAULT will be assumed. If any ftplet callback method throws
* exception, that particular connection will be disconnected.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface Ftplet {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java
index 8d90bbe2..afe1742b 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletContext.java
@@ -24,7 +24,8 @@
* information to a ftplet during initialization. The configuration information
* contains initialization parameters.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface FtpletContext {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java
index 0c108f08..fa653fa9 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpletResult.java
@@ -24,7 +24,8 @@
*
* DEFAULT < NO_FTPLET < SKIP < DISCONNECT
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public enum FtpletResult {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java
index b79cb950..1a62481e 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/Structure.java
@@ -22,7 +22,8 @@
/**
* Type safe enum for describing the structure
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public enum Structure {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
index e17679a2..94f33623 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
@@ -24,7 +24,8 @@
/**
* Basic user interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface User {
/**
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java
index c8ada543..16b35534 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/UserManager.java
@@ -22,7 +22,8 @@
/**
* User manager interface.
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public interface UserManager {
/**
diff --git a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java
index e2da1f7e..7e3826ec 100644
--- a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java
+++ b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DataTypeTest.java
@@ -23,7 +23,8 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class DataTypeTest extends TestCase {
public void testParseA() {
diff --git a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java
index 19275acd..266a2968 100644
--- a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java
+++ b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/ExampleFtplet.java
@@ -23,7 +23,8 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class ExampleFtplet extends DefaultFtplet {
@Override
diff --git a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java
index d37bd667..7c25ea4e 100644
--- a/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java
+++ b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/StructureTest.java
@@ -23,7 +23,8 @@
/**
*
- * @author The Apache MINA Project (dev@mina.apache.org) */
+ * @author Apache MINA Project
+ */
public class StructureTest extends TestCase {
public void testParseF() {
assertSame(Structure.FILE, Structure.parseArgument('F'));
From 1d66b056a2d0012b16001d297e139a2c1de1be64 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 10 Jun 2009 21:40:01 +0000
Subject: [PATCH 029/101] Using the site URL in author tags (FTPSERVER-314)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@783528 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/example/springwar/FtpServerListener.java | 3 +++
.../apache/ftpserver/example/springwar/FtpServerServlet.java | 3 +++
.../org/apache/ftpserver/example/ftpletservice/MyFtplet.java | 3 +++
.../apache/ftpserver/example/ftpletservice/impl/Activator.java | 3 +++
.../ftpserver/example/osgiservice/impl/FtpServerLifecycle.java | 3 +++
5 files changed, 15 insertions(+)
diff --git a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java
index 35b20ae2..5f2b8c92 100644
--- a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java
+++ b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerListener.java
@@ -26,6 +26,9 @@
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
+/**
+* @author Apache MINA Project*
+*/
public class FtpServerListener implements ServletContextListener {
public static final String FTPSERVER_CONTEXT_NAME = "org.apache.ftpserver";
diff --git a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java
index 9abe0ff0..28622fff 100644
--- a/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java
+++ b/examples/ftpserver-example-spring-war/src/main/java/org/apache/ftpserver/example/springwar/FtpServerServlet.java
@@ -29,6 +29,9 @@
import org.apache.ftpserver.FtpServer;
+/**
+* @author Apache MINA Project*
+*/
public class FtpServerServlet extends HttpServlet {
private static final long serialVersionUID = 5539642787624981705L;
diff --git a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java
index 9bd4ef5f..5ed348b2 100644
--- a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java
+++ b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/MyFtplet.java
@@ -27,6 +27,9 @@
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.FtpletResult;
+/**
+* @author Apache MINA Project*
+*/
public class MyFtplet extends DefaultFtplet {
@Override
diff --git a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java
index 3e69f7b4..61f0e6de 100644
--- a/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java
+++ b/examples/ftpserver-osgi-ftplet-service/src/main/java/org/apache/ftpserver/example/ftpletservice/impl/Activator.java
@@ -27,6 +27,9 @@
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
+/**
+* @author Apache MINA Project*
+*/
public class Activator implements BundleActivator {
public void start(BundleContext context) throws Exception {
diff --git a/examples/ftpserver-osgi-spring-service/src/main/java/org/apache/ftpserver/example/osgiservice/impl/FtpServerLifecycle.java b/examples/ftpserver-osgi-spring-service/src/main/java/org/apache/ftpserver/example/osgiservice/impl/FtpServerLifecycle.java
index 0e97a6ef..19794ddc 100644
--- a/examples/ftpserver-osgi-spring-service/src/main/java/org/apache/ftpserver/example/osgiservice/impl/FtpServerLifecycle.java
+++ b/examples/ftpserver-osgi-spring-service/src/main/java/org/apache/ftpserver/example/osgiservice/impl/FtpServerLifecycle.java
@@ -22,6 +22,9 @@
import org.apache.ftpserver.FtpServer;
+/**
+* @author Apache MINA Project*
+*/
public class FtpServerLifecycle {
private FtpServer server;
From d179835d62e56f366c8fb712432bb2949ca1eeed Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 12 Jun 2009 19:47:31 +0000
Subject: [PATCH 030/101] Updating README
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@784249 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/README.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/distribution/README.txt b/distribution/README.txt
index f4088f5f..db2f970e 100644
--- a/distribution/README.txt
+++ b/distribution/README.txt
@@ -13,6 +13,10 @@ you write Java code to process FTP event notifications that we call the Ftplet
API. Apache FtpServer provides an implementation of FTP server to support
this API.
+1.0.2
+--------------------------------
+Bug fix release that fixes the important issues found since the 1.0.1 release.
+
1.0.1
--------------------------------
Bug fix release that fixes the important issues found since the 1.0.0 release.
From cd0bc95afc3573498873cf5436c6f344234e26a2 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 12 Jun 2009 19:51:42 +0000
Subject: [PATCH 031/101] Increasing version for new development in 1.0.x
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@784253 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 4 ++--
distribution/pom.xml | 4 ++--
examples/ftpserver-example-spring-war/pom.xml | 4 ++--
examples/ftpserver-osgi-ftplet-service/pom.xml | 4 ++--
examples/ftpserver-osgi-spring-service/pom.xml | 4 ++--
examples/pom.xml | 4 ++--
ftplet-api/pom.xml | 4 ++--
pom.xml | 2 +-
8 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index aafb706e..e2a2db80 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -17,13 +17,13 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT4.0.0org.apache.ftpserverftpserver-coreApache FtpServer Core
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOTbundle
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 0e581a36..0f547733 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -22,14 +22,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT4.0.0org.apache.ftpserverftpserverpomApache FtpServer
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOTscm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/distributionscm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution
diff --git a/examples/ftpserver-example-spring-war/pom.xml b/examples/ftpserver-example-spring-war/pom.xml
index 7f70937a..88626b45 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -18,7 +18,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT../../pom.xml
@@ -27,7 +27,7 @@
ftpserver-spring-warFtpServer Spring web project examplewar
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOTorg.springframework
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index 4d6565e7..c7c14d93 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-ftplet-serviceFtpServer OSGi Ftplet service examplebundle
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index ae633531..88c80ffc 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-spring-serviceFtpServer OSGi Spring-DM examplebundle
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/pom.xml b/examples/pom.xml
index 9be5e382..957da8ed 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,14 +21,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT4.0.0org.apache.ftpserverr
ftpserver-examplespomApache FtpServer Examples
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOTftpserver-example-spring-warftpserver-osgi-ftplet-service
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index b46f6233..39c44089 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -17,12 +17,12 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT4.0.0org.apache.ftpserverftplet-api
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOTbundleApache Ftplet API Ftplets are, similar to servlets, an API to plug into the
diff --git a/pom.xml b/pom.xml
index be17e057..372aef90 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
ftpserver-parentpomApache FtpServer Parent
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOThttp://mina.apache.org/ftpserverJira
From 922f8ce84b5b1b112890c0567f42fc20ec8c297c Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 21 Sep 2009 11:58:08 +0000
Subject: [PATCH 032/101] Fixed exception where we fail to forward the cause to
the super constructor (FTPSERVER-318) Deprecated FtpException.getRootCause()
as it duplicates Exception.getCause(). Removed ancient handling of the
causing exception
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@817215 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/DataConnectionException.java | 2 +-
.../ftplet/AuthenticationFailedException.java | 2 +-
.../apache/ftpserver/ftplet/FtpException.java | 42 +------------------
3 files changed, 4 insertions(+), 42 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionException.java b/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
index 4e8fd8e0..626cf80e 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionException.java
@@ -66,6 +66,6 @@ public DataConnectionException(final Throwable th) {
* the original cause
*/
public DataConnectionException(final String msg, final Throwable th) {
- super(msg);
+ super(msg, th);
}
}
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
index 54ee3e04..d9dc1c72 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/AuthenticationFailedException.java
@@ -65,6 +65,6 @@ public AuthenticationFailedException(Throwable th) {
* The original cause
*/
public AuthenticationFailedException(String msg, Throwable th) {
- super(msg);
+ super(msg, th);
}
}
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
index f5e3d871..67b156e3 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpException.java
@@ -19,8 +19,6 @@
package org.apache.ftpserver.ftplet;
-import java.io.PrintStream;
-import java.io.PrintWriter;
/**
* Ftplet exception class.
@@ -31,8 +29,6 @@ public class FtpException extends Exception {
private static final long serialVersionUID = -1328383839915898987L;
- private Throwable throwable = null;
-
/**
* Default constructor.
*/
@@ -59,7 +55,6 @@ public FtpException(String msg) {
*/
public FtpException(Throwable th) {
super(th.getMessage());
- throwable = th;
}
/**
@@ -72,47 +67,14 @@ public FtpException(Throwable th) {
*/
public FtpException(String msg, Throwable th) {
super(msg);
- throwable = th;
}
/**
* Get the root cause.
* @return The root cause
+ * @deprecated Use {@link Exception#getCause()} instead
*/
public Throwable getRootCause() {
- return throwable;
- }
-
- /**
- * Print stack trace.
- */
- public void printStackTrace(PrintWriter pw) {
- if (throwable == null) {
- super.printStackTrace(pw);
- } else {
- throwable.printStackTrace(pw);
- }
- }
-
- /**
- * Print stack trace.
- */
- public void printStackTrace(PrintStream ps) {
- if (throwable == null) {
- super.printStackTrace(ps);
- } else {
- throwable.printStackTrace(ps);
- }
- }
-
- /**
- * Print stack trace.
- */
- public void printStackTrace() {
- if (throwable == null) {
- super.printStackTrace();
- } else {
- throwable.printStackTrace();
- }
+ return getCause();
}
}
From b8d91bfff5f055d07faabc498b96a6c00e05b3b3 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Tue, 22 Sep 2009 15:18:36 +0000
Subject: [PATCH 033/101] Setting the WAR plugin version. Creating unique
project names for Eclipse
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@817697 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/pom.xml b/pom.xml
index 372aef90..c8a77144 100644
--- a/pom.xml
+++ b/pom.xml
@@ -268,6 +268,7 @@
2.5.1true
+ [artifactId]-1.0.x
@@ -344,6 +345,11 @@
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 2.0.2
+
From d346c0f16361e6ce0b90131248951784c3892e30 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Thu, 24 Sep 2009 07:26:22 +0000
Subject: [PATCH 034/101] Fixing issue where we returned timestamps in the
local time zone rather than UTC as required by the RFC (FTPSERVER-330)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@818387 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/ftpserver/util/DateUtils.java | 9 ++++++---
.../apache/ftpserver/clienttests/MDTMTest.java | 17 +++++++++++++----
.../impl/listing/MLSTFileFormaterTest.java | 18 ++++++++++++------
.../org/apache/ftpserver/ftplet/FtpFile.java | 2 +-
4 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
index 76b3f337..e792eda9 100644
--- a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
@@ -36,6 +36,8 @@
*/
public class DateUtils {
+ private static final TimeZone TIME_ZONE_UTC = TimeZone.getTimeZone("UTC");
+
private final static String[] MONTHS = { "Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
@@ -64,7 +66,7 @@ public final static String getUnixDate(long millis) {
}
StringBuffer sb = new StringBuffer(16);
- Calendar cal = new GregorianCalendar();
+ Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);
cal.setTimeInMillis(millis);
// month
@@ -112,7 +114,7 @@ public final static String getUnixDate(long millis) {
*/
public final static String getISO8601Date(long millis) {
StringBuffer sb = new StringBuffer(19);
- Calendar cal = new GregorianCalendar();
+ Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);
cal.setTimeInMillis(millis);
// year
@@ -166,8 +168,9 @@ public final static String getISO8601Date(long millis) {
*/
public final static String getFtpDate(long millis) {
StringBuffer sb = new StringBuffer(20);
- Calendar cal = new GregorianCalendar();
+ Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);
cal.setTimeInMillis(millis);
+
// year
sb.append(cal.get(Calendar.YEAR));
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
index fc6d3bf8..d67e6596 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/MDTMTest.java
@@ -21,7 +21,9 @@
import java.io.File;
import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.Date;
+import java.util.TimeZone;
/**
*
@@ -30,7 +32,10 @@
public class MDTMTest extends ClientTestTemplate {
private static final SimpleDateFormat FTP_DATE_FORMAT = new SimpleDateFormat(
"yyyyMMddHHmmss.SSS");
-
+ static {
+ FTP_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
+
private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
private static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
@@ -50,11 +55,15 @@ public void testMDTMForFile() throws Exception {
assertFalse(TEST_FILE1.exists());
assertTrue(TEST_FILE1.createNewFile());
- Date expected = new Date(TEST_FILE1.lastModified());
+ Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ expected.clear();
+ expected.setTimeInMillis(TEST_FILE1.lastModified());
assertEquals(213, client.sendCommand("MDTM " + TEST_FILE1.getName()));
- Date actual = FTP_DATE_FORMAT.parse(client.getReplyString()
- .substring(4).trim());
+ Calendar actual = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ actual.clear();
+ actual.setTime(FTP_DATE_FORMAT.parse(client.getReplyString()
+ .substring(4).trim()));
assertEquals(expected, actual);
}
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
index 6d1f1f29..5e0e2b10 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/MLSTFileFormaterTest.java
@@ -22,8 +22,9 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.Date;
+import java.util.Calendar;
import java.util.List;
+import java.util.TimeZone;
import junit.framework.TestCase;
@@ -37,7 +38,11 @@
@SuppressWarnings("deprecation")
public class MLSTFileFormaterTest extends TestCase {
- private static final Date LAST_MODIFIED_IN_2005 = new Date(105, 1, 2, 3, 4);
+ private static final Calendar LAST_MODIFIED_IN_2005 = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+ static {
+ LAST_MODIFIED_IN_2005.clear();
+ LAST_MODIFIED_IN_2005.set(2005, Calendar.JANUARY, 2, 3, 4, 5);
+ }
private static final FtpFile TEST_FILE = new MockFileObject();
@@ -69,7 +74,7 @@ public String getGroupName() {
}
public long getLastModified() {
- return LAST_MODIFIED_IN_2005.getTime();
+ return LAST_MODIFIED_IN_2005.getTimeInMillis();
}
public int getLinkCount() {
@@ -131,7 +136,8 @@ public boolean setLastModified(long time) {
}
public void testSingleFile() {
- assertEquals("Size=13;Modify=20050202030400.000;Type=file; short\r\n",
+ // time should be in UTC
+ assertEquals("Size=13;Modify=20050102030405.000;Type=file; short\r\n",
formater.format(TEST_FILE));
}
@@ -151,8 +157,8 @@ public long getSize() {
};
- assertEquals("Size=0;Modify=20050202030400.000;Type=dir; short\r\n",
+ // time should be in UTC
+ assertEquals("Size=0;Modify=20050102030405.000;Type=dir; short\r\n",
formater.format(dir));
}
-
}
\ No newline at end of file
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
index 84d4b713..343f994d 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java
@@ -106,7 +106,7 @@ public interface FtpFile {
int getLinkCount();
/**
- * Get last modified time.
+ * Get last modified time in UTC.
* @return The timestamp of the last modified time for the {@link FtpFile}
*/
long getLastModified();
From 5d3959944f599094d638705973fde4d2e27efe35 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Thu, 24 Sep 2009 07:28:34 +0000
Subject: [PATCH 035/101] Fixing typo (FTPSERVER-332)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@818388 13f79535-47bb-0310-9956-ffa450edef68
---
ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
index 94f33623..0f94fb9b 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/User.java
@@ -78,7 +78,7 @@ public interface User {
boolean getEnabled();
/**
- * gGet the user home directory
+ * Get the user home directory
* @return The path to the home directory for the user
*/
String getHomeDirectory();
From 130fc8bf1bc1ed8abd19e45b8a542143401cee39 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Thu, 24 Sep 2009 07:37:34 +0000
Subject: [PATCH 036/101] Fixing issue where we incorrectly displayed hidden
files in file listings (FTPSERVER-326)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@818392 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/command/impl/listing/DirectoryLister.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
index ea7baeb5..610b076d 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
@@ -75,7 +75,7 @@ public String listFiles(final ListArgument argument,
List files = listFiles(fileSystemView, argument.getFile());
if (files != null) {
FileFilter filter = null;
- if ((argument.hasOption('a'))) {
+ if (!argument.hasOption('a')) {
filter = new VisibleFileFilter();
}
if (argument.getPattern() != null) {
From dcb09c7922d97175bed6eca3f06779c9111168d7 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 25 Sep 2009 08:00:58 +0000
Subject: [PATCH 037/101] Updating readme
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@818760 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/README.txt | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/distribution/README.txt b/distribution/README.txt
index db2f970e..df4bb9c1 100644
--- a/distribution/README.txt
+++ b/distribution/README.txt
@@ -13,13 +13,20 @@ you write Java code to process FTP event notifications that we call the Ftplet
API. Apache FtpServer provides an implementation of FTP server to support
this API.
+1.0.3
+--------------------------------
+Bug fix release that fixes the important issues found since the 1.0.2 release.
+See full change log at https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10571&fixfor=12314039
+
1.0.2
--------------------------------
Bug fix release that fixes the important issues found since the 1.0.1 release.
+See full change log at https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10571&fixfor=12313952
1.0.1
--------------------------------
Bug fix release that fixes the important issues found since the 1.0.0 release.
+See full change log at https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10571&fixfor=12313619
1.0.0
--------------------------------
From a5a18e0accf43be120b7c24fda0b23355b471eb6 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 25 Sep 2009 09:37:19 +0000
Subject: [PATCH 038/101] Increasing version for new development in 1.0.x
branch
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@818785 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 4 ++--
distribution/pom.xml | 4 ++--
examples/ftpserver-example-spring-war/pom.xml | 4 ++--
examples/ftpserver-osgi-ftplet-service/pom.xml | 4 ++--
examples/ftpserver-osgi-spring-service/pom.xml | 4 ++--
examples/pom.xml | 4 ++--
ftplet-api/pom.xml | 4 ++--
pom.xml | 2 +-
8 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index e2a2db80..56c28151 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -17,13 +17,13 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOT4.0.0org.apache.ftpserverftpserver-coreApache FtpServer Core
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOTbundle
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 0f547733..dce99689 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -22,14 +22,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOT4.0.0org.apache.ftpserverftpserverpomApache FtpServer
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOTscm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/distributionscm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution
diff --git a/examples/ftpserver-example-spring-war/pom.xml b/examples/ftpserver-example-spring-war/pom.xml
index 88626b45..6cdc55c1 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -18,7 +18,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOT../../pom.xml
@@ -27,7 +27,7 @@
ftpserver-spring-warFtpServer Spring web project examplewar
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOTorg.springframework
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index c7c14d93..c98c206f 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-ftplet-serviceFtpServer OSGi Ftplet service examplebundle
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index 88c80ffc..bc902c40 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-spring-serviceFtpServer OSGi Spring-DM examplebundle
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/pom.xml b/examples/pom.xml
index 957da8ed..b3ecd001 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,14 +21,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOT4.0.0org.apache.ftpserverr
ftpserver-examplespomApache FtpServer Examples
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOTftpserver-example-spring-warftpserver-osgi-ftplet-service
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index 39c44089..3b002d25 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -17,12 +17,12 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOT4.0.0org.apache.ftpserverftplet-api
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOTbundleApache Ftplet API Ftplets are, similar to servlets, an API to plug into the
diff --git a/pom.xml b/pom.xml
index c8a77144..ccc5055a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
ftpserver-parentpomApache FtpServer Parent
- 1.0.3-SNAPSHOT
+ 1.0.4-SNAPSHOThttp://mina.apache.org/ftpserverJira
From d3db22ce77cf8aafdd33d94bf592b5febbb4f371 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 28 Sep 2009 19:44:57 +0000
Subject: [PATCH 039/101] Reverting previous change so that LIST and STAT now
continues to return dates in the local server time zone. Also added a test
for checking this in the LIST command.
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@819692 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/util/DateUtils.java | 6 ++++--
.../java/org/apache/ftpserver/clienttests/ListTest.java | 9 +++++++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
index e792eda9..68b578a1 100644
--- a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
@@ -66,7 +66,7 @@ public final static String getUnixDate(long millis) {
}
StringBuffer sb = new StringBuffer(16);
- Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);
+ Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(millis);
// month
@@ -114,7 +114,7 @@ public final static String getUnixDate(long millis) {
*/
public final static String getISO8601Date(long millis) {
StringBuffer sb = new StringBuffer(19);
- Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);
+ Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(millis);
// year
@@ -168,6 +168,8 @@ public final static String getISO8601Date(long millis) {
*/
public final static String getFtpDate(long millis) {
StringBuffer sb = new StringBuffer(20);
+
+ // MLST should use UTC
Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);
cal.setTimeInMillis(millis);
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
index 6d9bd374..2414bf05 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
@@ -20,6 +20,7 @@
package org.apache.ftpserver.clienttests;
import java.io.File;
+import java.util.Calendar;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
@@ -112,6 +113,14 @@ public void testListFile() throws Exception {
assertEquals("user", file.getUser());
assertTrue(file.isFile());
assertFalse(file.isDirectory());
+
+ Calendar expectedTimestamp = Calendar.getInstance();
+ expectedTimestamp.setTimeInMillis(TEST_FILE1.lastModified());
+ // server does not supply seconds and milliseconds
+ expectedTimestamp.clear(Calendar.SECOND);
+ expectedTimestamp.clear(Calendar.MILLISECOND);
+
+ assertEquals(expectedTimestamp, file.getTimestamp());
}
public void testListFileNoArgument() throws Exception {
From e8608af6790a289ff9f0dd253050aca6e4986ffc Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Thu, 19 Nov 2009 11:27:00 +0000
Subject: [PATCH 040/101] Fixing NPE thrown when restarting a stopped FtpServer
and improving Javadoc for this (FTPSERVER-340)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@882110 13f79535-47bb-0310-9956-ffa450edef68
---
.../java/org/apache/ftpserver/impl/DefaultFtpServer.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
index caed535c..680bd19a 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServer.java
@@ -67,6 +67,10 @@ public DefaultFtpServer(final FtpServerContext serverContext) {
* @throws FtpException
*/
public void start() throws FtpException {
+ if (serverContext == null) {
+ // we have already been stopped, can not be restarted
+ throw new IllegalStateException("FtpServer has been stopped. Restart is not supported");
+ }
List startedListeners = new ArrayList();
@@ -99,7 +103,8 @@ public void start() throws FtpException {
}
/**
- * Stop the server. Stop the listener thread.
+ * Stop the server. Stopping the server will close completely and
+ * it not supported to restart using {@link #start()}.
*/
public void stop() {
if (serverContext == null) {
From 42edae67e81779b94f768907c05fb72cee278688 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 30 Nov 2009 09:51:33 +0000
Subject: [PATCH 041/101] Add check for non-zero port for the PORT command
(FTPSERVER-341) Fix incorrect reply codes for the PORT and EPRT commands
(FTPSERVER-342)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@885367 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/command/impl/EPRT.java | 10 ++---
.../apache/ftpserver/command/impl/PORT.java | 15 ++++---
.../ftpserver/message/FtpStatus.properties | 18 ++++----
.../ftpserver/clienttests/PortTest.java | 41 +++++++++++++++++++
4 files changed, 64 insertions(+), 20 deletions(-)
create mode 100644 core/src/test/java/org/apache/ftpserver/clienttests/PortTest.java
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java b/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
index 1769daa5..81506a15 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/EPRT.java
@@ -73,7 +73,7 @@ public void execute(final FtpIoSession session,
.getDataConnectionConfiguration();
if (!dataCfg.isActiveEnabled()) {
session.write(LocalizedFtpReply.translate(session, request, context,
- 510, "EPRT.disabled", null));
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, "EPRT.disabled", null));
return;
}
@@ -88,7 +88,7 @@ public void execute(final FtpIoSession session,
} catch (Exception ex) {
LOG.debug("Exception parsing host and port: " + arg, ex);
session.write(LocalizedFtpReply.translate(session, request, context,
- 510, "EPRT", null));
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, "EPRT", null));
return;
}
@@ -104,7 +104,7 @@ public void execute(final FtpIoSession session,
session,
request,
context,
- FtpReply.REPLY_553_REQUESTED_ACTION_NOT_TAKEN_FILE_NAME_NOT_ALLOWED,
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS,
"EPRT.host", null));
return;
}
@@ -116,7 +116,7 @@ public void execute(final FtpIoSession session,
.getRemoteAddress()).getAddress();
if (!dataAddr.equals(clientAddr)) {
session.write(LocalizedFtpReply.translate(session, request,
- context, 510, "EPRT.mismatch", null));
+ context, FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, "EPRT.mismatch", null));
return;
}
}
@@ -134,7 +134,7 @@ public void execute(final FtpIoSession session,
session,
request,
context,
- FtpReply.REPLY_552_REQUESTED_FILE_ACTION_ABORTED_EXCEEDED_STORAGE,
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS,
"EPRT.invalid", null));
return;
}
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java b/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
index 6d2c7c03..761dd4f3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/PORT.java
@@ -84,16 +84,21 @@ public void execute(final FtpIoSession session,
.getDataConnectionConfiguration();
if (!dataCfg.isActiveEnabled()) {
session.write(LocalizedFtpReply.translate(session, request, context,
- 510, "PORT.disabled", null));
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, "PORT.disabled", null));
return;
}
InetSocketAddress address;
try {
address = SocketAddressEncoder.decode(request.getArgument());
+
+ // port must not be 0
+ if(address.getPort() == 0) {
+ throw new IllegalPortException("PORT port must not be 0");
+ }
} catch (IllegalInetAddressException e) {
session.write(LocalizedFtpReply.translate(session, request, context,
- 510, "PORT", null));
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, "PORT", null));
return;
} catch (IllegalPortException e) {
LOG.debug("Invalid data port: " + request.getArgument(), e);
@@ -103,7 +108,7 @@ public void execute(final FtpIoSession session,
session,
request,
context,
- FtpReply.REPLY_552_REQUESTED_FILE_ACTION_ABORTED_EXCEEDED_STORAGE,
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS,
"PORT.invalid", null));
return;
} catch (UnknownHostException e) {
@@ -114,7 +119,7 @@ public void execute(final FtpIoSession session,
session,
request,
context,
- FtpReply.REPLY_553_REQUESTED_ACTION_NOT_TAKEN_FILE_NAME_NOT_ALLOWED,
+ FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS,
"PORT.host", null));
return;
}
@@ -126,7 +131,7 @@ public void execute(final FtpIoSession session,
.getRemoteAddress()).getAddress();
if (!address.getAddress().equals(clientAddr)) {
session.write(LocalizedFtpReply.translate(session, request,
- context, 510, "PORT.mismatch", null));
+ context, FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, "PORT.mismatch", null));
return;
}
}
diff --git a/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties b/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties
index 53944a2e..096343b5 100644
--- a/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties
+++ b/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties
@@ -57,11 +57,10 @@
450.DELE=Can't delete file {output.msg}.
501.EPRT=Syntax error in parameters or arguments.
-510.EPRT=Syntax error in parameters.
-510.EPRT.disabled=EPRT is disabled.
-510.EPRT.mismatch=EPRT IP is not same as {client.ip}.
-553.EPRT.host=Host unknown.
-552.EPRT.invalid=Not a valid port number.
+501.EPRT.disabled=EPRT is disabled.
+501.EPRT.mismatch=EPRT IP is not same as {client.ip}.
+501.EPRT.host=Host unknown.
+501.EPRT.invalid=Not a valid port number.
200.EPRT=Command EPRT okay.
425.EPSV=Can't open passive connection.
@@ -167,11 +166,10 @@
200.PBSZ=Command PBSZ okay.
501.PORT=Syntax error in parameters or arguments.
-510.PORT=Syntax error in parameters.
-510.PORT.disabled=PORT is disabled.
-510.PORT.mismatch=PORT IP is not same as {client.ip}.
-553.PORT.host=Host unknown.
-552.PORT.invalid=Not a valid port number.
+501.PORT.disabled=PORT is disabled.
+501.PORT.mismatch=PORT IP is not same as {client.ip}.
+501.PORT.host=Host unknown.
+501.PORT.invalid=Not a valid port number.
200.PORT=Command PORT okay.
501.PROT=Syntax error in parameters or arguments.
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PortTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PortTest.java
new file mode 100644
index 00000000..069b97d3
--- /dev/null
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PortTest.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.net.InetAddress;
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class PortTest extends ClientTestTemplate {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
+ }
+
+ public void testInvalidIpAndPort() throws Exception {
+ assertEquals(501, client.port(InetAddress.getByName("0.0.0.0"), 0));
+ }
+
+}
From 273dfa36a3fdb2e26f56750428e607dca254ed07 Mon Sep 17 00:00:00 2001
From: Sai Pullabhotla
Date: Thu, 28 Jan 2010 13:34:36 +0000
Subject: [PATCH 042/101] Fix for Jira Issue FTPSERVER-345
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@904082 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/command/impl/MD5.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
index eccc88b6..890a53e0 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
@@ -135,8 +135,14 @@ public void execute(final FtpIoSession session,
if (i > 0) {
sb.append(", ");
}
-
+ boolean nameHasSpaces = fileName.indexOf(' ') >= 0;
+ if(nameHasSpaces) {
+ sb.append('"');
+ }
sb.append(fileName);
+ if(nameHasSpaces) {
+ sb.append('"');
+ }
sb.append(' ');
sb.append(md5Hash);
From b6b92f726c492bf1d843214593c33824e36677e9 Mon Sep 17 00:00:00 2001
From: Sai Pullabhotla
Date: Thu, 28 Jan 2010 15:23:00 +0000
Subject: [PATCH 043/101] Fixed the test case to handle possible quotes around
file name in the reply.
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@904128 13f79535-47bb-0310-9956-ffa450edef68
---
.../test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java b/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
index f3e85045..d3adef35 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/FtpMd5Test.java
@@ -190,6 +190,9 @@ private Map parseReplyHash(String reply) {
int hashStart = token.lastIndexOf(' ');
String fileName = token.substring(0, hashStart).trim();
+ if(fileName.startsWith("\"") && fileName.endsWith("\"")) {
+ fileName = fileName.substring(1, fileName.length() - 1);
+ }
String hash = token.substring(hashStart).trim();
result.put(fileName, hash);
From e2219cba9e8cdb3bcf76fdd046e33b4da9fa7c1c Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Thu, 18 Feb 2010 21:49:13 +0000
Subject: [PATCH 044/101] Fixing bug where we did not correctly handle
multiline replies with lines starting with numbers (FTPSERVER-347)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@911609 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/ftpserver/impl/DefaultFtpReplyTest.java | 7 +++++++
.../java/org/apache/ftpserver/ftplet/DefaultFtpReply.java | 3 +++
2 files changed, 10 insertions(+)
diff --git a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
index 6a898195..05f629b9 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
@@ -71,4 +71,11 @@ public void testMultipleLinesToStringSpaceFirst() {
assertEquals("123-foo\r\n bar\r\n123 baz\r\n", response.toString());
}
+
+ public void testMultipleLinesToStringNumberFirst() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\n234bar\nbaz");
+
+ assertEquals("123-foo\r\n 234bar\r\n123 baz\r\n", response.toString());
+ }
+
}
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
index da1431fb..4a38e6ad 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
@@ -106,6 +106,9 @@ public String toString() {
sb.append(" ");
}
+ if(line.length() > 0 && Character.isDigit(line.charAt(0))) {
+ sb.append(" ");
+ }
sb.append(line);
sb.append(CRLF);
}
From 3251c11b269b5ae3daae09c2e5200053fcb370ad Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 27 Feb 2010 20:43:03 +0000
Subject: [PATCH 045/101] Remove check for File.fileSeparatorChar from MKD
command. Will fail incorrectly on custom file systems, and will disallow
creation of directories which the OS allows in some cases (FTPSERVER-348)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@917039 13f79535-47bb-0310-9956-ffa450edef68
---
core/src/main/java/org/apache/ftpserver/command/impl/MKD.java | 2 +-
.../java/org/apache/ftpserver/clienttests/DirectoryTest.java | 4 ----
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java b/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
index b497f5db..6ad39d74 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MKD.java
@@ -61,7 +61,7 @@ public void execute(final FtpIoSession session,
// argument check
String fileName = request.getArgument();
- if (fileName == null || fileName.indexOf(File.pathSeparatorChar) > -1) {
+ if (fileName == null) {
session.write(LocalizedFtpReply.translate(session, request, context,
FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS,
"MKD", null));
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
index 975d3fdd..c17e7684 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/DirectoryTest.java
@@ -56,10 +56,6 @@ public void testMkdirNoDirectoryName() throws Exception {
assertEquals(501, client.sendCommand("MKD"));
}
- public void testMkdirInValidDirectoryName() throws Exception {
- assertEquals(501, client.sendCommand("MKD foo:bar;foo"));
- }
-
/**
* FTPSERVER-233, we should not recursively create directories
*/
From 4e4adf86f8578f87f6358fd11118dfb7ddc3971c Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 7 Mar 2010 09:42:36 +0000
Subject: [PATCH 046/101] Adding factory for creating users, especially useful
in OSGi environment where access to BaseUser is inhibited (FTPSERVER-336)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@919954 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/usermanager/UserFactory.java | 159 ++++++++++++++++++
1 file changed, 159 insertions(+)
create mode 100644 core/src/main/java/org/apache/ftpserver/usermanager/UserFactory.java
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/UserFactory.java b/core/src/main/java/org/apache/ftpserver/usermanager/UserFactory.java
new file mode 100644
index 00000000..89b1a3f5
--- /dev/null
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/UserFactory.java
@@ -0,0 +1,159 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.usermanager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.ftpserver.ftplet.Authority;
+import org.apache.ftpserver.ftplet.User;
+import org.apache.ftpserver.usermanager.impl.BaseUser;
+
+/**
+ * Factory for {@link User} instances.
+ *
+ * @author Apache MINA Project
+ */
+public class UserFactory {
+
+ private String name = null;
+
+ private String password = null;
+
+ private int maxIdleTimeSec = 0; // no limit
+
+ private String homeDir = null;
+
+ private boolean isEnabled = true;
+
+ private List authorities = new ArrayList();
+
+ /**
+ * Creates a user based on the configuration set on the factory
+ * @return The created user
+ */
+ public User createUser() {
+ BaseUser user = new BaseUser();
+ user.setName(name);
+ user.setPassword(password);
+ user.setHomeDirectory(homeDir);
+ user.setEnabled(isEnabled);
+ user.setAuthorities(authorities);
+ user.setMaxIdleTime(maxIdleTimeSec);
+
+ return user;
+ }
+
+ /**
+ * Get the user name for users created by this factory
+ * @return The user name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Set the user name for users created by this factory
+ * @param name The user name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Get the password for users created by this factory
+ * @return The password
+ */
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Set the user name for users created by this factory
+ * @param password The password
+ */
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ /**
+ * Get the max idle time for users created by this factory
+ * @return The max idle time in seconds
+ */
+ public int getMaxIdleTime() {
+ return maxIdleTimeSec;
+ }
+
+ /**
+ * Set the user name for users created by this factory
+ * @param maxIdleTimeSec The max idle time in seconds
+ */
+ public void setMaxIdleTime(int maxIdleTimeSec) {
+ this.maxIdleTimeSec = maxIdleTimeSec;
+ }
+
+ /**
+ * Get the home directory for users created by this factory
+ * @return The home directory path
+ */
+ public String getHomeDirectory() {
+ return homeDir;
+ }
+
+ /**
+ * Set the user name for users created by this factory
+ * @param homeDir The home directory path
+ */
+ public void setHomeDirectory(String homeDir) {
+ this.homeDir = homeDir;
+ }
+
+ /**
+ * Get the enabled status for users created by this factory
+ * @return true if the user is enabled (allowed to log in)
+ */
+ public boolean isEnabled() {
+ return isEnabled;
+ }
+
+ /**
+ * Get the enabled status for users created by this factory
+ * @param isEnabled true if the user should be enabled (allowed to log in)
+ */
+ public void setEnabled(boolean isEnabled) {
+ this.isEnabled = isEnabled;
+ }
+
+ /**
+ * Get the authorities for users created by this factory
+ * @return The authorities
+ */
+ public List extends Authority> getAuthorities() {
+ return authorities;
+ }
+
+ /**
+ * Set the authorities for users created by this factory
+ * @param authorities The authorities
+ */
+ public void setAuthorities(List authorities) {
+ this.authorities = authorities;
+ }
+}
\ No newline at end of file
From fd9fe353716e57fbaa267782850ad9fea09ec08f Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 7 Mar 2010 10:07:40 +0000
Subject: [PATCH 047/101] Upgrading to MINA 2.0.0-RC1 (FTPSERVER-353)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@919958 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index ccc5055a..2b38fa4a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,7 +150,7 @@
org.apache.minamina-core
- 2.0.0-M6
+ 2.0.0-RC1org.easymock
From 2c119023bd644e65cd0855561ad4737f7de2bdd2 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 7 Mar 2010 13:21:13 +0000
Subject: [PATCH 048/101] Updated readme
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@919985 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/README.txt | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/distribution/README.txt b/distribution/README.txt
index df4bb9c1..ad30ddc4 100644
--- a/distribution/README.txt
+++ b/distribution/README.txt
@@ -1,5 +1,5 @@
The Apache FtpServer project team is proud to announce the release of
-Apache FtpServer, version 1.0.0
+Apache FtpServer, version 1.0.4
The Apache FTP Server is a 100% pure Java FTP server. It's designed to be
a complete and portable FTP server engine solution based on currently
@@ -13,20 +13,24 @@ you write Java code to process FTP event notifications that we call the Ftplet
API. Apache FtpServer provides an implementation of FTP server to support
this API.
+1.0.4
+--------------------------------
+Bug fix release that fixes the important issues found since the 1.0.3 release.
+See full change log at https://issues.apache.org/jira/browse/FTPSERVER/fixforversion/12314283
+
1.0.3
--------------------------------
Bug fix release that fixes the important issues found since the 1.0.2 release.
-See full change log at https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10571&fixfor=12314039
+See full change log at https://issues.apache.org/jira/browse/FTPSERVER/fixforversion/12314039
1.0.2
--------------------------------
Bug fix release that fixes the important issues found since the 1.0.1 release.
-See full change log at https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10571&fixfor=12313952
+See full change log at https://issues.apache.org/jira/browse/FTPSERVER/fixforversion/12313952
1.0.1
--------------------------------
-Bug fix release that fixes the important issues found since the 1.0.0 release.
-See full change log at https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10571&fixfor=12313619
+Bug fix release that fixes the important issues found since the 1.0.0 release. https://issues.apache.org/jira/browse/FTPSERVER/fixforversion/12313619
1.0.0
--------------------------------
From ec2e19b8817b31da56149bf3d577f373be5d715b Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 7 Mar 2010 13:31:19 +0000
Subject: [PATCH 049/101] Increasing version for new development in branch
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@919991 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 4 ++--
distribution/pom.xml | 4 ++--
examples/ftpserver-example-spring-war/pom.xml | 4 ++--
examples/ftpserver-osgi-ftplet-service/pom.xml | 4 ++--
examples/ftpserver-osgi-spring-service/pom.xml | 4 ++--
examples/pom.xml | 4 ++--
ftplet-api/pom.xml | 4 ++--
pom.xml | 2 +-
8 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index 56c28151..0c5e23fc 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -17,13 +17,13 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOT4.0.0org.apache.ftpserverftpserver-coreApache FtpServer Core
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOTbundle
diff --git a/distribution/pom.xml b/distribution/pom.xml
index dce99689..733c5064 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -22,14 +22,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOT4.0.0org.apache.ftpserverftpserverpomApache FtpServer
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOTscm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/distributionscm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution
diff --git a/examples/ftpserver-example-spring-war/pom.xml b/examples/ftpserver-example-spring-war/pom.xml
index 6cdc55c1..4482ec0f 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -18,7 +18,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOT../../pom.xml
@@ -27,7 +27,7 @@
ftpserver-spring-warFtpServer Spring web project examplewar
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOTorg.springframework
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index c98c206f..a6574cf7 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-ftplet-serviceFtpServer OSGi Ftplet service examplebundle
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index bc902c40..032671be 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-spring-serviceFtpServer OSGi Spring-DM examplebundle
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/pom.xml b/examples/pom.xml
index b3ecd001..fd33a834 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,14 +21,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOT4.0.0org.apache.ftpserverr
ftpserver-examplespomApache FtpServer Examples
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOTftpserver-example-spring-warftpserver-osgi-ftplet-service
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index 3b002d25..a765ab92 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -17,12 +17,12 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOT4.0.0org.apache.ftpserverftplet-api
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOTbundleApache Ftplet API Ftplets are, similar to servlets, an API to plug into the
diff --git a/pom.xml b/pom.xml
index 2b38fa4a..6531c19f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
ftpserver-parentpomApache FtpServer Parent
- 1.0.4-SNAPSHOT
+ 1.0.5-SNAPSHOThttp://mina.apache.org/ftpserverJira
From 3d3b793d9eabf21b60937dfa42a56c2caa5627ff Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 7 Mar 2010 17:51:34 +0000
Subject: [PATCH 050/101] Improving fix for padding lines in replies starting
with digits
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@920048 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/ftplet/DefaultFtpReply.java | 15 ++++++++++-
.../ftplet}/DefaultFtpReplyTest.java | 25 ++++++++++++++++---
2 files changed, 36 insertions(+), 4 deletions(-)
rename {core/src/test/java/org/apache/ftpserver/impl => ftplet-api/src/test/java/org/apache/ftpserver/ftplet}/DefaultFtpReplyTest.java (76%)
diff --git a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
index 4a38e6ad..2e6da2a7 100644
--- a/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
+++ b/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
@@ -19,6 +19,7 @@
package org.apache.ftpserver.ftplet;
+
/**
* FTP reply object.
*
@@ -72,6 +73,10 @@ public String getMessage() {
return message;
}
+ private boolean isDigit(char c) {
+ return c >= 48 && c <= 57;
+ }
+
/*
* (non-Javadoc)
*
@@ -106,7 +111,15 @@ public String toString() {
sb.append(" ");
}
- if(line.length() > 0 && Character.isDigit(line.charAt(0))) {
+ // "If an intermediary line begins with a 3-digit number, the Server
+ // must pad the front to avoid confusion.
+ if(i > 0
+ && i + 1 < lines.length
+ && line.length() > 2
+ && isDigit(line.charAt(0))
+ && isDigit(line.charAt(1))
+ && isDigit(line.charAt(2))
+ ) {
sb.append(" ");
}
sb.append(line);
diff --git a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java
similarity index 76%
rename from core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
rename to ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java
index 05f629b9..6abd560d 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
+++ b/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.ftpserver.impl;
+package org.apache.ftpserver.ftplet;
import junit.framework.TestCase;
@@ -25,7 +25,8 @@
/**
*
- * @author Apache MINA Project *
+ * @author Apache MINA Project
+ *
*/
public class DefaultFtpReplyTest extends TestCase {
@@ -72,10 +73,28 @@ public void testMultipleLinesToStringSpaceFirst() {
assertEquals("123-foo\r\n bar\r\n123 baz\r\n", response.toString());
}
- public void testMultipleLinesToStringNumberFirst() {
+ public void testMultipleLinesToStringThreeNumbers() {
DefaultFtpReply response = new DefaultFtpReply(123, "foo\n234bar\nbaz");
assertEquals("123-foo\r\n 234bar\r\n123 baz\r\n", response.toString());
}
+ public void testMultipleLinesToStringThreeNumbersOnFirstLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "234foo\nbar\nbaz");
+
+ assertEquals("123-234foo\r\nbar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringThreeNumbersOnLastLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\nbar\n234baz");
+
+ assertEquals("123-foo\r\nbar\r\n123 234baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringSingleNumberOnLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\n2bar\nbaz");
+
+ assertEquals("123-foo\r\n2bar\r\n123 baz\r\n", response.toString());
+ }
+
}
From 25dc35b1334b9831c7aca6318cb25af3a7cda94c Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Thu, 11 Mar 2010 07:39:44 +0000
Subject: [PATCH 051/101] Fixing typo in POM (FTPSERVER-356)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@921712 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 6531c19f..31bc0564 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
44.0.0
- org.apache.ftpserverr
+ org.apache.ftpserverftpserver-parentpomApache FtpServer Parent
From 09633b96fa48e7b39432215a7f38cf4fcd5d1f74 Mon Sep 17 00:00:00 2001
From: Sai Pullabhotla
Date: Mon, 29 Mar 2010 08:56:44 +0000
Subject: [PATCH 052/101] Fix for FTPSERVER-360
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@928650 13f79535-47bb-0310-9956-ffa450edef68
---
.../DefaultDataConnectionConfiguration.java | 22 +----
.../clienttests/PasvPortUnavailableTest.java | 82 +++++++++++++++++++
2 files changed, 83 insertions(+), 21 deletions(-)
create mode 100644 core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
index aa7a7485..ae1a94ec 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
@@ -122,25 +122,7 @@ public String getPassiveExernalAddress() {
* port will be used.
*/
public synchronized int requestPassivePort() {
- int dataPort = -1;
- int loopTimes = 2;
- Thread currThread = Thread.currentThread();
-
- while ((dataPort == -1) && (--loopTimes >= 0)
- && (!currThread.isInterrupted())) {
-
- // search for a free port
- dataPort = passivePorts.reserveNextPort();
-
- // no available free port - wait for the release notification
- if (dataPort == -1) {
- try {
- wait();
- } catch (InterruptedException ex) {
- }
- }
- }
- return dataPort;
+ return passivePorts.reserveNextPort();
}
/**
@@ -157,8 +139,6 @@ public String getPassivePorts() {
*/
public synchronized void releasePassivePort(final int port) {
passivePorts.releasePort(port);
-
- notify();
}
/**
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
new file mode 100644
index 00000000..f0146983
--- /dev/null
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.net.ServerSocket;
+
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.ftpserver.test.TestUtil;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class PasvPortUnavailableTest extends ClientTestTemplate {
+
+ private int passivePort;
+
+ @Override
+ protected FtpServerFactory createServer() throws Exception {
+ FtpServerFactory server = super.createServer();
+
+ ListenerFactory listenerFactory = new ListenerFactory(server
+ .getListener("default"));
+
+ DataConnectionConfigurationFactory dccFactory = new DataConnectionConfigurationFactory();
+
+ passivePort = TestUtil.findFreePort(12444);
+
+ dccFactory.setPassivePorts(String.valueOf(passivePort));
+
+ listenerFactory.setDataConnectionConfiguration(dccFactory
+ .createDataConnectionConfiguration());
+
+ server.addListener("default", listenerFactory.createListener());
+
+ return server;
+ }
+
+ public void testPasvPortUnavailable() throws Exception {
+ FTPClient[] clients = new FTPClient[3];
+ for(int i = 0; i < 3; i ++) {
+ clients[i] = createFTPClient();
+ clients[i] .connect("localhost", getListenerPort());
+ clients[i].login(ADMIN_USERNAME, ADMIN_PASSWORD);
+ clients[i].pasv();
+ if(i < 1) {
+ assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("227"));
+ }
+ else {
+ assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("425"));
+ }
+ }
+ for(int i = 0; i < 3; i ++) {
+ if(clients[i] != null) {
+ clients[i].disconnect();
+ }
+ }
+ }
+}
From 7a5ee919312f5568f687725e52f6fb3a81cb081d Mon Sep 17 00:00:00 2001
From: Sai Pullabhotla
Date: Mon, 29 Mar 2010 13:38:13 +0000
Subject: [PATCH 053/101] Implemented FTPSERVER-357
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@928772 13f79535-47bb-0310-9956-ffa450edef68
---
.../spring/ListenerBeanDefinitionParser.java | 608 +++++++++---------
.../ftpserver/ipfilter/DefaultIpFilter.java | 217 +++++++
.../apache/ftpserver/ipfilter/IpFilter.java | 43 ++
.../ftpserver/ipfilter/IpFilterType.java | 58 ++
.../ftpserver/ipfilter/MinaIpFilter.java | 69 ++
.../apache/ftpserver/listener/Listener.java | 36 +-
.../ftpserver/listener/ListenerFactory.java | 554 ++++++++--------
.../listener/nio/AbstractListener.java | 57 +-
.../ftpserver/listener/nio/NioListener.java | 41 +-
.../ftpserver/config/spring/ftpserver-1.0.xsd | 557 ++++++++--------
.../ftpserver/clienttests/IpFilterTest.java | 85 +++
.../config/spring/MyCustomListener.java | 217 ++++---
.../config/spring/SpringConfigTest.java | 233 ++++---
13 files changed, 1673 insertions(+), 1102 deletions(-)
create mode 100644 core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java
create mode 100644 core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java
create mode 100644 core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java
create mode 100644 core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java
create mode 100644 core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
index dbe31fbd..3d6f1134 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
@@ -1,316 +1,292 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.config.spring;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.ftpserver.DataConnectionConfiguration;
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
-import org.apache.ftpserver.listener.ListenerFactory;
-import org.apache.ftpserver.ssl.SslConfiguration;
-import org.apache.ftpserver.ssl.SslConfigurationFactory;
-import org.apache.mina.filter.firewall.Subnet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanDefinitionHolder;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
-import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.util.StringUtils;
-import org.w3c.dom.Element;
-
-/**
- * Parses the FtpServer "nio-listener" element into a Spring bean graph
- *
- * @author Apache MINA Project
- */
-public class ListenerBeanDefinitionParser extends
- AbstractSingleBeanDefinitionParser {
-
- private final Logger LOG = LoggerFactory
- .getLogger(ListenerBeanDefinitionParser.class);
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected Class> getBeanClass(final Element element) {
- return null;
- }
-
- /**
- * Parse CIDR notations into MINA {@link Subnet}s. TODO: move to Mina
- */
- private Subnet parseSubnet(final String subnet) {
- if (subnet == null) {
- throw new NullPointerException("subnet can not be null");
- }
-
- String[] tokens = subnet.split("/");
-
- String ipString;
- String maskString;
- if (tokens.length == 2) {
- ipString = tokens[0];
- maskString = tokens[1];
- } else if (tokens.length == 1) {
- ipString = tokens[0];
- maskString = "32";
- } else {
- throw new IllegalArgumentException("Illegal subnet format: "
- + subnet);
- }
-
- InetAddress address;
- try {
- address = InetAddress.getByName(ipString);
- } catch (UnknownHostException e) {
- throw new IllegalArgumentException("Illegal IP address in subnet: "
- + subnet);
- }
-
- int mask = Integer.parseInt(maskString);
- if (mask < 0 || mask > 32) {
- throw new IllegalArgumentException("Mask must be in the range 0-32");
- }
-
- return new Subnet(address, mask);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void doParse(final Element element,
- final ParserContext parserContext,
- final BeanDefinitionBuilder builder) {
-
- BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(ListenerFactory.class);
-
- if (StringUtils.hasText(element.getAttribute("port"))) {
- factoryBuilder.addPropertyValue("port", Integer.parseInt(element
- .getAttribute("port")));
- }
-
- SslConfiguration ssl = parseSsl(element);
- if (ssl != null) {
- factoryBuilder.addPropertyValue("sslConfiguration", ssl);
- }
-
- Element dataConElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "data-connection");
- DataConnectionConfiguration dc = parseDataConnection(dataConElm, ssl);
- factoryBuilder.addPropertyValue("dataConnectionConfiguration", dc);
-
- if (StringUtils.hasText(element.getAttribute("idle-timeout"))) {
- factoryBuilder.addPropertyValue("idleTimeout", SpringUtil.parseInt(
- element, "idle-timeout", 300));
- }
-
- String localAddress = SpringUtil.parseStringFromInetAddress(element,
- "local-address");
- if (localAddress != null) {
- factoryBuilder.addPropertyValue("serverAddress", localAddress);
- }
- factoryBuilder.addPropertyValue("implicitSsl", SpringUtil.parseBoolean(
- element, "implicit-ssl", false));
-
- Element blacklistElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "blacklist");
- if (blacklistElm != null
- && StringUtils.hasText(blacklistElm.getTextContent())) {
- String[] blocks = blacklistElm.getTextContent().split("[\\s,]+");
- List subnets = new ArrayList();
-
- for (String block : blocks) {
- subnets.add(parseSubnet(block));
- }
-
- factoryBuilder.addPropertyValue("blockedSubnets", subnets);
- }
-
- BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();
-
- String listenerFactoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);
-
- BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, listenerFactoryName);
- registerBeanDefinition(factoryHolder, parserContext.getRegistry());
-
- // set the factory on the listener bean
- builder.getRawBeanDefinition().setFactoryBeanName(listenerFactoryName);
- builder.getRawBeanDefinition().setFactoryMethodName("createListener");
- }
-
- private SslConfiguration parseSsl(final Element parent) {
- Element sslElm = SpringUtil.getChildElement(parent,
- FtpServerNamespaceHandler.FTPSERVER_NS, "ssl");
-
- if (sslElm != null) {
- SslConfigurationFactory ssl = new SslConfigurationFactory();
-
- Element keyStoreElm = SpringUtil.getChildElement(sslElm,
- FtpServerNamespaceHandler.FTPSERVER_NS, "keystore");
- if (keyStoreElm != null) {
- ssl.setKeystoreFile(SpringUtil.parseFile(keyStoreElm, "file"));
- ssl.setKeystorePassword(SpringUtil.parseString(keyStoreElm,
- "password"));
-
- String type = SpringUtil.parseString(keyStoreElm, "type");
- if (type != null) {
- ssl.setKeystoreType(type);
- }
-
- String keyAlias = SpringUtil.parseString(keyStoreElm,
- "key-alias");
- if (keyAlias != null) {
- ssl.setKeyAlias(keyAlias);
- }
-
- String keyPassword = SpringUtil.parseString(keyStoreElm,
- "key-password");
- if (keyPassword != null) {
- ssl.setKeyPassword(keyPassword);
- }
-
- String algorithm = SpringUtil.parseString(keyStoreElm,
- "algorithm");
- if (algorithm != null) {
- ssl.setKeystoreAlgorithm(algorithm);
- }
- }
-
- Element trustStoreElm = SpringUtil.getChildElement(sslElm,
- FtpServerNamespaceHandler.FTPSERVER_NS, "truststore");
- if (trustStoreElm != null) {
- ssl.setTruststoreFile(SpringUtil.parseFile(trustStoreElm,
- "file"));
- ssl.setTruststorePassword(SpringUtil.parseString(trustStoreElm,
- "password"));
-
- String type = SpringUtil.parseString(trustStoreElm, "type");
- if (type != null) {
- ssl.setTruststoreType(type);
- }
-
- String algorithm = SpringUtil.parseString(trustStoreElm,
- "algorithm");
- if (algorithm != null) {
- ssl.setTruststoreAlgorithm(algorithm);
- }
- }
-
- String clientAuthStr = SpringUtil.parseString(sslElm,
- "client-authentication");
- if (clientAuthStr != null) {
- ssl.setClientAuthentication(clientAuthStr);
- }
-
- String enabledCiphersuites = SpringUtil.parseString(sslElm,
- "enabled-ciphersuites");
- if (enabledCiphersuites != null) {
- ssl.setEnabledCipherSuites(enabledCiphersuites.split(" "));
- }
-
- String protocol = SpringUtil.parseString(sslElm, "protocol");
- if (protocol != null) {
- ssl.setSslProtocol(protocol);
- }
-
- return ssl.createSslConfiguration();
- } else {
- return null;
- }
-
- }
-
- private DataConnectionConfiguration parseDataConnection(
- final Element element,
- final SslConfiguration listenerSslConfiguration) {
- DataConnectionConfigurationFactory dc = new DataConnectionConfigurationFactory();
-
- if (element != null) {
-
- dc.setImplicitSsl(SpringUtil.parseBoolean(element, "implicit-ssl", false));
-
- // data con config element available
- SslConfiguration ssl = parseSsl(element);
-
- if (ssl != null) {
- LOG.debug("SSL configuration found for the data connection");
- dc.setSslConfiguration(ssl);
- }
-
- dc.setIdleTime(SpringUtil.parseInt(element, "idle-timeout", dc.getIdleTime()));
-
- Element activeElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "active");
- if (activeElm != null) {
- dc.setActiveEnabled(SpringUtil.parseBoolean(activeElm, "enabled",
- true));
- dc.setActiveIpCheck(SpringUtil.parseBoolean(activeElm,
- "ip-check", false));
- dc.setActiveLocalPort(SpringUtil.parseInt(activeElm,
- "local-port", 0));
-
- String localAddress = SpringUtil.parseStringFromInetAddress(
- activeElm, "local-address");
- if (localAddress != null) {
- dc.setActiveLocalAddress(localAddress);
- }
- }
-
- Element passiveElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "passive");
- if (passiveElm != null) {
- String address = SpringUtil.parseStringFromInetAddress(passiveElm,
- "address");
- if (address != null) {
- dc.setPassiveAddress(address);
- }
-
- String externalAddress = SpringUtil.parseStringFromInetAddress(
- passiveElm, "external-address");
- if (externalAddress != null) {
- dc.setPassiveExternalAddress(externalAddress);
- }
-
- String ports = SpringUtil.parseString(passiveElm, "ports");
- if (ports != null) {
- dc.setPassivePorts(ports);
- }
- }
- } else {
- // no data conn config element, do we still have SSL config from the
- // parent?
- if (listenerSslConfiguration != null) {
- LOG
- .debug("SSL configuration found for the listener, falling back for that for the data connection");
- dc.setSslConfiguration(listenerSslConfiguration);
- }
- }
-
- return dc.createDataConnectionConfiguration();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.config.spring;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.apache.ftpserver.DataConnectionConfiguration;
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerConfigurationException;
+import org.apache.ftpserver.ipfilter.DefaultIpFilter;
+import org.apache.ftpserver.ipfilter.IpFilterType;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.ftpserver.ssl.SslConfiguration;
+import org.apache.ftpserver.ssl.SslConfigurationFactory;
+import org.apache.mina.filter.firewall.Subnet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanDefinitionHolder;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.StringUtils;
+import org.w3c.dom.Element;
+
+/**
+ * Parses the FtpServer "nio-listener" element into a Spring bean graph
+ *
+ * @author Apache MINA Project
+ */
+public class ListenerBeanDefinitionParser extends
+ AbstractSingleBeanDefinitionParser {
+
+ private final Logger LOG = LoggerFactory
+ .getLogger(ListenerBeanDefinitionParser.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected Class> getBeanClass(final Element element) {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void doParse(final Element element,
+ final ParserContext parserContext,
+ final BeanDefinitionBuilder builder) {
+
+ BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(ListenerFactory.class);
+
+ if (StringUtils.hasText(element.getAttribute("port"))) {
+ factoryBuilder.addPropertyValue("port", Integer.parseInt(element
+ .getAttribute("port")));
+ }
+
+ SslConfiguration ssl = parseSsl(element);
+ if (ssl != null) {
+ factoryBuilder.addPropertyValue("sslConfiguration", ssl);
+ }
+
+ Element dataConElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "data-connection");
+ DataConnectionConfiguration dc = parseDataConnection(dataConElm, ssl);
+ factoryBuilder.addPropertyValue("dataConnectionConfiguration", dc);
+
+ if (StringUtils.hasText(element.getAttribute("idle-timeout"))) {
+ factoryBuilder.addPropertyValue("idleTimeout", SpringUtil.parseInt(
+ element, "idle-timeout", 300));
+ }
+
+ String localAddress = SpringUtil.parseStringFromInetAddress(element,
+ "local-address");
+ if (localAddress != null) {
+ factoryBuilder.addPropertyValue("serverAddress", localAddress);
+ }
+ factoryBuilder.addPropertyValue("implicitSsl", SpringUtil.parseBoolean(
+ element, "implicit-ssl", false));
+
+ Element blacklistElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "blacklist");
+ if (blacklistElm != null) {
+ LOG.warn("Element 'blacklist' is deprecated, and may be removed in a future release. Please use 'ip-filter' instead. ");
+ try {
+ DefaultIpFilter ipFilter = new DefaultIpFilter(IpFilterType.DENY, blacklistElm.getTextContent());
+ factoryBuilder.addPropertyValue("ipFilter", ipFilter);
+ }
+ catch (UnknownHostException e) {
+ throw new IllegalArgumentException("Invalid IP address or subnet in the 'blacklist' element", e);
+ }
+ }
+
+ Element ipFilterElement = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS, "ip-filter");
+ if(ipFilterElement != null) {
+ if(blacklistElm != null) {
+ throw new FtpServerConfigurationException("Element 'ipFilter' may not be used when 'blacklist' element is specified. ");
+ }
+ String filterType = ipFilterElement.getAttribute("type");
+ try {
+ DefaultIpFilter ipFilter = new DefaultIpFilter(IpFilterType.parse(filterType), ipFilterElement.getTextContent());
+ factoryBuilder.addPropertyValue("ipFilter", ipFilter);
+ }
+ catch (UnknownHostException e) {
+ throw new IllegalArgumentException("Invalid IP address or subnet in the 'ip-filter' element");
+ }
+ }
+
+ BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();
+
+ String listenerFactoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);
+
+ BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, listenerFactoryName);
+ registerBeanDefinition(factoryHolder, parserContext.getRegistry());
+
+ // set the factory on the listener bean
+ builder.getRawBeanDefinition().setFactoryBeanName(listenerFactoryName);
+ builder.getRawBeanDefinition().setFactoryMethodName("createListener");
+ }
+
+ private SslConfiguration parseSsl(final Element parent) {
+ Element sslElm = SpringUtil.getChildElement(parent,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "ssl");
+
+ if (sslElm != null) {
+ SslConfigurationFactory ssl = new SslConfigurationFactory();
+
+ Element keyStoreElm = SpringUtil.getChildElement(sslElm,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "keystore");
+ if (keyStoreElm != null) {
+ ssl.setKeystoreFile(SpringUtil.parseFile(keyStoreElm, "file"));
+ ssl.setKeystorePassword(SpringUtil.parseString(keyStoreElm,
+ "password"));
+
+ String type = SpringUtil.parseString(keyStoreElm, "type");
+ if (type != null) {
+ ssl.setKeystoreType(type);
+ }
+
+ String keyAlias = SpringUtil.parseString(keyStoreElm,
+ "key-alias");
+ if (keyAlias != null) {
+ ssl.setKeyAlias(keyAlias);
+ }
+
+ String keyPassword = SpringUtil.parseString(keyStoreElm,
+ "key-password");
+ if (keyPassword != null) {
+ ssl.setKeyPassword(keyPassword);
+ }
+
+ String algorithm = SpringUtil.parseString(keyStoreElm,
+ "algorithm");
+ if (algorithm != null) {
+ ssl.setKeystoreAlgorithm(algorithm);
+ }
+ }
+
+ Element trustStoreElm = SpringUtil.getChildElement(sslElm,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "truststore");
+ if (trustStoreElm != null) {
+ ssl.setTruststoreFile(SpringUtil.parseFile(trustStoreElm,
+ "file"));
+ ssl.setTruststorePassword(SpringUtil.parseString(trustStoreElm,
+ "password"));
+
+ String type = SpringUtil.parseString(trustStoreElm, "type");
+ if (type != null) {
+ ssl.setTruststoreType(type);
+ }
+
+ String algorithm = SpringUtil.parseString(trustStoreElm,
+ "algorithm");
+ if (algorithm != null) {
+ ssl.setTruststoreAlgorithm(algorithm);
+ }
+ }
+
+ String clientAuthStr = SpringUtil.parseString(sslElm,
+ "client-authentication");
+ if (clientAuthStr != null) {
+ ssl.setClientAuthentication(clientAuthStr);
+ }
+
+ String enabledCiphersuites = SpringUtil.parseString(sslElm,
+ "enabled-ciphersuites");
+ if (enabledCiphersuites != null) {
+ ssl.setEnabledCipherSuites(enabledCiphersuites.split(" "));
+ }
+
+ String protocol = SpringUtil.parseString(sslElm, "protocol");
+ if (protocol != null) {
+ ssl.setSslProtocol(protocol);
+ }
+
+ return ssl.createSslConfiguration();
+ } else {
+ return null;
+ }
+
+ }
+
+ private DataConnectionConfiguration parseDataConnection(
+ final Element element,
+ final SslConfiguration listenerSslConfiguration) {
+ DataConnectionConfigurationFactory dc = new DataConnectionConfigurationFactory();
+
+ if (element != null) {
+
+ dc.setImplicitSsl(SpringUtil.parseBoolean(element, "implicit-ssl", false));
+
+ // data con config element available
+ SslConfiguration ssl = parseSsl(element);
+
+ if (ssl != null) {
+ LOG.debug("SSL configuration found for the data connection");
+ dc.setSslConfiguration(ssl);
+ }
+
+ dc.setIdleTime(SpringUtil.parseInt(element, "idle-timeout", dc.getIdleTime()));
+
+ Element activeElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "active");
+ if (activeElm != null) {
+ dc.setActiveEnabled(SpringUtil.parseBoolean(activeElm, "enabled",
+ true));
+ dc.setActiveIpCheck(SpringUtil.parseBoolean(activeElm,
+ "ip-check", false));
+ dc.setActiveLocalPort(SpringUtil.parseInt(activeElm,
+ "local-port", 0));
+
+ String localAddress = SpringUtil.parseStringFromInetAddress(
+ activeElm, "local-address");
+ if (localAddress != null) {
+ dc.setActiveLocalAddress(localAddress);
+ }
+ }
+
+ Element passiveElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "passive");
+ if (passiveElm != null) {
+ String address = SpringUtil.parseStringFromInetAddress(passiveElm,
+ "address");
+ if (address != null) {
+ dc.setPassiveAddress(address);
+ }
+
+ String externalAddress = SpringUtil.parseStringFromInetAddress(
+ passiveElm, "external-address");
+ if (externalAddress != null) {
+ dc.setPassiveExternalAddress(externalAddress);
+ }
+
+ String ports = SpringUtil.parseString(passiveElm, "ports");
+ if (ports != null) {
+ dc.setPassivePorts(ports);
+ }
+ }
+ } else {
+ // no data conn config element, do we still have SSL config from the
+ // parent?
+ if (listenerSslConfiguration != null) {
+ LOG
+ .debug("SSL configuration found for the listener, falling back for that for the data connection");
+ dc.setSslConfiguration(listenerSslConfiguration);
+ }
+ }
+
+ return dc.createDataConnectionConfiguration();
+ }
+
+}
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java b/core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java
new file mode 100644
index 00000000..0eb55283
--- /dev/null
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java
@@ -0,0 +1,217 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import org.apache.mina.filter.firewall.Subnet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Default implementation of the IpFilter interface, which uses
+ * specific IP addresses or ranges of IP addresses that can be blocked or
+ * allowed.
+ *
+ * @author Apache MINA Project
+ *
+ */
+
+public class DefaultIpFilter extends CopyOnWriteArraySet implements
+ IpFilter {
+
+ /**
+ * Logger
+ */
+ Logger LOGGER = LoggerFactory.getLogger(DefaultIpFilter.class);
+
+ /**
+ * Serial version UID
+ */
+ private static final long serialVersionUID = 4887092372700628783L;
+
+ /**
+ * filter type
+ */
+ private IpFilterType type = null;
+
+ /**
+ * Creates a new instance of DefaultIpFilter.
+ *
+ * @param type
+ * the filter type
+ */
+ public DefaultIpFilter(IpFilterType type) {
+ this(type, new HashSet(0));
+ }
+
+ /**
+ * Creates a new instance of DefaultIpFilter.
+ *
+ * @param type
+ * the filter type
+ * @param collection
+ * a collection of Subnets to filter out/in.
+ */
+ public DefaultIpFilter(IpFilterType type,
+ Collection extends Subnet> collection) {
+ super(collection);
+ this.type = type;
+ }
+
+ /**
+ * Creates a new instance of DefaultIpFilter.
+ *
+ * @param type
+ * the filter type
+ * @param addresses
+ * a comma, space, tab, LF separated list of IP addresses/CIDRs.
+ * @throws UnknownHostException
+ * propagated
+ * @throws NumberFormatException
+ * propagated
+ */
+ public DefaultIpFilter(IpFilterType type, String addresses)
+ throws NumberFormatException, UnknownHostException {
+ super();
+ this.type = type;
+ if (addresses != null) {
+ String[] tokens = addresses.split("[\\s,]+");
+ for (String token : tokens) {
+ if (token.trim().length() > 0) {
+ add(token);
+ }
+ }
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Created DefaultIpFilter of type {} with the subnets {}", type,
+ this);
+ }
+ }
+
+ /**
+ * Returns the type of this filter.
+ *
+ * @return the type of this filter.
+ */
+ public IpFilterType getType() {
+ return type;
+ }
+
+ /**
+ * Sets the type of this filter.
+ *
+ * @param type
+ * the type of this filter.
+ */
+ // TODO should we allow changing the filter type once it is created? I don't
+ // think we should.
+ public void setType(IpFilterType type) {
+ this.type = type;
+ }
+
+ /**
+ * Adds the given string representation of InetAddress or CIDR notation to
+ * this filter.
+ *
+ * @param str
+ * the string representation of InetAddress or CIDR notation
+ * @return if the given element was added or not. true, if the
+ * given element was added to the filter; false, if the
+ * element already exists in the filter.
+ * @throws NumberFormatException
+ * propagated
+ * @throws UnknownHostException
+ * propagated
+ */
+ public boolean add(String str) throws NumberFormatException,
+ UnknownHostException {
+ // This is required so we do not block loopback address if some one adds
+ // a string with blanks as the InetAddress class assumes loopback
+ // address on blank string.
+ if (str.trim().length() < 1) {
+ throw new IllegalArgumentException("Invalid IP Address or Subnet: "
+ + str);
+ }
+ String[] tokens = str.split("/");
+ if (tokens.length == 2) {
+ return add(new Subnet(InetAddress.getByName(tokens[0]),
+ Integer.parseInt(tokens[1])));
+ }
+ else {
+ return add(new Subnet(InetAddress.getByName(tokens[0]), 32));
+ }
+ }
+
+ public boolean accept(InetAddress address) {
+ switch (type) {
+ case ALLOW:
+ for (Subnet subnet : this) {
+ if (subnet.inSubnet(address)) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Allowing connection from {} because it matches with the whitelist subnet {}",
+ new Object[] { address, subnet });
+ }
+ return true;
+ }
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Denying connection from {} because it does not match any of the whitelist subnets",
+ new Object[] { address });
+ }
+ return false;
+ case DENY:
+ if (isEmpty()) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Allowing connection from {} because blacklist is empty",
+ new Object[] { address });
+ }
+ return true;
+ }
+ for (Subnet subnet : this) {
+ if (subnet.inSubnet(address)) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Denying connection from {} because it matches with the blacklist subnet {}",
+ new Object[] { address, subnet });
+ }
+ return false;
+ }
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Allowing connection from {} because it does not match any of the blacklist subnets",
+ new Object[] { address });
+ }
+ return true;
+ default:
+ throw new RuntimeException(
+ "Unknown or unimplemented filter type: " + type);
+ }
+ }
+}
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java
new file mode 100644
index 00000000..53b2b534
--- /dev/null
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+import java.net.InetAddress;
+
+/**
+ * The interface for filtering connections based on the client's IP address.
+ *
+ * @author Apache MINA Project
+ *
+ */
+
+public interface IpFilter {
+
+ /**
+ * Tells whether or not the given IP address is accepted by this filter.
+ *
+ * @param address
+ * the IP address to check
+ * @return true, if the given IP address is accepted by this
+ * filter; false, otherwise.
+ */
+ public boolean accept(InetAddress address);
+
+}
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java
new file mode 100644
index 00000000..9538d2e8
--- /dev/null
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+/**
+ * Defines various types of IP Filters.
+ *
+ * @author Apache MINA Project
+ *
+ */
+public enum IpFilterType {
+
+ /**
+ * filter type that allows a set of predefined IP addresses, also known as a
+ * white list.
+ */
+ ALLOW,
+
+ /**
+ * filter type that blocks a set of predefined IP addresses, also known as a
+ * black list.
+ */
+ DENY;
+
+ /**
+ * Parses the given string into its equivalent enum.
+ *
+ * @param value
+ * the string value to parse.
+ * @return the equivalent enum
+ */
+ public static IpFilterType parse(String value) {
+ for (IpFilterType type : values()) {
+ if (type.name().equalsIgnoreCase(value)) {
+ return type;
+ }
+ }
+ throw new IllegalArgumentException("Invalid IpFilterType: " + value);
+ }
+
+}
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java b/core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java
new file mode 100644
index 00000000..77451ccb
--- /dev/null
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
+import org.apache.mina.core.filterchain.IoFilterAdapter;
+import org.apache.mina.core.session.IoSession;
+
+/**
+ * An implementation of Mina Filter to filter clients based on the originating
+ * IP address.
+ *
+ * @author Apache MINA Project
+ *
+ */
+
+public class MinaIpFilter extends IoFilterAdapter {
+
+ /**
+ * The actual IpFilter used by this filter.
+ */
+ private IpFilter filter = null;
+
+ /**
+ * Creates a new instance of MinaIpFilter.
+ *
+ * @param filter
+ * the filter
+ */
+ public MinaIpFilter(IpFilter filter) {
+ this.filter = filter;
+ }
+
+ @Override
+ public void sessionCreated(NextFilter nextFilter, IoSession session) {
+ SocketAddress remoteAddress = session.getRemoteAddress();
+ if (remoteAddress instanceof InetSocketAddress) {
+ InetAddress ipAddress = ((InetSocketAddress) remoteAddress).getAddress();
+ // TODO we probably have to check if the InetAddress is a version 4
+ // address, or else, the result would probably be unknown.
+ if (!filter.accept(ipAddress)) {
+ session.close(true);
+ }
+ else {
+ nextFilter.sessionCreated(session);
+ }
+ }
+ }
+}
diff --git a/core/src/main/java/org/apache/ftpserver/listener/Listener.java b/core/src/main/java/org/apache/ftpserver/listener/Listener.java
index 05bac9c3..ce9d90cf 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/Listener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/Listener.java
@@ -26,6 +26,7 @@
import org.apache.ftpserver.DataConnectionConfiguration;
import org.apache.ftpserver.impl.FtpIoSession;
import org.apache.ftpserver.impl.FtpServerContext;
+import org.apache.ftpserver.ipfilter.IpFilter;
import org.apache.ftpserver.ssl.SslConfiguration;
import org.apache.mina.filter.firewall.Subnet;
@@ -138,17 +139,36 @@ public interface Listener {
int getIdleTimeout();
/**
- * Retrieves the {@link InetAddress} for which this listener blocks
- * connections
- *
- * @return The list of {@link InetAddress}es
- */
- List getBlockedAddresses();
+ * @deprecated Replaced by IpFilter. Retrieves the {@link InetAddress} for
+ * which this listener blocks connections.
+ *
+ * @return The list of {@link InetAddress}es. This method returns a valid
+ * list if and only if there is an IpFilter set, and,
+ * if it is an instance of DefaultIpFilter and it is of
+ * type IpFilterType.DENY. This functionality is
+ * provided for backward compatibility purpose only.
+ */
+ @Deprecated
+ List getBlockedAddresses();
/**
- * Retrieves the {@link Subnet}s for this listener blocks connections
+ * @deprecated Replaced by IpFilter.
+ * Retrieves the {@link Subnet}s for this listener blocks connections.
*
- * @return The list of {@link Subnet}s
+ * @return The list of {@link Subnet}s. This method returns a valid
+ * list if and only if there is an IpFilter set, and,
+ * if it is an instance of DefaultIpFilter and it is of
+ * type IpFilterType.DENY. This functionality is
+ * provided for backward compatibility purpose only.
*/
List getBlockedSubnets();
+
+ /**
+ * Returns the IP filter associated with this listener. May return
+ * null.
+ *
+ * @return the IP filter associated with this listener. May return
+ * null.
+ */
+ IpFilter getIpFilter();
}
\ No newline at end of file
diff --git a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
index d98120c4..1a3532b6 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
@@ -1,255 +1,301 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.listener;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.List;
-
-import org.apache.ftpserver.DataConnectionConfiguration;
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
-import org.apache.ftpserver.FtpServerConfigurationException;
-import org.apache.ftpserver.listener.nio.NioListener;
-import org.apache.ftpserver.ssl.SslConfiguration;
-import org.apache.mina.filter.firewall.Subnet;
-
-/**
- * Factory for listeners. Listeners themselves are immutable and must be
- * created using this factory.
- *
- * @author Apache MINA Project
- */
-public class ListenerFactory {
-
- private String serverAddress;
-
- private int port = 21;
-
- private SslConfiguration ssl;
-
- private boolean implicitSsl = false;
-
- private DataConnectionConfiguration dataConnectionConfig = new DataConnectionConfigurationFactory()
- .createDataConnectionConfiguration();
-
- private int idleTimeout = 300;
-
- private List blockedAddresses;
-
- private List blockedSubnets;
-
- /**
- * Default constructor
- */
- public ListenerFactory() {
- // do nothing
- }
-
- /**
- * Copy constructor, will copy properties from the provided listener.
- * @param listener The listener which properties will be used for this factory
- */
- public ListenerFactory(Listener listener) {
- serverAddress = listener.getServerAddress();
- port = listener.getPort();
- ssl = listener.getSslConfiguration();
- implicitSsl = listener.isImplicitSsl();
- dataConnectionConfig = listener.getDataConnectionConfiguration();
- idleTimeout = listener.getIdleTimeout();
- blockedAddresses = listener.getBlockedAddresses();
- blockedSubnets = listener.getBlockedSubnets();
- }
-
- /**
- * Create a listener based on the settings of this factory. The listener is immutable.
- * @return The created listener
- */
- public Listener createListener() {
- try{
- InetAddress.getByName(serverAddress);
- }catch(UnknownHostException e){
- throw new FtpServerConfigurationException("Unknown host",e);
- }
- return new NioListener(serverAddress, port, implicitSsl, ssl,
- dataConnectionConfig, idleTimeout, blockedAddresses,
- blockedSubnets);
- }
-
- /**
- * Is listeners created by this factory in SSL mode automatically or must the client explicitly
- * request to use SSL
- *
- * @return true is listeners created by this factory is automatically in SSL mode, false
- * otherwise
- */
- public boolean isImplicitSsl() {
- return implicitSsl;
- }
-
- /**
- * Should listeners created by this factory be in SSL mode automatically or must the client
- * explicitly request to use SSL
- *
- * @param implicitSsl
- * true is listeners created by this factory should automatically be in SSL mode,
- * false otherwise
- */
- public void setImplicitSsl(boolean implicitSsl) {
- this.implicitSsl = implicitSsl;
- }
-
- /**
- * Get the port on which listeners created by this factory is waiting for requests.
- *
- * @return The port
- */
- public int getPort() {
- return port;
- }
-
- /**
- * Set the port on which listeners created by this factory will accept requests. Or set to 0
- * (zero) is the port should be automatically assigned
- *
- * @param port
- * The port to use.
- */
- public void setPort(int port) {
- this.port = port;
- }
-
- /**
- * Get the {@link InetAddress} used for binding the local socket. Defaults
- * to null, that is, the server binds to all available network interfaces
- *
- * @return The local socket {@link InetAddress}, if set
- */
- public String getServerAddress() {
- return serverAddress;
- }
-
- /**
- * Set the {@link InetAddress} used for binding the local socket. Defaults
- * to null, that is, the server binds to all available network interfaces
- *
- * @param serverAddress
- * The local socket {@link InetAddress}
- */
- public void setServerAddress(String serverAddress) {
- this.serverAddress = serverAddress;
- }
-
- /**
- * Get the {@link SslConfiguration} used for listeners created by this factory
- *
- * @return The {@link SslConfiguration}
- */
- public SslConfiguration getSslConfiguration() {
- return ssl;
- }
-
- /**
- * Set the {@link SslConfiguration} to use by listeners created by this factory
- * @param ssl The {@link SslConfiguration}
- */
- public void setSslConfiguration(SslConfiguration ssl) {
- this.ssl = ssl;
- }
-
- /**
- * Get configuration for data connections made within listeners created by this factory
- *
- * @return The data connection configuration
- */
- public DataConnectionConfiguration getDataConnectionConfiguration() {
- return dataConnectionConfig;
- }
-
- /**
- * Set configuration for data connections made within listeners created by this factory
- *
- * @param dataConnectionConfig
- * The data connection configuration
- */
- public void setDataConnectionConfiguration(
- DataConnectionConfiguration dataConnectionConfig) {
- this.dataConnectionConfig = dataConnectionConfig;
- }
-
- /**
- * Get the number of seconds during which no network activity
- * is allowed before a session is closed due to inactivity.
- * @return The idle time out
- */
- public int getIdleTimeout() {
- return idleTimeout;
- }
-
- /**
- * Set the number of seconds during which no network activity
- * is allowed before a session is closed due to inactivity.
- *
- * @param idleTimeout The idle timeout in seconds
- */
- public void setIdleTimeout(int idleTimeout) {
- this.idleTimeout = idleTimeout;
- }
-
- /**
- * Retrives the {@link InetAddress} for which listeners created by this factory blocks
- * connections
- *
- * @return The list of {@link InetAddress}es
- */
- public List getBlockedAddresses() {
- return blockedAddresses;
- }
-
- /**
- * Sets the {@link InetAddress} that listeners created by this factory will block from
- * connecting
- *
- * @param blockedAddresses
- * The list of {@link InetAddress}es
- */
- public void setBlockedAddresses(List blockedAddresses) {
- this.blockedAddresses = blockedAddresses;
- }
-
- /**
- * Retrives the {@link Subnet}s for which listeners created by this factory blocks connections
- *
- * @return The list of {@link Subnet}s
- */
- public List getBlockedSubnets() {
- return blockedSubnets;
- }
-
- /**
- * Sets the {@link Subnet}s that listeners created by this factory will block from connecting
- * @param blockedSubnets
- * The list of {@link Subnet}s
- * @param blockedAddresses
- */
- public void setBlockedSubnets(List blockedSubnets) {
- this.blockedSubnets = blockedSubnets;
- }
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.listener;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.List;
+
+import org.apache.ftpserver.DataConnectionConfiguration;
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerConfigurationException;
+import org.apache.ftpserver.ipfilter.IpFilter;
+import org.apache.ftpserver.listener.nio.NioListener;
+import org.apache.ftpserver.ssl.SslConfiguration;
+import org.apache.mina.filter.firewall.Subnet;
+
+/**
+ * Factory for listeners. Listeners themselves are immutable and must be
+ * created using this factory.
+ *
+ * @author Apache MINA Project
+ */
+public class ListenerFactory {
+
+ private String serverAddress;
+
+ private int port = 21;
+
+ private SslConfiguration ssl;
+
+ private boolean implicitSsl = false;
+
+ private DataConnectionConfiguration dataConnectionConfig = new DataConnectionConfigurationFactory()
+ .createDataConnectionConfiguration();
+
+ private int idleTimeout = 300;
+
+ private List blockedAddresses;
+
+ private List blockedSubnets;
+
+ /**
+ * The IP filter
+ */
+ private IpFilter ipFilter = null;
+
+ /**
+ * Default constructor
+ */
+ public ListenerFactory() {
+ // do nothing
+ }
+
+ /**
+ * Copy constructor, will copy properties from the provided listener.
+ * @param listener The listener which properties will be used for this factory
+ */
+ public ListenerFactory(Listener listener) {
+ serverAddress = listener.getServerAddress();
+ port = listener.getPort();
+ ssl = listener.getSslConfiguration();
+ implicitSsl = listener.isImplicitSsl();
+ dataConnectionConfig = listener.getDataConnectionConfiguration();
+ idleTimeout = listener.getIdleTimeout();
+ //TODO remove the next two lines if and when we remove the deprecated methods.
+ blockedAddresses = listener.getBlockedAddresses();
+ blockedSubnets = listener.getBlockedSubnets();
+ this.ipFilter = listener.getIpFilter();
+ }
+
+ /**
+ * Create a listener based on the settings of this factory. The listener is immutable.
+ * @return The created listener
+ */
+ public Listener createListener() {
+ try{
+ InetAddress.getByName(serverAddress);
+ }catch(UnknownHostException e){
+ throw new FtpServerConfigurationException("Unknown host",e);
+ }
+ //Deal with the old style black list and new IP Filter here.
+ if(ipFilter != null) {
+ if(blockedAddresses != null || blockedSubnets != null) {
+ throw new IllegalStateException("Usage of IPFilter in combination with blockedAddesses/subnets is not supported. ");
+ }
+ }
+ if(blockedAddresses != null || blockedSubnets != null) {
+ return new NioListener(serverAddress, port, implicitSsl, ssl,
+ dataConnectionConfig, idleTimeout, blockedAddresses, blockedSubnets);
+ }
+ else {
+ return new NioListener(serverAddress, port, implicitSsl, ssl,
+ dataConnectionConfig, idleTimeout, ipFilter);
+ }
+ }
+
+ /**
+ * Is listeners created by this factory in SSL mode automatically or must the client explicitly
+ * request to use SSL
+ *
+ * @return true is listeners created by this factory is automatically in SSL mode, false
+ * otherwise
+ */
+ public boolean isImplicitSsl() {
+ return implicitSsl;
+ }
+
+ /**
+ * Should listeners created by this factory be in SSL mode automatically or must the client
+ * explicitly request to use SSL
+ *
+ * @param implicitSsl
+ * true is listeners created by this factory should automatically be in SSL mode,
+ * false otherwise
+ */
+ public void setImplicitSsl(boolean implicitSsl) {
+ this.implicitSsl = implicitSsl;
+ }
+
+ /**
+ * Get the port on which listeners created by this factory is waiting for requests.
+ *
+ * @return The port
+ */
+ public int getPort() {
+ return port;
+ }
+
+ /**
+ * Set the port on which listeners created by this factory will accept requests. Or set to 0
+ * (zero) is the port should be automatically assigned
+ *
+ * @param port
+ * The port to use.
+ */
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ /**
+ * Get the {@link InetAddress} used for binding the local socket. Defaults
+ * to null, that is, the server binds to all available network interfaces
+ *
+ * @return The local socket {@link InetAddress}, if set
+ */
+ public String getServerAddress() {
+ return serverAddress;
+ }
+
+ /**
+ * Set the {@link InetAddress} used for binding the local socket. Defaults
+ * to null, that is, the server binds to all available network interfaces
+ *
+ * @param serverAddress
+ * The local socket {@link InetAddress}
+ */
+ public void setServerAddress(String serverAddress) {
+ this.serverAddress = serverAddress;
+ }
+
+ /**
+ * Get the {@link SslConfiguration} used for listeners created by this factory
+ *
+ * @return The {@link SslConfiguration}
+ */
+ public SslConfiguration getSslConfiguration() {
+ return ssl;
+ }
+
+ /**
+ * Set the {@link SslConfiguration} to use by listeners created by this factory
+ * @param ssl The {@link SslConfiguration}
+ */
+ public void setSslConfiguration(SslConfiguration ssl) {
+ this.ssl = ssl;
+ }
+
+ /**
+ * Get configuration for data connections made within listeners created by this factory
+ *
+ * @return The data connection configuration
+ */
+ public DataConnectionConfiguration getDataConnectionConfiguration() {
+ return dataConnectionConfig;
+ }
+
+ /**
+ * Set configuration for data connections made within listeners created by this factory
+ *
+ * @param dataConnectionConfig
+ * The data connection configuration
+ */
+ public void setDataConnectionConfiguration(
+ DataConnectionConfiguration dataConnectionConfig) {
+ this.dataConnectionConfig = dataConnectionConfig;
+ }
+
+ /**
+ * Get the number of seconds during which no network activity
+ * is allowed before a session is closed due to inactivity.
+ * @return The idle time out
+ */
+ public int getIdleTimeout() {
+ return idleTimeout;
+ }
+
+ /**
+ * Set the number of seconds during which no network activity
+ * is allowed before a session is closed due to inactivity.
+ *
+ * @param idleTimeout The idle timeout in seconds
+ */
+ public void setIdleTimeout(int idleTimeout) {
+ this.idleTimeout = idleTimeout;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Retrieves the {@link InetAddress} for which listeners created by this factory blocks
+ * connections
+ *
+ * @return The list of {@link InetAddress}es
+ */
+ @Deprecated
+ public List getBlockedAddresses() {
+ return blockedAddresses;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Sets the {@link InetAddress} that listeners created by this factory will block from
+ * connecting
+ *
+ * @param blockedAddresses
+ * The list of {@link InetAddress}es
+ */
+ @Deprecated
+ public void setBlockedAddresses(List blockedAddresses) {
+ this.blockedAddresses = blockedAddresses;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Retrives the {@link Subnet}s for which listeners created by this factory blocks connections
+ *
+ * @return The list of {@link Subnet}s
+ */
+ @Deprecated
+ public List getBlockedSubnets() {
+ return blockedSubnets;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Sets the {@link Subnet}s that listeners created by this factory will block from connecting
+ * @param blockedSubnets
+ * The list of {@link Subnet}s
+ * @param blockedAddresses
+ */
+ @Deprecated
+ public void setBlockedSubnets(List blockedSubnets) {
+ this.blockedSubnets = blockedSubnets;
+ }
+
+ /**
+ * Returns the currently configured IP filter, if any.
+ *
+ * @return the currently configured IP filter, if any. Returns
+ * null, if no IP filter is configured.
+ */
+ public IpFilter getIpFilter() {
+ return ipFilter;
+ }
+
+ /**
+ * Sets the IP filter to the given filter.
+ *
+ * @param ipFilter
+ * the IP filter.
+ */
+ public void setIpFilter(IpFilter ipFilter) {
+ this.ipFilter = ipFilter;
+ }
}
\ No newline at end of file
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
index 4a5b8a37..f00d8125 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
@@ -20,10 +20,12 @@
package org.apache.ftpserver.listener.nio;
import java.net.InetAddress;
-import java.util.Collections;
import java.util.List;
import org.apache.ftpserver.DataConnectionConfiguration;
+import org.apache.ftpserver.ipfilter.DefaultIpFilter;
+import org.apache.ftpserver.ipfilter.IpFilter;
+import org.apache.ftpserver.ipfilter.IpFilterType;
import org.apache.ftpserver.listener.Listener;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.ssl.SslConfiguration;
@@ -51,29 +53,62 @@ public abstract class AbstractListener implements Listener {
private List blockedAddresses;
private List blockedSubnets;
+
+ private IpFilter ipFilter = null;
private DataConnectionConfiguration dataConnectionConfig;
/**
+ * @deprecated Use the constructor with IpFilter instead.
* Constructor for internal use, do not use directly. Instead use {@link ListenerFactory}
*/
+ @Deprecated
public AbstractListener(String serverAddress, int port, boolean implicitSsl,
SslConfiguration sslConfiguration, DataConnectionConfiguration dataConnectionConfig,
int idleTimeout, List blockedAddresses, List blockedSubnets) {
+ this(serverAddress, port, implicitSsl, sslConfiguration,
+ dataConnectionConfig, idleTimeout, createBlackListFilter(blockedAddresses, blockedSubnets));
+ this.blockedAddresses = blockedAddresses;
+ this.blockedSubnets = blockedSubnets;
+ }
+
+ /**
+ * Constructor for internal use, do not use directly. Instead use {@link ListenerFactory}
+ */
+ public AbstractListener(String serverAddress, int port, boolean implicitSsl,
+ SslConfiguration sslConfiguration, DataConnectionConfiguration dataConnectionConfig,
+ int idleTimeout, IpFilter ipFilter) {
this.serverAddress = serverAddress;
this.port = port;
this.implicitSsl = implicitSsl;
this.dataConnectionConfig = dataConnectionConfig;
this.ssl = sslConfiguration;
this.idleTimeout = idleTimeout;
-
- if(blockedAddresses != null) {
- this.blockedAddresses = Collections.unmodifiableList(blockedAddresses);
- }
- if(blockedSubnets != null) {
- this.blockedSubnets = Collections.unmodifiableList(blockedSubnets);
- }
-
+ this.ipFilter = ipFilter;
+ }
+
+ /**
+ * Creates an IpFilter that blacklists the given IP addresses and/or Subnets.
+ * @param blockedAddresses the addresses to block
+ * @param blockedSubnets the subnets to block
+ * @return an IpFilter that blacklists the given IP addresses and/or Subnets.
+ */
+ private static IpFilter createBlackListFilter(List blockedAddresses,
+ List blockedSubnets) {
+ if(blockedAddresses == null && blockedSubnets == null) {
+ return null;
+ }
+ //Initialize the IP filter with Deny type
+ DefaultIpFilter ipFilter = new DefaultIpFilter(IpFilterType.DENY);
+ if(blockedSubnets != null) {
+ ipFilter.addAll(blockedSubnets);
+ }
+ if(blockedAddresses != null) {
+ for(InetAddress address:blockedAddresses) {
+ ipFilter.add(new Subnet(address, 32));
+ }
+ }
+ return ipFilter;
}
/**
@@ -146,4 +181,8 @@ public List getBlockedAddresses() {
public List getBlockedSubnets() {
return blockedSubnets;
}
+
+ public IpFilter getIpFilter() {
+ return ipFilter;
+ }
}
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
index 954a9986..aec10777 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
@@ -37,6 +37,8 @@
import org.apache.ftpserver.impl.FtpHandler;
import org.apache.ftpserver.impl.FtpIoSession;
import org.apache.ftpserver.impl.FtpServerContext;
+import org.apache.ftpserver.ipfilter.IpFilter;
+import org.apache.ftpserver.ipfilter.MinaIpFilter;
import org.apache.ftpserver.listener.Listener;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.ssl.ClientAuth;
@@ -80,8 +82,10 @@ public class NioListener extends AbstractListener {
private FtpServerContext context;
/**
+ * @deprecated Use the constructor with IpFilter instead.
* Constructor for internal use, do not use directly. Instead use {@link ListenerFactory}
*/
+ @Deprecated
public NioListener(String serverAddress, int port,
boolean implicitSsl,
SslConfiguration sslConfiguration,
@@ -89,27 +93,18 @@ public NioListener(String serverAddress, int port,
int idleTimeout, List blockedAddresses, List blockedSubnets) {
super(serverAddress, port, implicitSsl, sslConfiguration, dataConnectionConfig,
idleTimeout, blockedAddresses, blockedSubnets);
-
- updateBlacklistFilter();
}
- private void updateBlacklistFilter() {
- if (acceptor != null) {
- BlacklistFilter filter = (BlacklistFilter) acceptor
- .getFilterChain().get("ipFilter");
-
- if (filter != null) {
- if (getBlockedAddresses() != null) {
- filter.setBlacklist(getBlockedAddresses());
- } else if (getBlockedSubnets() != null) {
- filter.setSubnetBlacklist(getBlockedSubnets());
- } else {
- // an empty list clears the blocked addresses
- filter.setSubnetBlacklist(new ArrayList());
- }
-
- }
- }
+ /**
+ * Constructor for internal use, do not use directly. Instead use {@link ListenerFactory}
+ */
+ public NioListener(String serverAddress, int port,
+ boolean implicitSsl,
+ SslConfiguration sslConfiguration,
+ DataConnectionConfiguration dataConnectionConfig,
+ int idleTimeout, IpFilter ipFilter) {
+ super(serverAddress, port, implicitSsl, sslConfiguration, dataConnectionConfig,
+ idleTimeout, ipFilter);
}
/**
@@ -141,9 +136,11 @@ public synchronized void start(FtpServerContext context) {
acceptor.getFilterChain().addLast("mdcFilter", mdcFilter);
- // add and update the blacklist filter
- acceptor.getFilterChain().addLast("ipFilter", new BlacklistFilter());
- updateBlacklistFilter();
+ IpFilter ipFilter = getIpFilter();
+ if(ipFilter != null) {
+ // add and IP filter to the filter chain.
+ acceptor.getFilterChain().addLast("ipFilter", new MinaIpFilter(ipFilter));
+ }
acceptor.getFilterChain().addLast("threadPool",
new ExecutorFilter(filterExecutor));
diff --git a/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd b/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
index 872c7770..b9fb9235 100644
--- a/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
+++ b/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
@@ -1,270 +1,289 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java
new file mode 100644
index 00000000..6d339ef1
--- /dev/null
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.net.InetAddress;
+
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.ipfilter.DefaultIpFilter;
+import org.apache.ftpserver.ipfilter.IpFilterType;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.mina.filter.firewall.Subnet;
+import org.springframework.context.annotation.FilterType;
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class IpFilterTest extends ClientTestTemplate {
+
+ private DefaultIpFilter filter = new DefaultIpFilter(IpFilterType.DENY);
+
+ protected FtpServerFactory createServer() throws Exception {
+ FtpServerFactory server = super.createServer();
+
+ ListenerFactory factory = new ListenerFactory(server.getListener("default"));
+
+ factory.setIpFilter(filter);
+ server.addListener("default", factory.createListener());
+
+ return server;
+ }
+
+ protected boolean isConnectClient() {
+ return false;
+ }
+
+ public void testDenyBlackList() throws Exception {
+ filter.clear();
+ filter.setType(IpFilterType.DENY);
+ filter.add(new Subnet(InetAddress.getByName("localhost"), 32));
+ try {
+ client.connect("localhost", getListenerPort());
+ fail("Must throw");
+ } catch (FTPConnectionClosedException e) {
+ // OK
+ }
+ }
+
+ public void testDenyEmptyWhiteList() throws Exception {
+ filter.clear();
+ filter.setType(IpFilterType.ALLOW);
+ try {
+ client.connect("localhost", getListenerPort());
+ fail("Must throw");
+ } catch (FTPConnectionClosedException e) {
+ // OK
+ }
+ }
+
+ public void testWhiteList() throws Exception {
+ filter.clear();
+ filter.setType(IpFilterType.ALLOW);
+ filter.add(new Subnet(InetAddress.getByName("localhost"), 32));
+ client.connect("localhost", getListenerPort());
+ }
+}
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
index 98aa9ac4..040ac055 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
@@ -1,106 +1,111 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.config.spring;
-
-import java.net.InetAddress;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.ftpserver.DataConnectionConfiguration;
-import org.apache.ftpserver.impl.FtpIoSession;
-import org.apache.ftpserver.impl.FtpServerContext;
-import org.apache.ftpserver.listener.Listener;
-import org.apache.ftpserver.ssl.SslConfiguration;
-import org.apache.mina.filter.firewall.Subnet;
-
-/**
- * Used for testing creation of custom listeners from Spring config
- *
- * @author Apache MINA Project *
- */
-public class MyCustomListener implements Listener {
-
- private int port;
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public Set getActiveSessions() {
- return null;
- }
-
- public DataConnectionConfiguration getDataConnectionConfiguration() {
- return null;
- }
-
- public int getIdleTimeout() {
- return 0;
- }
-
- public int getPort() {
- return port;
- }
-
- public String getServerAddress() {
- return null;
- }
-
- public SslConfiguration getSslConfiguration() {
- return null;
- }
-
- public boolean isImplicitSsl() {
- return false;
- }
-
- public boolean isStopped() {
- return false;
- }
-
- public boolean isSuspended() {
- return false;
- }
-
- public void resume() {
-
- }
-
- public void start(FtpServerContext serverContext) {
-
- }
-
- public void stop() {
-
- }
-
- public void suspend() {
-
- }
-
- public List getBlockedAddresses() {
- return null;
- }
-
- public List getBlockedSubnets() {
- return null;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.config.spring;
+
+import java.net.InetAddress;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.ftpserver.DataConnectionConfiguration;
+import org.apache.ftpserver.impl.FtpIoSession;
+import org.apache.ftpserver.impl.FtpServerContext;
+import org.apache.ftpserver.ipfilter.IpFilter;
+import org.apache.ftpserver.listener.Listener;
+import org.apache.ftpserver.ssl.SslConfiguration;
+import org.apache.mina.filter.firewall.Subnet;
+
+/**
+ * Used for testing creation of custom listeners from Spring config
+ *
+ * @author Apache MINA Project *
+ */
+public class MyCustomListener implements Listener {
+
+ private int port;
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public Set getActiveSessions() {
+ return null;
+ }
+
+ public DataConnectionConfiguration getDataConnectionConfiguration() {
+ return null;
+ }
+
+ public int getIdleTimeout() {
+ return 0;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public String getServerAddress() {
+ return null;
+ }
+
+ public SslConfiguration getSslConfiguration() {
+ return null;
+ }
+
+ public boolean isImplicitSsl() {
+ return false;
+ }
+
+ public boolean isStopped() {
+ return false;
+ }
+
+ public boolean isSuspended() {
+ return false;
+ }
+
+ public void resume() {
+
+ }
+
+ public void start(FtpServerContext serverContext) {
+
+ }
+
+ public void stop() {
+
+ }
+
+ public void suspend() {
+
+ }
+
+ public List getBlockedAddresses() {
+ return null;
+ }
+
+ public List getBlockedSubnets() {
+ return null;
+ }
+
+ public IpFilter getIpFilter() {
+ return null;
+ }
+
+}
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
index d0014737..b78c1bc6 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
@@ -1,118 +1,115 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.config.spring;
-
-import java.net.InetAddress;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.apache.ftpserver.command.CommandFactory;
-import org.apache.ftpserver.command.impl.HELP;
-import org.apache.ftpserver.command.impl.STAT;
-import org.apache.ftpserver.filesystem.nativefs.NativeFileSystemFactory;
-import org.apache.ftpserver.impl.DefaultFtpServer;
-import org.apache.ftpserver.listener.Listener;
-import org.apache.ftpserver.listener.nio.NioListener;
-import org.apache.mina.filter.firewall.Subnet;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
-import org.springframework.core.io.FileSystemResource;
-
-/**
-*
-* @author Apache MINA Project*
-*/
-public class SpringConfigTest extends TestCase {
-
- public void test() throws Throwable {
- XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
- "src/test/resources/spring-config/config-spring-1.xml"));
-
- DefaultFtpServer server = (DefaultFtpServer) factory.getBean("server");
-
- assertEquals(500, server.getConnectionConfig().getMaxLogins());
- assertEquals(false, server.getConnectionConfig()
- .isAnonymousLoginEnabled());
- assertEquals(123, server.getConnectionConfig().getMaxAnonymousLogins());
- assertEquals(124, server.getConnectionConfig().getMaxLoginFailures());
- assertEquals(125, server.getConnectionConfig().getLoginFailureDelay());
-
- Map listeners = server.getServerContext()
- .getListeners();
- assertEquals(3, listeners.size());
-
- Listener listener = listeners.get("listener0");
- assertNotNull(listener);
- assertTrue(listener instanceof NioListener);
- assertEquals(2222, ((NioListener) listener).getPort());
- assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
- .getServerAddress()));
- assertEquals(100, ((NioListener) listener)
- .getDataConnectionConfiguration().getIdleTime());
- assertTrue(((NioListener) listener)
- .getDataConnectionConfiguration().isActiveEnabled());
- assertTrue(((NioListener) listener)
- .getDataConnectionConfiguration().isImplicitSsl());
-
- assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
- .getDataConnectionConfiguration().getActiveLocalAddress()) );
- assertEquals("123-125", ((NioListener) listener)
- .getDataConnectionConfiguration().getPassivePorts());
-
- List subnets = ((NioListener) listener).getBlockedSubnets();
- assertEquals(3, subnets.size());
- assertEquals(new Subnet(InetAddress.getByName("1.2.3.0"), 16), subnets
- .get(0));
- assertEquals(new Subnet(InetAddress.getByName("1.2.4.0"), 16), subnets
- .get(1));
- assertEquals(new Subnet(InetAddress.getByName("1.2.3.4"), 32), subnets
- .get(2));
-
- listener = listeners.get("listener1");
- assertNotNull(listener);
- assertTrue(listener instanceof MyCustomListener);
- assertEquals(2223, listener.getPort());
-
- listener = listeners.get("listener2");
- assertNotNull(listener);
- assertTrue(listener instanceof MyCustomListener);
- assertEquals(2224, listener.getPort());
-
- CommandFactory cf = server.getCommandFactory();
- assertTrue(cf.getCommand("FOO") instanceof HELP);
- assertTrue(cf.getCommand("FOO2") instanceof STAT);
-
- List languages = server.getServerContext().getMessageResource()
- .getAvailableLanguages();
-
- assertEquals(2, languages.size());
- assertEquals("en", languages.get(0));
- assertEquals("zh-tw", languages.get(1));
-
- NativeFileSystemFactory fs = (NativeFileSystemFactory) server.getFileSystem();
- assertTrue(fs.isCreateHome());
- assertTrue(fs.isCaseInsensitive());
-
- assertEquals(2, server.getFtplets().size());
- assertEquals(123, ((TestFtplet)server.getFtplets().get("ftplet1")).getFoo());
- assertEquals(223, ((TestFtplet)server.getFtplets().get("ftplet2")).getFoo());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.config.spring;
+
+import java.net.InetAddress;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.command.CommandFactory;
+import org.apache.ftpserver.command.impl.HELP;
+import org.apache.ftpserver.command.impl.STAT;
+import org.apache.ftpserver.filesystem.nativefs.NativeFileSystemFactory;
+import org.apache.ftpserver.impl.DefaultFtpServer;
+import org.apache.ftpserver.ipfilter.DefaultIpFilter;
+import org.apache.ftpserver.listener.Listener;
+import org.apache.ftpserver.listener.nio.NioListener;
+import org.apache.mina.filter.firewall.Subnet;
+import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.core.io.FileSystemResource;
+
+/**
+*
+* @author Apache MINA Project
+*/
+public class SpringConfigTest extends TestCase {
+
+ public void test() throws Throwable {
+ XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
+ "src/test/resources/spring-config/config-spring-1.xml"));
+
+ DefaultFtpServer server = (DefaultFtpServer) factory.getBean("server");
+
+ assertEquals(500, server.getConnectionConfig().getMaxLogins());
+ assertEquals(false, server.getConnectionConfig()
+ .isAnonymousLoginEnabled());
+ assertEquals(123, server.getConnectionConfig().getMaxAnonymousLogins());
+ assertEquals(124, server.getConnectionConfig().getMaxLoginFailures());
+ assertEquals(125, server.getConnectionConfig().getLoginFailureDelay());
+
+ Map listeners = server.getServerContext()
+ .getListeners();
+ assertEquals(3, listeners.size());
+
+ Listener listener = listeners.get("listener0");
+ assertNotNull(listener);
+ assertTrue(listener instanceof NioListener);
+ assertEquals(2222, ((NioListener) listener).getPort());
+ assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
+ .getServerAddress()));
+ assertEquals(100, ((NioListener) listener)
+ .getDataConnectionConfiguration().getIdleTime());
+ assertTrue(((NioListener) listener)
+ .getDataConnectionConfiguration().isActiveEnabled());
+ assertTrue(((NioListener) listener)
+ .getDataConnectionConfiguration().isImplicitSsl());
+
+ assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
+ .getDataConnectionConfiguration().getActiveLocalAddress()) );
+ assertEquals("123-125", ((NioListener) listener)
+ .getDataConnectionConfiguration().getPassivePorts());
+
+ DefaultIpFilter filter = (DefaultIpFilter) listener.getIpFilter();
+ assertEquals(3, filter.size());
+ assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.3.0"), 16)));
+ assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.4.0"), 16)));
+ assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.3.4"), 32)));
+ listener = listeners.get("listener1");
+ assertNotNull(listener);
+ assertTrue(listener instanceof MyCustomListener);
+ assertEquals(2223, listener.getPort());
+
+ listener = listeners.get("listener2");
+ assertNotNull(listener);
+ assertTrue(listener instanceof MyCustomListener);
+ assertEquals(2224, listener.getPort());
+
+ CommandFactory cf = server.getCommandFactory();
+ assertTrue(cf.getCommand("FOO") instanceof HELP);
+ assertTrue(cf.getCommand("FOO2") instanceof STAT);
+
+ List languages = server.getServerContext().getMessageResource()
+ .getAvailableLanguages();
+
+ assertEquals(2, languages.size());
+ assertEquals("en", languages.get(0));
+ assertEquals("zh-tw", languages.get(1));
+
+ NativeFileSystemFactory fs = (NativeFileSystemFactory) server.getFileSystem();
+ assertTrue(fs.isCreateHome());
+ assertTrue(fs.isCaseInsensitive());
+
+ assertEquals(2, server.getFtplets().size());
+ assertEquals(123, ((TestFtplet)server.getFtplets().get("ftplet1")).getFoo());
+ assertEquals(223, ((TestFtplet)server.getFtplets().get("ftplet2")).getFoo());
+ }
+}
From 276d2a04a62e0c3d10cf62ec26f7ee971b559ddb Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 30 Apr 2010 18:10:34 +0000
Subject: [PATCH 054/101] Fixing invalid uses of POM properties (FTPSERVER-368)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@939765 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 22 +++++++++----------
distribution/pom.xml | 4 ++--
examples/ftpserver-example-spring-war/pom.xml | 2 +-
.../ftpserver-osgi-ftplet-service/pom.xml | 2 +-
.../ftpserver-osgi-spring-service/pom.xml | 2 +-
ftplet-api/pom.xml | 2 +-
pom.xml | 8 +++----
7 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index 0c5e23fc..88bcd134 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -64,16 +64,16 @@
${artifactId}The Apache Software Foundation
- org.apache.ftpserver;version=${pom.version},
- org.apache.ftpserver.command;version=${pom.version},
- org.apache.ftpserver.config.spring;version=${pom.version},
- org.apache.ftpserver.filesystem.nativefs;version=${pom.version},
- org.apache.ftpserver.ftpletcontainer;version=${pom.version},
- org.apache.ftpserver.listener;version=${pom.version},
- org.apache.ftpserver.main;version=${pom.version},
- org.apache.ftpserver.message;version=${pom.version},
- org.apache.ftpserver.ssl;version=${pom.version},
- org.apache.ftpserver.usermanager;version=${pom.version}
+ org.apache.ftpserver;version=${project.version},
+ org.apache.ftpserver.command;version=${project.version},
+ org.apache.ftpserver.config.spring;version=${project.version},
+ org.apache.ftpserver.filesystem.nativefs;version=${project.version},
+ org.apache.ftpserver.ftpletcontainer;version=${project.version},
+ org.apache.ftpserver.listener;version=${project.version},
+ org.apache.ftpserver.main;version=${project.version},
+ org.apache.ftpserver.message;version=${project.version},
+ org.apache.ftpserver.ssl;version=${project.version},
+ org.apache.ftpserver.usermanager;version=${project.version}
org.apache.ftpserver.command.impl,
org.apache.ftpserver.command.impl.listing,
@@ -108,7 +108,7 @@
- ${groupId}
+ ${project.groupId}ftplet-api
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 733c5064..5b69c9ef 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -131,8 +131,8 @@
Downloading Manual
-
-
+
+
diff --git a/examples/ftpserver-example-spring-war/pom.xml b/examples/ftpserver-example-spring-war/pom.xml
index 4482ec0f..91cbbe40 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -37,7 +37,7 @@
org.apache.ftpserverftpserver-core
- ${pom.version}
+ ${project.version}javax.servlet
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index a6574cf7..82ce6daf 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -32,7 +32,7 @@
org.apache.ftpserverftplet-api
- ${pom.version}
+ ${project.version}org.osgi
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index 032671be..d596b9b6 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -32,7 +32,7 @@
org.apache.ftpserverftpserver-core
- ${pom.version}
+ ${project.version}
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index a765ab92..98d9f60a 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -52,7 +52,7 @@
${artifactId}The Apache Software Foundation
- org.apache.ftpserver.ftplet;version=${pom.version}
+ org.apache.ftpserver.ftplet;version=${project.version}
diff --git a/pom.xml b/pom.xml
index 31bc0564..78d0d593 100644
--- a/pom.xml
+++ b/pom.xml
@@ -136,15 +136,15 @@
- ${groupId}
+ ${project.groupId}ftplet-api
- ${pom.version}
+ ${project.version}
- ${groupId}
+ ${project.groupId}ftpserver-core
- ${pom.version}
+ ${project.version}
From da7c7e7c267efc35fcdb78e087fc01119c2ad601 Mon Sep 17 00:00:00 2001
From: David Latorre Gallego
Date: Mon, 10 May 2010 08:58:54 +0000
Subject: [PATCH 055/101] FTPSERVER-369 maxLogin is reached immediately. REIN
command is not decreasing the login count.
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@942689 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/impl/FtpIoSession.java | 1604 +++++++++--------
.../ftpserver/clienttests/LoginTest.java | 14 +-
2 files changed, 827 insertions(+), 791 deletions(-)
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 7e039d93..9f79c3ae 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
@@ -51,803 +51,829 @@
import org.apache.mina.core.write.WriteRequest;
import org.apache.mina.core.write.WriteRequestQueue;
import org.apache.mina.filter.ssl.SslFilter;
+import org.slf4j.LoggerFactory;
/**
* Internal class, do not use directly.
- *
+ *
* @author Apache MINA Project *
*/
public class FtpIoSession implements IoSession {
- /**
- * Contains user name between USER and PASS commands
- */
- public static final String ATTRIBUTE_PREFIX = "org.apache.ftpserver.";
+ /**
+ * Contains user name between USER and PASS commands
+ */
+ public static final String ATTRIBUTE_PREFIX = "org.apache.ftpserver.";
+
+ private static final String ATTRIBUTE_USER_ARGUMENT = ATTRIBUTE_PREFIX
+ + "user-argument";
+
+ private static final String ATTRIBUTE_SESSION_ID = ATTRIBUTE_PREFIX
+ + "session-id";
+
+ private static final String ATTRIBUTE_USER = ATTRIBUTE_PREFIX + "user";
- private static final String ATTRIBUTE_USER_ARGUMENT = ATTRIBUTE_PREFIX
- + "user-argument";
+ private static final String ATTRIBUTE_LANGUAGE = ATTRIBUTE_PREFIX
+ + "language";
- private static final String ATTRIBUTE_SESSION_ID = ATTRIBUTE_PREFIX
- + "session-id";
-
- private static final String ATTRIBUTE_USER = ATTRIBUTE_PREFIX + "user";
+ private static final String ATTRIBUTE_LOGIN_TIME = ATTRIBUTE_PREFIX
+ + "login-time";
+
+ private static final String ATTRIBUTE_DATA_CONNECTION = ATTRIBUTE_PREFIX
+ + "data-connection";
- private static final String ATTRIBUTE_LANGUAGE = ATTRIBUTE_PREFIX
- + "language";
-
- private static final String ATTRIBUTE_LOGIN_TIME = ATTRIBUTE_PREFIX
- + "login-time";
-
- private static final String ATTRIBUTE_DATA_CONNECTION = ATTRIBUTE_PREFIX
- + "data-connection";
-
- private static final String ATTRIBUTE_FILE_SYSTEM = ATTRIBUTE_PREFIX
- + "file-system";
-
- private static final String ATTRIBUTE_RENAME_FROM = ATTRIBUTE_PREFIX
- + "rename-from";
-
- private static final String ATTRIBUTE_FILE_OFFSET = ATTRIBUTE_PREFIX
- + "file-offset";
-
- private static final String ATTRIBUTE_DATA_TYPE = ATTRIBUTE_PREFIX
- + "data-type";
-
- private static final String ATTRIBUTE_STRUCTURE = ATTRIBUTE_PREFIX
- + "structure";
-
- private static final String ATTRIBUTE_FAILED_LOGINS = ATTRIBUTE_PREFIX
- + "failed-logins";
-
- private static final String ATTRIBUTE_LISTENER = ATTRIBUTE_PREFIX
- + "listener";
-
- private static final String ATTRIBUTE_MAX_IDLE_TIME = ATTRIBUTE_PREFIX
- + "max-idle-time";
-
- private static final String ATTRIBUTE_LAST_ACCESS_TIME = ATTRIBUTE_PREFIX
- + "last-access-time";
-
- private static final String ATTRIBUTE_CACHED_REMOTE_ADDRESS = ATTRIBUTE_PREFIX
- + "cached-remote-address";
-
- private IoSession wrappedSession;
-
- private FtpServerContext context;
-
- /**
- * Last reply that was sent to the client, if any.
- */
- private FtpReply lastReply = null;
-
- /* Begin wrapped IoSession methods */
-
- /**
- * @see IoSession#close()
- */
- public CloseFuture close() {
- return wrappedSession.close();
- }
-
- /**
- * @see IoSession#close(boolean)
- */
- public CloseFuture close(boolean immediately) {
- return wrappedSession.close(immediately);
- }
-
- /**
- * @see IoSession#containsAttribute(Object)
- */
- public boolean containsAttribute(Object key) {
- return wrappedSession.containsAttribute(key);
- }
-
- /**
- * @see IoSession#getAttachment()
- */
- @SuppressWarnings("deprecation")
- public Object getAttachment() {
- return wrappedSession.getAttachment();
- }
-
- /**
- * @see IoSession#getAttribute(Object)
- */
- public Object getAttribute(Object key) {
- return wrappedSession.getAttribute(key);
- }
-
- /**
- * @see IoSession#getAttribute(Object, Object)
- */
- public Object getAttribute(Object key, Object defaultValue) {
- return wrappedSession.getAttribute(key, defaultValue);
- }
-
- /**
- * @see IoSession#getAttributeKeys()
- */
- public Set
+ org.apache.ftpserver.util,
+ org.apache.ftpserver.*
+
org.springframework.beans.factory.config;resolution:=optional;version="2.5",
org.springframework.beans.factory.support;resolution:=optional;version="2.5",
From a4e3974903ff14bf92d14bb2bbf224346fc631ca Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Fri, 21 Jan 2011 08:42:58 +0000
Subject: [PATCH 070/101] OPTS MLST should support any character case of field
names (FTPSERVER-393)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1061684 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/command/impl/OPTS_MLST.java | 2 +-
.../apache/ftpserver/clienttests/ListTest.java | 15 +++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
index d8375c40..6a736307 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
@@ -95,7 +95,7 @@ private String[] validateSelectedTypes(final String types[]) {
for (int i = 0; i < types.length; ++i) {
boolean bMatch = false;
for (int j = 0; j < AVAILABLE_TYPES.length; ++j) {
- if (AVAILABLE_TYPES[j].equals(types[i])) {
+ if (AVAILABLE_TYPES[j].equalsIgnoreCase(types[i])) {
bMatch = true;
break;
}
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
index 2414bf05..24ae4ae0 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
@@ -244,6 +244,21 @@ public void testOPTSMLST() throws Exception {
+ TEST_FILE1.getName(), reply[1]);
}
+ public void testOPTSMLSTCaseInsensitive() throws Exception {
+ TEST_FILE1.createNewFile();
+
+ assertTrue(FTPReply.isPositiveCompletion(client
+ .sendCommand("OPTS MLST size;Modify")));
+ assertTrue(FTPReply.isPositiveCompletion(client.sendCommand("MLST "
+ + TEST_FILE1.getName())));
+
+ String[] reply = client.getReplyString().split("\\r\\n");
+
+ assertEquals("Size=0;Modify="
+ + DateUtils.getFtpDate(TEST_FILE1.lastModified()) + "; "
+ + TEST_FILE1.getName(), reply[1]);
+ }
+
public void testOPTSMLSTInvalidType() throws Exception {
TEST_FILE1.createNewFile();
From fc3d94210a1e4e8c0b96ee7264e9c7a2d51974e2 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 21 Feb 2011 21:34:55 +0000
Subject: [PATCH 071/101] Upgrading MINA to 2.0.2
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1073152 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index e818e58e..4f00e3d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,7 +150,7 @@
org.apache.minamina-core
- 2.0.0-RC1
+ 2.0.2org.easymock
From 0b9772c98f96ab6cd7946d8d3044b608827c269b Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 23 Feb 2011 12:43:23 +0000
Subject: [PATCH 072/101] Removing cruft in SQL script (FTPSERVER-398)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1073722 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/res/ftp-db.sql | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/distribution/res/ftp-db.sql b/distribution/res/ftp-db.sql
index 3f874ba1..8243b271 100644
--- a/distribution/res/ftp-db.sql
+++ b/distribution/res/ftp-db.sql
@@ -1,4 +1,4 @@
-managermanager-- Licensed to the Apache Software Foundation (ASF) under one
+-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
From 28818a143a0a0ac53dd6707d05c4314301638e3f Mon Sep 17 00:00:00 2001
From: Sergey Vladimirov
Date: Sun, 27 Mar 2011 19:34:22 +0000
Subject: [PATCH 073/101] StringBuffer => StringBuilder for internal use
(FTPSERVER-406)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1086010 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/ftpserver/command/impl/MD5.java | 2 +-
.../ftpserver/command/impl/SITE_DESCUSER.java | 2 +-
.../ftpserver/command/impl/SITE_STAT.java | 2 +-
.../ftpserver/command/impl/SITE_WHO.java | 2 +-
.../command/impl/listing/DirectoryLister.java | 6 +++---
.../command/impl/listing/LISTFileFormater.java | 6 +++---
.../impl/listing/ListArgumentParser.java | 4 ++--
.../command/impl/listing/MLSTFileFormater.java | 2 +-
.../command/impl/listing/NLSTFileFormater.java | 2 +-
.../ftpserver/impl/LocalizedFtpReply.java | 2 +-
.../apache/ftpserver/impl/PassivePorts.java | 18 +++++++++---------
.../usermanager/impl/DbUserManager.java | 2 +-
.../org/apache/ftpserver/util/DateUtils.java | 6 +++---
.../ftpserver/util/SocketAddressEncoder.java | 2 +-
.../org/apache/ftpserver/util/StringUtils.java | 14 +++++++-------
15 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
index 890a53e0..606b5be1 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MD5.java
@@ -89,7 +89,7 @@ public void execute(final FtpIoSession session,
fileNames = new String[] { argument };
}
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (int i = 0; i < fileNames.length; i++) {
String fileName = fileNames[i].trim();
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
index fdca6598..c60bb7e3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_DESCUSER.java
@@ -96,7 +96,7 @@ public void execute(final FtpIoSession session,
}
// send the user information
- StringBuffer sb = new StringBuffer(128);
+ StringBuilder sb = new StringBuilder(128);
sb.append("\n");
sb.append("userid : ").append(user.getName()).append("\n");
sb.append("userpassword : ********\n");
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
index 77e49ae9..c39f496c 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_STAT.java
@@ -63,7 +63,7 @@ public void execute(final FtpIoSession session,
// get statistics information
FtpStatistics stat = context.getFtpStatistics();
- StringBuffer sb = new StringBuffer(256);
+ StringBuilder sb = new StringBuilder(256);
sb.append('\n');
sb.append("Start Time : ").append(
DateUtils.getISO8601Date(stat.getStartTime().getTime()))
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
index 245c8cd2..c3d3a1d5 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE_WHO.java
@@ -67,7 +67,7 @@ public void execute(final FtpIoSession session,
}
// print all the connected user information
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
Map sessions = session.getService()
.getManagedSessions();
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
index 610b076d..49782829 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/DirectoryLister.java
@@ -38,7 +38,7 @@ public class DirectoryLister {
private String traverseFiles(final List files,
final FileFilter filter, final FileFormater formater) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(traverseFiles(files, filter, formater, true));
sb.append(traverseFiles(files, filter, formater, false));
@@ -49,7 +49,7 @@ private String traverseFiles(final List files,
private String traverseFiles(final List files,
final FileFilter filter, final FileFormater formater,
boolean matchDirs) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (FtpFile file : files) {
if (file == null) {
continue;
@@ -69,7 +69,7 @@ public String listFiles(final ListArgument argument,
final FileSystemView fileSystemView, final FileFormater formater)
throws IOException {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
// get all the file objects
List files = listFiles(fileSystemView, argument.getFile());
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
index 3493be0e..148d63e0 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/LISTFileFormater.java
@@ -40,7 +40,7 @@ public class LISTFileFormater implements FileFormater {
* @see FileFormater#format(FtpFile)
*/
public String format(FtpFile file) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(getPermission(file));
sb.append(DELIM);
sb.append(DELIM);
@@ -99,8 +99,8 @@ private char[] getPermission(FtpFile file) {
}
/*
- * public String format(FileObject[] files) { StringBuffer sb = new
- * StringBuffer();
+ * public String format(FileObject[] files) { StringBuilder sb = new
+ * StringBuilder();
*
* for (int i = 0; i < files.length; i++) { sb.append(format(files[i]));
* sb.append(NEWLINE); } return sb.toString(); }
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
index 87a7a5f6..82c54b92 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java
@@ -46,8 +46,8 @@ public static ListArgument parse(String argument) {
// find options and file name (may have regular expression)
if (argument != null) {
argument = argument.trim();
- StringBuffer optionsSb = new StringBuffer(4);
- StringBuffer fileSb = new StringBuffer(16);
+ StringBuilder optionsSb = new StringBuilder(4);
+ StringBuilder fileSb = new StringBuilder(16);
StringTokenizer st = new StringTokenizer(argument, " ", true);
while (st.hasMoreTokens()) {
String token = st.nextToken();
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
index 2fcaeeeb..b3cd9267 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/MLSTFileFormater.java
@@ -51,7 +51,7 @@ public MLSTFileFormater(String[] selectedTypes) {
* @see FileFormater#format(FtpFile)
*/
public String format(FtpFile file) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (int i = 0; i < selectedTypes.length; ++i) {
String type = selectedTypes[i];
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
index adbdffec..7ab683a3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/NLSTFileFormater.java
@@ -35,7 +35,7 @@ public class NLSTFileFormater implements FileFormater {
* @see FileFormater#format(FtpFile)
*/
public String format(FtpFile file) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(file.getName());
sb.append(NEWLINE);
diff --git a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
index 8769527a..ec7def47 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFtpReply.java
@@ -141,7 +141,7 @@ private static String replaceVariables(FtpIoSession session,
return str;
}
- StringBuffer sb = new StringBuffer(128);
+ StringBuilder sb = new StringBuilder(128);
sb.append(str.substring(startIndex, openIndex));
while (true) {
String varName = str.substring(openIndex + 1, closeIndex);
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index 79373fac..7ca881f8 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -227,17 +227,17 @@ public void releasePort(final int port) {
public String toString() {
if (passivePortsString != null) {
return passivePortsString;
- } else {
- StringBuffer sb = new StringBuffer();
+ }
- for (int port : passivePorts) {
- sb.append(port);
- sb.append(",");
- }
- // remove the last ,
- sb.deleteCharAt(sb.length() - 1);
- return sb.toString();
+ StringBuilder sb = new StringBuilder();
+
+ for (int port : passivePorts) {
+ sb.append(port);
+ sb.append(",");
}
+ // remove the last ,
+ sb.deleteCharAt(sb.length() - 1);
+ return sb.toString();
}
}
\ No newline at end of file
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
index 70547637..56bb58a9 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/DbUserManager.java
@@ -685,7 +685,7 @@ private String escapeString(String input) {
return input;
}
- StringBuffer valBuf = new StringBuffer(input);
+ StringBuilder valBuf = new StringBuilder(input);
for (int i = 0; i < valBuf.length(); i++) {
char ch = valBuf.charAt(i);
if (ch == '\'' || ch == '\\' || ch == '$' || ch == '^' || ch == '['
diff --git a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
index 68b578a1..79d5e687 100644
--- a/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/DateUtils.java
@@ -65,7 +65,7 @@ public final static String getUnixDate(long millis) {
return "------------";
}
- StringBuffer sb = new StringBuffer(16);
+ StringBuilder sb = new StringBuilder(16);
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(millis);
@@ -113,7 +113,7 @@ public final static String getUnixDate(long millis) {
* Get ISO 8601 timestamp.
*/
public final static String getISO8601Date(long millis) {
- StringBuffer sb = new StringBuffer(19);
+ StringBuilder sb = new StringBuilder(19);
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(millis);
@@ -167,7 +167,7 @@ public final static String getISO8601Date(long millis) {
* Get FTP date.
*/
public final static String getFtpDate(long millis) {
- StringBuffer sb = new StringBuffer(20);
+ StringBuilder sb = new StringBuilder(20);
// MLST should use UTC
Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);
diff --git a/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java b/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
index 7092271a..5b1c68a5 100644
--- a/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
+++ b/core/src/main/java/org/apache/ftpserver/util/SocketAddressEncoder.java
@@ -53,7 +53,7 @@ public static InetSocketAddress decode(String str)
throw new IllegalInetAddressException("Illegal amount of tokens");
}
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
try {
sb.append(convertAndValidateNumber(st.nextToken()));
sb.append('.');
diff --git a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
index 4d24b586..a8635997 100644
--- a/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
+++ b/core/src/main/java/org/apache/ftpserver/util/StringUtils.java
@@ -35,7 +35,7 @@ public class StringUtils {
*/
public final static String replaceString(String source, String oldStr,
String newStr) {
- StringBuffer sb = new StringBuffer(source.length());
+ StringBuilder sb = new StringBuilder(source.length());
int sind = 0;
int cind = 0;
while ((cind = source.indexOf(oldStr, sind)) != -1) {
@@ -62,7 +62,7 @@ public final static String replaceString(String source, Object[] args) {
return source;
}
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(source.substring(startIndex, openIndex));
while (true) {
String intStr = source.substring(openIndex + 1, closeIndex);
@@ -102,7 +102,7 @@ public final static String replaceString(String source,
return source;
}
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(source.substring(startIndex, openIndex));
while (true) {
String key = source.substring(openIndex + 1, closeIndex);
@@ -140,7 +140,7 @@ public final static String replaceString(String source,
public final static String formatHtml(String source, boolean bReplaceNl,
boolean bReplaceTag, boolean bReplaceQuote) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
int len = source.length();
for (int i = 0; i < len; i++) {
char c = source.charAt(i);
@@ -204,7 +204,7 @@ public final static String pad(String src, char padChar, boolean rightPad,
}
int padLength = totalLength - srcLength;
- StringBuffer sb = new StringBuffer(padLength);
+ StringBuilder sb = new StringBuilder(padLength);
for (int i = 0; i < padLength; ++i) {
sb.append(padChar);
}
@@ -220,11 +220,11 @@ public final static String pad(String src, char padChar, boolean rightPad,
* Get hex string from byte array
*/
public final static String toHexString(byte[] res) {
- StringBuffer sb = new StringBuffer(res.length << 1);
+ StringBuilder sb = new StringBuilder(res.length << 1);
for (int i = 0; i < res.length; i++) {
String digit = Integer.toHexString(0xFF & res[i]);
if (digit.length() == 1) {
- digit = '0' + digit;
+ sb.append('0');
}
sb.append(digit);
}
From f130107070e940297771828200ca9d0e7150d712 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 11 May 2011 09:52:53 +0000
Subject: [PATCH 074/101] Fixing bug where FtpServer returned an error if an
unknown fact was used in OPTS MLST. Also, correctly handling the case if only
file names (no facts) are wished by the client (FTPSERVER-412)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1101807 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/command/impl/OPTS_MLST.java | 43 +++++++++----------
.../ftpserver/clienttests/ListTest.java | 42 +++++++++++++++++-
2 files changed, 60 insertions(+), 25 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
index 6a736307..fe2b6a47 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/OPTS_MLST.java
@@ -20,6 +20,8 @@
package org.apache.ftpserver.command.impl;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import java.util.StringTokenizer;
import org.apache.ftpserver.command.AbstractCommand;
@@ -55,22 +57,23 @@ public void execute(final FtpIoSession session,
// get the listing types
String argument = request.getArgument();
+
+ String listTypes;
+ String types[];
int spIndex = argument.indexOf(' ');
if (spIndex == -1) {
- session.write(LocalizedFtpReply.translate(session, request, context,
- FtpReply.REPLY_503_BAD_SEQUENCE_OF_COMMANDS, "OPTS.MLST",
- null));
- return;
- }
- String listTypes = argument.substring(spIndex + 1);
-
- // parse all the type tokens
- StringTokenizer st = new StringTokenizer(listTypes, ";");
- String types[] = new String[st.countTokens()];
- for (int i = 0; i < types.length; ++i) {
- types[i] = st.nextToken();
+ types = new String[0];
+ listTypes = "";
+ } else {
+ listTypes = argument.substring(spIndex + 1);
+
+ // parse all the type tokens
+ StringTokenizer st = new StringTokenizer(listTypes, ";");
+ types = new String[st.countTokens()];
+ for (int i = 0; i < types.length; ++i) {
+ types[i] = st.nextToken();
+ }
}
-
// set the list types
String[] validatedTypes = validateSelectedTypes(types);
if (validatedTypes != null) {
@@ -88,26 +91,20 @@ private String[] validateSelectedTypes(final String types[]) {
// ignore null types
if (types == null) {
- return null;
+ return new String[0];
}
+ List selectedTypes = new ArrayList();
// check all the types
for (int i = 0; i < types.length; ++i) {
- boolean bMatch = false;
for (int j = 0; j < AVAILABLE_TYPES.length; ++j) {
if (AVAILABLE_TYPES[j].equalsIgnoreCase(types[i])) {
- bMatch = true;
+ selectedTypes.add(AVAILABLE_TYPES[j]);
break;
}
}
- if (!bMatch) {
- return null;
- }
}
- // set the user types
- String[] selectedTypes = new String[types.length];
- System.arraycopy(types, 0, selectedTypes, 0, types.length);
- return selectedTypes;
+ return selectedTypes.toArray(new String[0]);
}
}
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
index 24ae4ae0..59275fc6 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ListTest.java
@@ -259,13 +259,51 @@ public void testOPTSMLSTCaseInsensitive() throws Exception {
+ TEST_FILE1.getName(), reply[1]);
}
- public void testOPTSMLSTInvalidType() throws Exception {
+ /**
+ * "Facts requested that are not
+ * supported, or that are inappropriate to the file or directory being
+ * listed should simply be omitted from the MLSx output."
+ *
+ * http://tools.ietf.org/html/rfc3659#section-7.9
+ */
+ public void testOPTSMLSTUnknownFact() throws Exception {
TEST_FILE1.createNewFile();
- assertTrue(FTPReply.isNegativePermanent(client
+ assertTrue(FTPReply.isPositiveCompletion(client
.sendCommand("OPTS MLST Foo;Size")));
+
+ assertTrue(FTPReply.isPositiveCompletion(client.sendCommand("MLST "
+ + TEST_FILE1.getName())));
+
+ String[] reply = client.getReplyString().split("\\r\\n");
+
+ assertEquals("Size=0; "
+ + TEST_FILE1.getName(), reply[1]);
}
+ /**
+ * "Facts requested that are not
+ * supported, or that are inappropriate to the file or directory being
+ * listed should simply be omitted from the MLSx output."
+ *
+ * http://tools.ietf.org/html/rfc3659#section-7.9
+ */
+ public void testOPTSMLSTNoFacts() throws Exception {
+ TEST_FILE1.createNewFile();
+
+ assertTrue(FTPReply.isPositiveCompletion(client
+ .sendCommand("OPTS MLST")));
+
+ assertTrue(FTPReply.isPositiveCompletion(client.sendCommand("MLST "
+ + TEST_FILE1.getName())));
+
+ String[] reply = client.getReplyString().split("\\r\\n");
+
+ assertEquals(" "
+ + TEST_FILE1.getName(), reply[1]);
+ }
+
+
private FTPFile getFile(FTPFile[] files, String name) {
for (int i = 0; i < files.length; i++) {
FTPFile file = files[i];
From ac413ed5cff523181e7a148c727f3f789833a204 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 28 May 2011 20:28:24 +0000
Subject: [PATCH 075/101] Returning 211 rather than 200 from STAT file listing
(FTPSERVER-413)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1128769 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/command/impl/STAT.java | 2 +-
.../java/org/apache/ftpserver/clienttests/StatTest.java | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
index 5ca76c1b..5530b21d 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
@@ -80,7 +80,7 @@ public void execute(final FtpIoSession session,
session
.write(new DefaultFtpReply(
- FtpReply.REPLY_200_COMMAND_OKAY,
+ FtpReply.REPLY_211_SYSTEM_STATUS_REPLY,
dirList));
} catch (FtpException e) {
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
index 876fa085..fa271bff 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
@@ -30,7 +30,7 @@
*/
public class StatTest extends ClientTestTemplate {
- private static final String PATTERN = "^200[-\\s]-rw-------\\s\\s\\s1\\suser\\sgroup\\s{12}0\\s[A-Za-z0-9\\s]{6}\\s\\d\\d:\\d\\d\\stest\\d.txt$";
+ private static final String PATTERN = "^211[-\\s]-rw-------\\s\\s\\s1\\suser\\sgroup\\s{12}0\\s[A-Za-z0-9\\s]{6}\\s\\d\\d:\\d\\d\\stest\\d.txt$";
private static final File TEST_DIR = new File(ROOT_DIR, "test");
private static final File TEST_FILE1 = new File(TEST_DIR, "test1.txt");
@@ -43,7 +43,7 @@ public void testStatDir() throws Exception {
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
- assertEquals(200, client.stat(TEST_DIR.getName()));
+ assertEquals(211, client.stat(TEST_DIR.getName()));
String[] reply = client.getReplyString().split("\r\n");
assertTrue(reply[0], Pattern.matches(PATTERN, reply[0]));
@@ -56,7 +56,7 @@ public void testStatFile() throws Exception {
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
- assertEquals(200, client.stat(TEST_DIR.getName() + "/" + TEST_FILE1.getName()));
+ assertEquals(211, client.stat(TEST_DIR.getName() + "/" + TEST_FILE1.getName()));
String[] reply = client.getReplyString().split("\r\n");
assertTrue(reply[0], Pattern.matches(PATTERN, reply[0]));
From 2f5e76f9f498fc5fc6d7cbeffce06df0618c8d90 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 30 May 2011 19:36:20 +0000
Subject: [PATCH 076/101] Returning the correct reply codes for file and
directory listings (FTPSERVER-413)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1129319 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/ftpserver/command/impl/STAT.java | 13 ++++++++++---
.../org/apache/ftpserver/clienttests/StatTest.java | 6 +++---
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
index 5530b21d..8607752d 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
@@ -77,11 +77,18 @@ public void execute(final FtpIoSession session,
String dirList = directoryLister.listFiles(parsedArg,
session.getFileSystemView(), LIST_FILE_FORMATER);
-
+
+ int replyCode;
+ if(file.isDirectory()) {
+ replyCode = FtpReply.REPLY_212_DIRECTORY_STATUS;
+ } else {
+ replyCode = FtpReply.REPLY_213_FILE_STATUS;
+ }
+
session
.write(new DefaultFtpReply(
- FtpReply.REPLY_211_SYSTEM_STATUS_REPLY,
- dirList));
+ replyCode,
+ dirList));
} catch (FtpException e) {
session.write(LocalizedFtpReply
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
index fa271bff..0b02a9e4 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
@@ -30,7 +30,7 @@
*/
public class StatTest extends ClientTestTemplate {
- private static final String PATTERN = "^211[-\\s]-rw-------\\s\\s\\s1\\suser\\sgroup\\s{12}0\\s[A-Za-z0-9\\s]{6}\\s\\d\\d:\\d\\d\\stest\\d.txt$";
+ private static final String PATTERN = "^21\\d[-\\s]-rw-------\\s\\s\\s1\\suser\\sgroup\\s{12}0\\s[A-Za-z0-9\\s]{6}\\s\\d\\d:\\d\\d\\stest\\d.txt$";
private static final File TEST_DIR = new File(ROOT_DIR, "test");
private static final File TEST_FILE1 = new File(TEST_DIR, "test1.txt");
@@ -43,7 +43,7 @@ public void testStatDir() throws Exception {
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
- assertEquals(211, client.stat(TEST_DIR.getName()));
+ assertEquals(212, client.stat(TEST_DIR.getName()));
String[] reply = client.getReplyString().split("\r\n");
assertTrue(reply[0], Pattern.matches(PATTERN, reply[0]));
@@ -56,7 +56,7 @@ public void testStatFile() throws Exception {
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
- assertEquals(211, client.stat(TEST_DIR.getName() + "/" + TEST_FILE1.getName()));
+ assertEquals(213, client.stat(TEST_DIR.getName() + "/" + TEST_FILE1.getName()));
String[] reply = client.getReplyString().split("\r\n");
assertTrue(reply[0], Pattern.matches(PATTERN, reply[0]));
From f69f49ec0c17a4113789f8c3d3a2adff92e94c6d Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 30 May 2011 20:19:22 +0000
Subject: [PATCH 077/101] Removing useless, incorrect test
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1129348 13f79535-47bb-0310-9956-ffa450edef68
---
.../BindExceptionParallelTest.java | 126 ------------------
1 file changed, 126 deletions(-)
delete mode 100644 core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
deleted file mode 100644
index e5efb340..00000000
--- a/core/src/test/java/org/apache/ftpserver/clienttests/BindExceptionParallelTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.clienttests;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.commons.net.ftp.FTPClient;
-import org.apache.ftpserver.ConnectionConfigFactory;
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
-import org.apache.ftpserver.test.TestUtil;
-
-/**
-*
-* From FTPSERVER-250
-*
-* @author Apache MINA Project*
-*/
-public class BindExceptionParallelTest extends ClientTestTemplate {
- private static final int NUMBER_OF_CLIENTS = 2;
- private List clients;
-
- private int port = TestUtil.findFreePort(2020);
-
- public BindExceptionParallelTest() throws IOException {
- // default cstr
- }
-
- @Override
- protected FTPClient createFTPClient() throws Exception {
- FTPClient c = super.createFTPClient();
- c.setDataTimeout(1000);
- return c;
- }
-
- @Override
- protected void connectClient() throws Exception {
- clients = new ArrayList();
-
- for (int i = 0; i < NUMBER_OF_CLIENTS; i++) {
- super.connectClient();
- client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
- clients.add(client);
- }
-
- client = null;
- }
-
- @Override
- protected ConnectionConfigFactory createConnectionConfigFactory() {
- ConnectionConfigFactory factory = super.createConnectionConfigFactory();
- factory.setMaxLogins(0);
- return factory;
- }
-
- @Override
- protected DataConnectionConfigurationFactory createDataConnectionConfigurationFactory() {
- DataConnectionConfigurationFactory factory = super.createDataConnectionConfigurationFactory();
- factory.setActiveLocalPort(port);
- factory.setActiveLocalAddress("localhost");
- return factory;
- }
-
- public void testParallelExecution() throws Exception {
- final BindExceptionTestFailStatus testFailStatus = new BindExceptionTestFailStatus();
- for (int i = 0; i < NUMBER_OF_CLIENTS; i++) {
- final int c = i;
- new Thread("client" + (i + 1)) {
- @Override
- public void run() {
- try {
- System.out.println(" -- " + getName() + " before command");
- System.out.println("--> " + getName() + " " + Arrays.asList(clients.get(c).listFiles()));
- System.out.println(" -- " + getName() + " command ok");
- } catch (IOException e) {
- System.err.println(" xx " + getName() + " command ko");
- e.printStackTrace();
- testFailStatus.failed = true;
- }
- }
- }.start();
- }
-
- // make time to threads to finish its work
- Thread.sleep(3000);
-
- assertFalse(testFailStatus.failed);
- }
-
- @Override
- protected void tearDown() throws Exception {
- for (int i = 1; i < NUMBER_OF_CLIENTS; i++)
- if (isConnectClient()) {
- try {
- clients.get(i).quit();
- } catch (Exception e) {
- // ignore
- }
- }
- client = clients.get(0);
- super.tearDown();
- }
-
- private static final class BindExceptionTestFailStatus {
- public boolean failed = false;
- }
-}
\ No newline at end of file
From bb1a5833f7a3ac96aa9511ffac1903aee3a0f4c0 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Tue, 31 May 2011 13:28:59 +0000
Subject: [PATCH 078/101] Ensuring that STAT file listings will not return a
file listing record on the last line of multi-line replies (FTPSERVER-414)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1129664 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/command/impl/STAT.java | 8 +++-----
.../org/apache/ftpserver/message/FtpStatus.properties | 4 +++-
.../java/org/apache/ftpserver/clienttests/StatTest.java | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
index 8607752d..2618f28d 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
@@ -26,7 +26,6 @@
import org.apache.ftpserver.command.impl.listing.LISTFileFormater;
import org.apache.ftpserver.command.impl.listing.ListArgument;
import org.apache.ftpserver.command.impl.listing.ListArgumentParser;
-import org.apache.ftpserver.ftplet.DefaultFtpReply;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpFile;
import org.apache.ftpserver.ftplet.FtpReply;
@@ -85,11 +84,10 @@ public void execute(final FtpIoSession session,
replyCode = FtpReply.REPLY_213_FILE_STATUS;
}
- session
- .write(new DefaultFtpReply(
- replyCode,
+ session.write(LocalizedFtpReply.translate(session, request, context,
+ replyCode, "STAT",
dirList));
-
+
} catch (FtpException e) {
session.write(LocalizedFtpReply
.translate(
diff --git a/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties b/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties
index 5c75a259..5f497f63 100644
--- a/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties
+++ b/core/src/main/resources/org/apache/ftpserver/message/FtpStatus.properties
@@ -232,7 +232,9 @@
213.SIZE={output.msg}
211.STAT=Apache FtpServer\nConnected to {server.ip}\nConnected from {client.ip}\nLogged in as {client.login.name}\nEnd of status.
-450.LIST=Non-existing file
+212.STAT=\n{output.msg}End of status.
+213.STAT=\n{output.msg}End of status.
+450.STAT=Non-existing file
501.STOR=Syntax error in parameters or arguments.
550.STOR.invalid={output.msg}\: Invalid path.
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
index 0b02a9e4..08e8b740 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/StatTest.java
@@ -30,7 +30,7 @@
*/
public class StatTest extends ClientTestTemplate {
- private static final String PATTERN = "^21\\d[-\\s]-rw-------\\s\\s\\s1\\suser\\sgroup\\s{12}0\\s[A-Za-z0-9\\s]{6}\\s\\d\\d:\\d\\d\\stest\\d.txt$";
+ private static final String PATTERN = "^-rw-------\\s\\s\\s1\\suser\\sgroup\\s{12}0\\s[A-Za-z0-9\\s]{6}\\s\\d\\d:\\d\\d\\stest\\d.txt$";
private static final File TEST_DIR = new File(ROOT_DIR, "test");
private static final File TEST_FILE1 = new File(TEST_DIR, "test1.txt");
@@ -46,8 +46,8 @@ public void testStatDir() throws Exception {
assertEquals(212, client.stat(TEST_DIR.getName()));
String[] reply = client.getReplyString().split("\r\n");
- assertTrue(reply[0], Pattern.matches(PATTERN, reply[0]));
assertTrue(reply[1], Pattern.matches(PATTERN, reply[1]));
+ assertTrue(reply[2], Pattern.matches(PATTERN, reply[2]));
}
public void testStatFile() throws Exception {
@@ -59,7 +59,7 @@ public void testStatFile() throws Exception {
assertEquals(213, client.stat(TEST_DIR.getName() + "/" + TEST_FILE1.getName()));
String[] reply = client.getReplyString().split("\r\n");
- assertTrue(reply[0], Pattern.matches(PATTERN, reply[0]));
+ assertTrue(reply[1], Pattern.matches(PATTERN, reply[1]));
}
public void testStat() throws Exception {
From c9d023f84026babd70a86b6a47ad6a5cae43b491 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 1 Jun 2011 10:01:52 +0000
Subject: [PATCH 079/101] Removing oro dependency (FTPSERVER-416)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1130078 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 5 -----
pom.xml | 6 ------
2 files changed, 11 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index 033e1990..5f429344 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -162,11 +162,6 @@
commons-codectest
-
- oro
- oro
- test
- hsqldbhsqldb
diff --git a/pom.xml b/pom.xml
index 4f00e3d6..1b1fc413 100644
--- a/pom.xml
+++ b/pom.xml
@@ -220,12 +220,6 @@
1.3
-
- oro
- oro
- 2.0.8
-
-
hsqldbhsqldb
From 3378cf69ee8a71a187e6f47f4580fc7ff7986d32 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 1 Jun 2011 13:09:02 +0000
Subject: [PATCH 080/101] Doing an explicit null check in PassivePorts
(FTPSERVER-415)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1130141 13f79535-47bb-0310-9956-ffa450edef68
---
.../java/org/apache/ftpserver/impl/PassivePorts.java | 10 +++++-----
.../org/apache/ftpserver/impl/PassivePortsTest.java | 8 ++++++++
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index 7ca881f8..41789103 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -156,11 +156,11 @@ public PassivePorts(final String passivePorts, boolean checkIfBound) {
}
public PassivePorts(final int[] passivePorts, boolean checkIfBound) {
- if (passivePorts != null) {
- this.passivePorts = passivePorts.clone();
- } else {
- this.passivePorts = null;
- }
+ if(passivePorts == null) {
+ throw new NullPointerException("passivePorts can not be null");
+ }
+
+ this.passivePorts = passivePorts.clone();
reservedPorts = new boolean[passivePorts.length];
this.checkIfBound = checkIfBound;
diff --git a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
index 0fe40d1d..40ffe4b7 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
@@ -202,4 +202,12 @@ public void testParseRelease() {
assertEquals(-1, ports.reserveNextPort());
}
+ public void testNullPorts() {
+ try {
+ new PassivePorts((int[])null, false);
+ fail("Must throw NPE");
+ } catch(NullPointerException e) {
+ // ok
+ }
+ }
}
From 5db7c5f4173e974ac529fb8a8544494a2d7bf1d3 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 18 Jun 2011 21:40:01 +0000
Subject: [PATCH 081/101] New implementation of passive ports, uses random
assignments of ports and has more efficient handling of wide passive port
ranges. Thanks to Allen Firstenberg for the implementation! (FTPSERVER-420,
FTPSERVER-419)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1137252 13f79535-47bb-0310-9956-ffa450edef68
---
.../DataConnectionConfigurationFactory.java | 3 +-
.../apache/ftpserver/impl/PassivePorts.java | 146 ++++++++-------
.../clienttests/PasvUsedPortTest.java | 5 -
.../ftpserver/impl/PassivePortsTest.java | 168 +++++++-----------
4 files changed, 154 insertions(+), 168 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
index a0482bf5..0e2e3335 100644
--- a/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/DataConnectionConfigurationFactory.java
@@ -21,6 +21,7 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.util.Collections;
import org.apache.ftpserver.impl.DefaultDataConnectionConfiguration;
import org.apache.ftpserver.impl.PassivePorts;
@@ -48,7 +49,7 @@ public class DataConnectionConfigurationFactory {
private String passiveAddress;
private String passiveExternalAddress;
- private PassivePorts passivePorts = new PassivePorts(new int[] { 0 }, true);
+ private PassivePorts passivePorts = new PassivePorts(Collections.emptySet(), true);
private boolean implicitSsl;
/**
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index 41789103..4d00f126 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -22,10 +22,15 @@
import java.io.IOException;
import java.net.ServerSocket;
import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.HashSet;
import java.util.List;
+import java.util.Random;
+import java.util.Set;
import java.util.StringTokenizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* Internal class, do not use directly.
*
@@ -36,16 +41,22 @@
*/
public class PassivePorts {
+ private Logger log = LoggerFactory.getLogger(PassivePorts.class);
+
private static final int MAX_PORT = 65535;
- private int[] passivePorts;
+ private static final Integer MAX_PORT_INTEGER = Integer.valueOf(MAX_PORT);
+
+ private List freeList;
- private boolean[] reservedPorts;
+ private Set usedList;
+
+ private Random r = new Random();
private String passivePortsString;
private boolean checkIfBound;
-
+
/**
* Parse a string containing passive ports
*
@@ -55,27 +66,27 @@ public class PassivePorts {
* 123,124,125) or ranges of ports, including open ended ranges
* (e.g. 123-125, 30000-, -1023). Combinations for single ports
* and ranges is also supported.
- * @return An instance of {@link PassivePorts} based on the parsed string
+ * @return A list of Integer objects, based on the parsed string
* @throws IllegalArgumentException
* If any of of the ports in the string is invalid (e.g. not an
* integer or too large for a port number)
*/
- private static int[] parse(final String portsString) {
- List passivePortsList = new ArrayList();
+ private static Set parse(final String portsString) {
+ Set passivePortsList = new HashSet();
boolean inRange = false;
- Integer lastPort = 1;
+ Integer lastPort = Integer.valueOf(1);
StringTokenizer st = new StringTokenizer(portsString, ",;-", true);
while (st.hasMoreTokens()) {
String token = st.nextToken().trim();
if (",".equals(token) || ";".equals(token)) {
if (inRange) {
- fillRange(passivePortsList, lastPort, MAX_PORT);
+ fillRange(passivePortsList, lastPort, MAX_PORT_INTEGER);
}
// reset state
- lastPort = 1;
+ lastPort = Integer.valueOf(1);
inRange = false;
} else if ("-".equals(token)) {
inRange = true;
@@ -84,7 +95,7 @@ private static int[] parse(final String portsString) {
} else {
Integer port = Integer.valueOf(token);
- verifyPort(port.intValue());
+ verifyPort(port);
if (inRange) {
// add all numbers from last int
@@ -100,41 +111,26 @@ private static int[] parse(final String portsString) {
}
if (inRange) {
- fillRange(passivePortsList, lastPort, MAX_PORT);
- }
-
- int[] passivePorts = new int[passivePortsList.size()];
-
- Iterator iter = passivePortsList.iterator();
-
- int counter = 0;
- while (iter.hasNext()) {
- Integer port = iter.next();
- passivePorts[counter] = port.intValue();
- counter++;
+ fillRange(passivePortsList, lastPort, MAX_PORT_INTEGER);
}
- return passivePorts;
+ return passivePortsList;
}
/**
* Fill a range of ports
*/
- private static void fillRange(final List passivePortsList,
- final Integer beginPort, final Integer endPort) {
- for (int i = beginPort.intValue(); i <= endPort.intValue(); i++) {
- addPort(passivePortsList, i);
+ private static void fillRange(final Set passivePortsList, final Integer beginPort, final Integer endPort) {
+ for (int i = beginPort; i <= endPort; i++) {
+ addPort(passivePortsList, Integer.valueOf(i));
}
}
/**
* Add a single port if not already in list
*/
- private static void addPort(final List passivePortsList,
- final Integer rangePort) {
- if (!passivePortsList.contains(rangePort)) {
- passivePortsList.add(rangePort);
- }
+ private static void addPort(final Set passivePortsList, final Integer port) {
+ passivePortsList.add(port);
}
/**
@@ -142,8 +138,7 @@ private static void addPort(final List passivePortsList,
*/
private static void verifyPort(final int port) {
if (port < 0) {
- throw new IllegalArgumentException("Port can not be negative: "
- + port);
+ throw new IllegalArgumentException("Port can not be negative: " + port);
} else if (port > MAX_PORT) {
throw new IllegalArgumentException("Port too large: " + port);
}
@@ -155,14 +150,17 @@ public PassivePorts(final String passivePorts, boolean checkIfBound) {
this.passivePortsString = passivePorts;
}
- public PassivePorts(final int[] passivePorts, boolean checkIfBound) {
- if(passivePorts == null) {
- throw new NullPointerException("passivePorts can not be null");
- }
-
- this.passivePorts = passivePorts.clone();
+ public PassivePorts(Set passivePorts, boolean checkIfBound) {
+ if (passivePorts == null) {
+ throw new NullPointerException("passivePorts can not be null");
+ } else if(passivePorts.isEmpty()) {
+ passivePorts = new HashSet();
+ passivePorts.add(0);
+ }
+
+ this.freeList = new ArrayList(passivePorts);
+ this.usedList = new HashSet(passivePorts.size());
- reservedPorts = new boolean[passivePorts.length];
this.checkIfBound = checkIfBound;
}
@@ -171,15 +169,15 @@ public PassivePorts(final int[] passivePorts, boolean checkIfBound) {
*/
private boolean checkPortUnbound(int port) {
// is this check disabled?
- if(!checkIfBound) {
+ if (!checkIfBound) {
return true;
}
-
+
// if using 0 port, it will always be available
- if(port == 0) {
+ if (port == 0) {
return true;
}
-
+
ServerSocket ss = null;
try {
ss = new ServerSocket(port);
@@ -189,7 +187,7 @@ private boolean checkPortUnbound(int port) {
// port probably in use, check next
return false;
} finally {
- if(ss != null) {
+ if (ss != null) {
try {
ss.close();
} catch (IOException e) {
@@ -199,27 +197,49 @@ private boolean checkPortUnbound(int port) {
}
}
}
-
- public int reserveNextPort() {
- // search for a free port
- for (int i = 0; i < passivePorts.length; i++) {
- if (!reservedPorts[i] && checkPortUnbound(passivePorts[i])) {
- if (passivePorts[i] != 0) {
- reservedPorts[i] = true;
- }
- return passivePorts[i];
+
+ public synchronized int reserveNextPort() {
+ // create a copy of the free ports, so that we can keep track of the tested ports
+ List freeCopy = new ArrayList(freeList);
+
+ // Loop until we have found a port, or exhausted all available ports
+ while (freeCopy.size() > 0) {
+ // Otherwise, pick one at random
+ int i = r.nextInt(freeCopy.size());
+ Integer ret = freeCopy.get(i);
+
+ if (ret == 0) {
+ // "Any" port should not be removed from our free list,
+ // nor added to the used list
+ return 0;
+
+ } else if (checkPortUnbound(ret)) {
+ // Not used by someone else, so lets reserve it and return it
+ freeList.remove(i);
+ usedList.add(ret);
+ return ret;
+
+ } else {
+ freeCopy.remove(i);
+ // log port unavailable, but left in pool
+ log.warn("Passive port in use by another process: " + ret);
}
}
return -1;
}
- public void releasePort(final int port) {
- for (int i = 0; i < passivePorts.length; i++) {
- if (passivePorts[i] == port) {
- reservedPorts[i] = false;
- break;
- }
+ public synchronized void releasePort(final int port) {
+ if (port == 0) {
+ // Ignore port 0 being released,
+ // since its not put on the used list
+
+ } else if (usedList.remove(port)) {
+ freeList.add(port);
+
+ } else {
+ // log attempt to release unused port
+ log.warn("Releasing unreserved passive port: " + port);
}
}
@@ -231,7 +251,7 @@ public String toString() {
StringBuilder sb = new StringBuilder();
- for (int port : passivePorts) {
+ for (Integer port : freeList) {
sb.append(port);
sb.append(",");
}
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
index 00492421..ab3635ba 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvUsedPortTest.java
@@ -68,10 +68,5 @@ public void testPasvWithUsedPort() throws Exception {
// close blocking socket
ss.close();
-
- client.connect("localhost", getListenerPort());
- client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
- client.pasv();
- assertEquals("227 Entering Passive Mode (127,0,0,1,48,156)", client.getReplyString().trim());
}
}
diff --git a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
index 40ffe4b7..3c48944a 100644
--- a/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
+++ b/core/src/test/java/org/apache/ftpserver/impl/PassivePortsTest.java
@@ -19,11 +19,18 @@
package org.apache.ftpserver.impl;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
/**
*
-* @author Apache MINA Project*
+* @author Apache MINA Project
+*
*/
public class PassivePortsTest extends TestCase {
@@ -68,146 +75,109 @@ public void testParseNonNumericValue() {
// ok
}
}
+
+ private void assertContains( List valid, Integer testVal ){
+ if( !valid.remove(testVal) ){
+ throw new AssertionFailedError( "Did not find "+testVal+" in valid list "+valid );
+ }
+ }
+
+ private void assertReserveAll(String portString, int... validPorts) {
+ PassivePorts ports = new PassivePorts(portString, false);
+
+ List valid = valid(validPorts);
- public void testParseListOfValues() {
- PassivePorts ports = new PassivePorts("123, 456,\t\n789", false);
-
- assertEquals(123, ports.reserveNextPort());
- assertEquals(456, ports.reserveNextPort());
- assertEquals(789, ports.reserveNextPort());
+ int len = valid.size();
+ for(int i = 0; i valid(int... ints) {
+ List valid = new ArrayList();
+ for(int i : ints) {
+ valid.add(i);
+ }
+ return valid;
+ }
- assertEquals(123, ports.reserveNextPort());
- assertEquals(789, ports.reserveNextPort());
- assertEquals(456, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ public void testParseListOfValues() {
+ assertReserveAll("123, 456,\t\n789", 123, 456, 789);
}
public void testParseListOfValuesDuplicate() {
- PassivePorts ports = new PassivePorts("123, 789, 456, 789", false);
-
- assertEquals(123, ports.reserveNextPort());
- assertEquals(789, ports.reserveNextPort());
- assertEquals(456, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("123, 789, 456, 789", 123, 456, 789);
}
public void testParseSimpleRange() {
- PassivePorts ports = new PassivePorts("123-125", false);
-
- assertEquals(123, ports.reserveNextPort());
- assertEquals(124, ports.reserveNextPort());
- assertEquals(125, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("123-125", 123, 124, 125);
}
public void testParseMultipleRanges() {
- PassivePorts ports = new PassivePorts("123-125, 127-128, 130-132", false);
-
- assertEquals(123, ports.reserveNextPort());
- assertEquals(124, ports.reserveNextPort());
- assertEquals(125, ports.reserveNextPort());
- assertEquals(127, ports.reserveNextPort());
- assertEquals(128, ports.reserveNextPort());
- assertEquals(130, ports.reserveNextPort());
- assertEquals(131, ports.reserveNextPort());
- assertEquals(132, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("123-125, 127-128, 130-132", 123, 124, 125, 127, 128, 130, 131, 132);
}
public void testParseMixedRangeAndSingle() {
- PassivePorts ports = new PassivePorts("123-125, 126, 128-129", false);
-
- assertEquals(123, ports.reserveNextPort());
- assertEquals(124, ports.reserveNextPort());
- assertEquals(125, ports.reserveNextPort());
- assertEquals(126, ports.reserveNextPort());
- assertEquals(128, ports.reserveNextPort());
- assertEquals(129, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("123-125, 126, 128-129", 123, 124, 125, 126, 128, 129);
}
public void testParseOverlapingRanges() {
- PassivePorts ports = new PassivePorts("123-125, 124-126", false);
-
- assertEquals(123, ports.reserveNextPort());
- assertEquals(124, ports.reserveNextPort());
- assertEquals(125, ports.reserveNextPort());
- assertEquals(126, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("123-125, 124-126", 123, 124, 125, 126);
}
public void testParseOverlapingRangesorder() {
- PassivePorts ports = new PassivePorts("124-126, 123-125", false);
-
- assertEquals(124, ports.reserveNextPort());
- assertEquals(125, ports.reserveNextPort());
- assertEquals(126, ports.reserveNextPort());
- assertEquals(123, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("124-126, 123-125", 123, 124, 125, 126);
}
public void testParseOpenLowerRange() {
- PassivePorts ports = new PassivePorts("9, -3", false);
-
- assertEquals(9, ports.reserveNextPort());
- assertEquals(1, ports.reserveNextPort());
- assertEquals(2, ports.reserveNextPort());
- assertEquals(3, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("9, -3", 1, 2, 3, 9);
}
public void testParseOpenUpperRange() {
- PassivePorts ports = new PassivePorts("65533-", false);
-
- assertEquals(65533, ports.reserveNextPort());
- assertEquals(65534, ports.reserveNextPort());
- assertEquals(65535, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("65533-", 65533, 65534, 65535);
}
public void testParseOpenUpperRange3() {
- PassivePorts ports = new PassivePorts("65533-, 65532-", false);
-
- assertEquals(65533, ports.reserveNextPort());
- assertEquals(65534, ports.reserveNextPort());
- assertEquals(65535, ports.reserveNextPort());
- assertEquals(65532, ports.reserveNextPort());
- assertEquals(-1, ports.reserveNextPort());
+ assertReserveAll("65533-, 65532-", 65532, 65533, 65534, 65535);
}
public void testParseOpenUpperRange2() {
- PassivePorts ports = new PassivePorts("65533-, 1", false);
+ assertReserveAll("65533-, 1", 1, 65533, 65534, 65535);
+ }
+
+ public void testReserveNextPortBound() throws IOException {
+ ServerSocket ss = new ServerSocket(0);
+
+ PassivePorts ports = new PassivePorts(Integer.toString(ss.getLocalPort()), true);
- assertEquals(65533, ports.reserveNextPort());
- assertEquals(65534, ports.reserveNextPort());
- assertEquals(65535, ports.reserveNextPort());
- assertEquals(1, ports.reserveNextPort());
assertEquals(-1, ports.reserveNextPort());
+
+ ss.close();
+
+ assertEquals(ss.getLocalPort(), ports.reserveNextPort());
}
+
public void testParseRelease() {
PassivePorts ports = new PassivePorts("123, 456,789", false);
- assertEquals(123, ports.reserveNextPort());
- assertEquals(456, ports.reserveNextPort());
- ports.releasePort(456);
- assertEquals(456, ports.reserveNextPort());
+ List valid = valid(123, 456, 789);
+
+ assertContains(valid, ports.reserveNextPort());
+
+ int port = ports.reserveNextPort();
+ assertContains(valid, port);
+ ports.releasePort(port);
+ valid.add(port);
+ assertContains(valid, ports.reserveNextPort());
+
+ assertContains(valid, ports.reserveNextPort());
- assertEquals(789, ports.reserveNextPort());
assertEquals(-1, ports.reserveNextPort());
+ assertEquals(0, valid.size());
}
- public void testNullPorts() {
- try {
- new PassivePorts((int[])null, false);
- fail("Must throw NPE");
- } catch(NullPointerException e) {
- // ok
- }
- }
-}
+}
\ No newline at end of file
From f4a5ed7268edc36fbca31c95f8a8ca6a75b98a68 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 18 Jun 2011 21:52:30 +0000
Subject: [PATCH 082/101] Upgrading to MINA 2.0.4 (FTPSERVER-421)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1137255 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 1b1fc413..b460b627 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,7 +150,7 @@
org.apache.minamina-core
- 2.0.2
+ 2.0.4org.easymock
From 600a76b1a16b3dcd399f9f105e4b005169fc28ff Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 19 Jun 2011 09:50:49 +0000
Subject: [PATCH 083/101] Adding hashCode() to NativeFtpFile (FTPSERVER-375)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1137325 13f79535-47bb-0310-9956-ffa450edef68
---
.../filesystem/nativefs/impl/NativeFtpFile.java | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index 300193e5..00c819a3 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -533,4 +533,15 @@ public boolean equals(Object obj) {
}
return false;
}
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ try {
+ return prime + ((file == null) ? 0 : file.getCanonicalFile().hashCode());
+ } catch (IOException e) {
+ return prime;
+ }
+ }
}
From 4998328937ba2f485a7dec399a35f856cf8e9ceb Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 19 Jun 2011 11:57:57 +0000
Subject: [PATCH 084/101] Simplified hashCode() of NativeFtpFile
(FTPSERVER-375)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1137352 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/filesystem/nativefs/impl/NativeFtpFile.java | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index 00c819a3..24dc4e4a 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -537,11 +537,10 @@ public boolean equals(Object obj) {
@Override
public int hashCode() {
- final int prime = 31;
try {
- return prime + ((file == null) ? 0 : file.getCanonicalFile().hashCode());
+ return file.getCanonicalFile().hashCode();
} catch (IOException e) {
- return prime;
+ return 0;
}
}
}
From 2acd3b0d69a4b63bc6dd2ff0a6f31866e60fedfc Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sun, 19 Jun 2011 19:31:41 +0000
Subject: [PATCH 085/101] Replacing expired example certificate (FTPSERVER-404)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1137422 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/res/ftpserver.jks | Bin 1242 -> 1262 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/distribution/res/ftpserver.jks b/distribution/res/ftpserver.jks
index 5de00f9250978b6c994e7f28fbcb981079b986fa..c9487a9f30d1ee3e28115245f4598fd7743e7292 100644
GIT binary patch
delta 939
zcmcb``Hs`*-`jt085kItfS3`CB@zn~lQU8k(n<=7Q;W({ixg5T5_1c3Qh^E#mPd*|
znv`l50-=tP`rFjJmEgv6IupY9gzjj+1Iz9g4(ro-Qu
z7keHuZDNir7FBn16*az-R5?fIpwPQD?taIjcVviOG=BAvzxR<9ubY6%ga&Stmkwu`
zT}7vZTvj!J&jlYE#EbrqrOjW#>M{nBiBCMv|RUX!2uJ74TYP-BWxs2Hggvj{-1c|xw`YA
zT9>pJVcp_K3NqTgb2L<6y^lICU~;`$=>5+pTlUT#o
ztv}>vz4-83kU=zO?~2ciN0zM;Hv2PYo{AjjpYzWiZJfABxM0pPg^M50#N4v@nqR;D
z6ANR4O4NqUEa!70vo6Kx=7~!iu(Zv0+I1{A6(t6k^%)Fwm_&G9JQX@0|9MJ*cH3i@
zr5iPUC$s=Xo%s(1K#74iLpcq0Ie
CaBk`V
delta 943
zcmaFId5g3D-`jt085kItfS3`CS#vA1Q!9Zyu5A}HKLhE0gC@pq13oq`Z8k<0MlB{m
zMn+Z!mL|sX57O)RtGwEzQ&gw_|?01)rYfw)A;s5!@<|ch^@7E3aXP24tu+(b
z9$NHK?PGvMmt2bK8OaanbJOML-0xCbB)>;i_G+)eI_-v8P3ond?+R4rE;)7PKyiED
z%jvSUzdowg@7N#ecd2UohJd4nQfYU*H%L{!VJV6~GW&C5n8L%mcJ2H8zC51zcFl+H
ziYq4i-QICM(JtFQmI{7lV$@H@O@1GaW<{aD7eNgYU-g++S{0~7j
z2bg`Iw|t0{<+CeTvcoIs)yLbWuG99`{#cf?c=djdWVeY|zu6tC7x%Vsle@Oz&DolR
zo4ul*-}+OUZ_;vYg-PwPnjz{$oO%EBhh6dG*EXTSsE
za0s&omn4>?8rJgyl>-IXg;|_4ODYZd4R}FZE@3vug2d#ER6`*H0gwQ{-RwKOm^G=_3
Date: Mon, 20 Jun 2011 18:15:45 +0000
Subject: [PATCH 086/101] No need to check for null when using instanceof
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1137730 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/filesystem/nativefs/impl/NativeFtpFile.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index 24dc4e4a..3bf78af7 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -518,7 +518,7 @@ public final static String getPhysicalName(final String rootDir,
@Override
public boolean equals(Object obj) {
- if (obj != null && obj instanceof NativeFtpFile) {
+ if (obj instanceof NativeFtpFile) {
File thisCanonicalFile;
File otherCanonicalFile;
try {
From d530aa524bffe2c6b770b724f0022643536a520c Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 22 Jun 2011 20:17:32 +0000
Subject: [PATCH 087/101] Fix broken test, where assert was invoked in a
separate thread, and checking the temporary getUserArgument() rather than the
correct getUser() (FTPSERVER-418)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1138613 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpletcontainer/FtpLetReturnDefaultTest.java | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
index 04264417..d76f7f12 100644
--- a/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ftpletcontainer/FtpLetReturnDefaultTest.java
@@ -25,6 +25,8 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.ftpserver.FtpServerFactory;
@@ -34,6 +36,7 @@
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletResult;
+import org.apache.ftpserver.ftplet.User;
import org.apache.ftpserver.test.TestUtil;
/**
@@ -80,11 +83,13 @@ protected FtpServerFactory createServer() throws Exception {
}
public void testLogin() throws Exception {
+ final LinkedBlockingQueue loggedInUser = new LinkedBlockingQueue();
+
MockFtplet.callback = new MockFtpletCallback() {
public FtpletResult onLogin(FtpSession session, FtpRequest request)
throws FtpException, IOException {
- assertNotNull(session.getUserArgument());
-
+ loggedInUser.add(session.getUser());
+
return super.onLogin(session, request);
}
@@ -92,6 +97,8 @@ public FtpletResult onLogin(FtpSession session, FtpRequest request)
MockFtpletCallback.returnValue = FtpletResult.DEFAULT;
assertTrue(client.login(ADMIN_USERNAME, ADMIN_PASSWORD));
+
+ assertNotNull(loggedInUser.poll(2000, TimeUnit.MILLISECONDS));
}
public void testDelete() throws Exception {
From 0180247c6bfa2dd0a65e0374865e9c3045a61457 Mon Sep 17 00:00:00 2001
From: Sebastian Bazley
Date: Wed, 22 Jun 2011 21:07:26 +0000
Subject: [PATCH 088/101] FTPSERVER-375 - use canonicalPath rather than File to
implement equals and hashcode
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1138633 13f79535-47bb-0310-9956-ffa450edef68
---
.../nativefs/impl/NativeFtpFile.java | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index 3bf78af7..0a50fa44 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -516,20 +516,24 @@ public final static String getPhysicalName(final String rootDir,
return resArg;
}
+ /**
+ * Implements equals by comparing getCanonicalPath() for the underlying file instabnce.
+ * Ignores the fileName and User fields
+ */
@Override
public boolean equals(Object obj) {
if (obj instanceof NativeFtpFile) {
- File thisCanonicalFile;
- File otherCanonicalFile;
+ String thisCanonicalPath;
+ String otherCanonicalPath;
try {
- thisCanonicalFile = this.file.getCanonicalFile();
- otherCanonicalFile = ((NativeFtpFile) obj).file
- .getCanonicalFile();
+ thisCanonicalPath = this.file.getCanonicalPath();
+ otherCanonicalPath = ((NativeFtpFile) obj).file
+ .getCanonicalPath();
} catch (IOException e) {
throw new RuntimeException("Failed to get the canonical path", e);
}
- return thisCanonicalFile.equals(otherCanonicalFile);
+ return thisCanonicalPath.equals(otherCanonicalPath);
}
return false;
}
@@ -538,7 +542,7 @@ public boolean equals(Object obj) {
@Override
public int hashCode() {
try {
- return file.getCanonicalFile().hashCode();
+ return file.getCanonicalPath().hashCode();
} catch (IOException e) {
return 0;
}
From 033a484c3c17036484d34afae38b697c932298e6 Mon Sep 17 00:00:00 2001
From: Sebastian Bazley
Date: Wed, 22 Jun 2011 21:08:08 +0000
Subject: [PATCH 089/101] Missing @Overrides
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1138634 13f79535-47bb-0310-9956-ffa450edef68
---
.../ftpserver/filesystem/nativefs/impl/NativeFtpFile.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index 0a50fa44..1f8ddbe7 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -362,6 +362,7 @@ public OutputStream createOutputStream(final long offset)
// The IBM jre needs to have both the stream and the random access file
// objects closed to actually close the file
return new FileOutputStream(raf.getFD()) {
+ @Override
public void close() throws IOException {
super.close();
raf.close();
@@ -386,6 +387,7 @@ public InputStream createInputStream(final long offset) throws IOException {
// The IBM jre needs to have both the stream and the random access file
// objects closed to actually close the file
return new FileInputStream(raf.getFD()) {
+ @Override
public void close() throws IOException {
super.close();
raf.close();
From 7ec38d03842491cee668c17e300afa6e5267ee1f Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Thu, 23 Jun 2011 07:34:47 +0000
Subject: [PATCH 090/101] Working around a bug in the IBM JVM which might cause
a NPE in test tear down (FTPSERVER-422)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1138753 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/clienttests/ClientTestTemplate.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
index cd6da8e2..23c9ea14 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
@@ -224,7 +224,12 @@ protected void tearDown() throws Exception {
}
if (server != null) {
- server.stop();
+ try {
+ server.stop();
+ } catch(NullPointerException e) {
+ // a bug in the IBM JVM might cause Thread.interrupt() to throw an NPE
+ // see http://www-01.ibm.com/support/docview.wss?uid=swg1IZ52037&wv=1
+ }
}
cleanTmpDirs();
From 1c7bbb6d3f2fdc1c766c189e52d55bfc6de049c6 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 25 Jun 2011 20:42:54 +0000
Subject: [PATCH 091/101] Updating README for 1.0.6
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1139619 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/README.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/distribution/README.txt b/distribution/README.txt
index f55e3f23..6670b4e3 100644
--- a/distribution/README.txt
+++ b/distribution/README.txt
@@ -13,6 +13,10 @@ you write Java code to process FTP event notifications that we call the Ftplet
API. Apache FtpServer provides an implementation of FTP server to support
this API.
+1.0.6
+--------------------------------
+Bug fix release which closes 19 issues since the 1.0.5 release, for example a overhaul of the passive port reservation handling. See full change log at: https://issues.apache.org/jira/browse/FTPSERVER/fixforversion/12315314
+
1.0.5
--------------------------------
Bug fix release that fixes important issues found since the 1.0.4 release.
From 136f7bd8b48c6c408932655aebeb2e06cd867f18 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 25 Jun 2011 20:43:17 +0000
Subject: [PATCH 092/101] Updating README for 1.0.6
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1139620 13f79535-47bb-0310-9956-ffa450edef68
---
distribution/README.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/distribution/README.txt b/distribution/README.txt
index 6670b4e3..e609542b 100644
--- a/distribution/README.txt
+++ b/distribution/README.txt
@@ -15,7 +15,7 @@ this API.
1.0.6
--------------------------------
-Bug fix release which closes 19 issues since the 1.0.5 release, for example a overhaul of the passive port reservation handling. See full change log at: https://issues.apache.org/jira/browse/FTPSERVER/fixforversion/12315314
+Bug fix release which closes 19 issues since the 1.0.5 release, for example an overhaul of the passive port reservation handling. See full change log at: https://issues.apache.org/jira/browse/FTPSERVER/fixforversion/12315314
1.0.5
--------------------------------
From 7a3dadbb015cae3b1bf7ad3c813d2c6ca83240e6 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 25 Jun 2011 20:49:38 +0000
Subject: [PATCH 093/101] Increasing version for new development in 1.0.x
branch
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1139625 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 4 ++--
distribution/pom.xml | 4 ++--
examples/ftpserver-example-spring-war/pom.xml | 4 ++--
examples/ftpserver-osgi-ftplet-service/pom.xml | 4 ++--
examples/ftpserver-osgi-spring-service/pom.xml | 4 ++--
examples/pom.xml | 4 ++--
ftplet-api/pom.xml | 4 ++--
pom.xml | 2 +-
8 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index 5f429344..6b43ccb7 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -17,13 +17,13 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT4.0.0org.apache.ftpserverftpserver-coreApache FtpServer Core
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOTbundle
diff --git a/distribution/pom.xml b/distribution/pom.xml
index ea8e19f9..bf8914c7 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -22,14 +22,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT4.0.0org.apache.ftpserverftpserverpomApache FtpServer
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOTscm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/distributionscm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution
diff --git a/examples/ftpserver-example-spring-war/pom.xml b/examples/ftpserver-example-spring-war/pom.xml
index 0339a547..06127de3 100644
--- a/examples/ftpserver-example-spring-war/pom.xml
+++ b/examples/ftpserver-example-spring-war/pom.xml
@@ -18,7 +18,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT../../pom.xml
@@ -27,7 +27,7 @@
ftpserver-spring-warFtpServer Spring web project examplewar
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOTorg.springframework
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index a7e7e2c1..b6d292ac 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-ftplet-serviceFtpServer OSGi Ftplet service examplebundle
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index 70320180..a5e58baa 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -19,7 +19,7 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT../../pom.xml4.0.0
@@ -27,7 +27,7 @@
ftpserver-osgi-spring-serviceFtpServer OSGi Spring-DM examplebundle
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOTorg.apache.ftpserver
diff --git a/examples/pom.xml b/examples/pom.xml
index 616cee19..b7cc5230 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,14 +21,14 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT4.0.0org.apache.ftpserverftpserver-examplespomApache FtpServer Examples
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOTftpserver-example-spring-warftpserver-osgi-ftplet-service
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index ec080264..10387df9 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -17,12 +17,12 @@
ftpserver-parentorg.apache.ftpserver
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT4.0.0org.apache.ftpserverftplet-api
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOTbundleApache Ftplet API Ftplets are, similar to servlets, an API to plug into the
diff --git a/pom.xml b/pom.xml
index b460b627..be39033e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
ftpserver-parentpomApache FtpServer Parent
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOThttp://mina.apache.org/ftpserverJira
From e637ec6bd608f1e97ea37d762206f0d979b0ec90 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 25 Jun 2011 21:29:15 +0000
Subject: [PATCH 094/101] Changing deployment to use repository.apache.org
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1139628 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 17 +----------------
1 file changed, 1 insertion(+), 16 deletions(-)
diff --git a/pom.xml b/pom.xml
index be39033e..3fb78684 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
apacheorg.apache
- 4
+ 74.0.0org.apache.ftpserver
@@ -420,13 +420,6 @@
distributionexamples
-
-
- apache.releases
- Apache Release Distribution Repository
- scpexe://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository
-
-
@@ -436,14 +429,6 @@
examples
-
-
- dummy
- Dummy to avoid accidental deploys
-
-
-
-
1.51.5
From 050c3951df2fd2ccb44635d563d5e19948d28df7 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 27 Jun 2011 14:06:34 +0000
Subject: [PATCH 095/101] Upgrading to latest Apache parent POM and the latest
bundle Maven plugin to have the build deploy to repository.a.o
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1140168 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 2 +-
examples/ftpserver-osgi-ftplet-service/pom.xml | 2 +-
examples/ftpserver-osgi-spring-service/pom.xml | 2 +-
ftplet-api/pom.xml | 2 +-
pom.xml | 17 ++---------------
5 files changed, 6 insertions(+), 19 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index 6b43ccb7..d6d83958 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -58,7 +58,7 @@
org.apache.felixmaven-bundle-plugin
- 1.4.1
+ 2.3.4true
diff --git a/examples/ftpserver-osgi-ftplet-service/pom.xml b/examples/ftpserver-osgi-ftplet-service/pom.xml
index b6d292ac..a3fef736 100644
--- a/examples/ftpserver-osgi-ftplet-service/pom.xml
+++ b/examples/ftpserver-osgi-ftplet-service/pom.xml
@@ -46,7 +46,7 @@
org.apache.felixmaven-bundle-plugin
- 1.4.1
+ 2.3.4true
diff --git a/examples/ftpserver-osgi-spring-service/pom.xml b/examples/ftpserver-osgi-spring-service/pom.xml
index a5e58baa..0992bbea 100644
--- a/examples/ftpserver-osgi-spring-service/pom.xml
+++ b/examples/ftpserver-osgi-spring-service/pom.xml
@@ -40,7 +40,7 @@
org.apache.felixmaven-bundle-plugin
- 1.4.1
+ 2.3.4true
diff --git a/ftplet-api/pom.xml b/ftplet-api/pom.xml
index 10387df9..e4d0d5b0 100644
--- a/ftplet-api/pom.xml
+++ b/ftplet-api/pom.xml
@@ -46,7 +46,7 @@
org.apache.felixmaven-bundle-plugin
- 1.4.1
+ 2.3.4true
diff --git a/pom.xml b/pom.xml
index 3fb78684..a2ce7732 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
apacheorg.apache
- 7
+ 94.0.0org.apache.ftpserver
@@ -349,22 +349,9 @@
- release
+ apache-release
-
- maven-gpg-plugin
- 1.0-alpha-4
-
-
- sign-artifacts
- verify
-
- sign
-
-
-
- maven-javadoc-plugin2.5
From 68d84bed29a965cf353ff1466dc0332fdc4db5a6 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Mon, 29 Aug 2011 20:24:14 +0000
Subject: [PATCH 096/101] Reserving passive port might remove an unused port
from freeList, causing starvation of passive ports (FTPSERVER-424)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1162981 13f79535-47bb-0310-9956-ffa450edef68
---
.../main/java/org/apache/ftpserver/impl/PassivePorts.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
index 4d00f126..031b138e 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
@@ -47,7 +47,7 @@ public class PassivePorts {
private static final Integer MAX_PORT_INTEGER = Integer.valueOf(MAX_PORT);
- private List freeList;
+ private Set freeList;
private Set usedList;
@@ -158,7 +158,7 @@ public PassivePorts(Set passivePorts, boolean checkIfBound) {
passivePorts.add(0);
}
- this.freeList = new ArrayList(passivePorts);
+ this.freeList = new HashSet(passivePorts);
this.usedList = new HashSet(passivePorts.size());
this.checkIfBound = checkIfBound;
@@ -215,12 +215,12 @@ public synchronized int reserveNextPort() {
} else if (checkPortUnbound(ret)) {
// Not used by someone else, so lets reserve it and return it
- freeList.remove(i);
+ freeList.remove(ret);
usedList.add(ret);
return ret;
} else {
- freeCopy.remove(i);
+ freeCopy.remove(ret);
// log port unavailable, but left in pool
log.warn("Passive port in use by another process: " + ret);
}
From 1745ea249f8ff89a9c0b9de1b26ede3d61da8edb Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Wed, 2 Nov 2011 08:24:38 +0000
Subject: [PATCH 097/101] Upgrading slf4j
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1196491 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/pom.xml b/pom.xml
index a2ce7732..f66956ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,15 +7,15 @@
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
-
+
http://www.apache.org/licenses/LICENSE-2.0
-
+
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
- under the License. -->
+ under the License. -->
@@ -180,13 +180,13 @@
org.slf4jslf4j-api
- 1.5.2
+ 1.6.4org.slf4jjcl-over-slf4j
- 1.5.2
+ 1.6.4
@@ -195,7 +195,7 @@
junit3.8.2
-
+
commons-netcommons-net
@@ -205,9 +205,9 @@
org.slf4jslf4j-log4j12
- 1.5.2
+ 1.6.4
-
+
log4jlog4j
From 8c10e775f0338bd952cdd0da83b5148ef4384a72 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Tue, 1 May 2012 21:20:29 +0000
Subject: [PATCH 098/101] Fixing CRLF line endings
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1332836 13f79535-47bb-0310-9956-ffa450edef68
---
.../command/impl/listing/package.html | 16 +-
.../ftpserver/command/impl/package.html | 16 +-
.../spring/ListenerBeanDefinitionParser.java | 584 ++++++++---------
.../ftpserver/config/spring/package.html | 16 +-
.../filesystem/nativefs/impl/package.html | 16 +-
.../ftpletcontainer/impl/package.html | 16 +-
.../org/apache/ftpserver/impl/package.html | 14 +-
.../ftpserver/ipfilter/DefaultIpFilter.java | 434 ++++++-------
.../apache/ftpserver/ipfilter/IpFilter.java | 86 +--
.../ftpserver/ipfilter/IpFilterType.java | 116 ++--
.../ftpserver/ipfilter/MinaIpFilter.java | 138 ++--
.../ftpserver/listener/ListenerFactory.java | 600 +++++++++---------
.../ftpserver/listener/nio/package.html | 16 +-
.../ftpserver/message/impl/package.html | 16 +-
.../apache/ftpserver/ssl/impl/package.html | 16 +-
.../ftpserver/config/spring/ftpserver-1.0.xsd | 578 ++++++++---------
.../clienttests/ActiveModeReplyTest.java | 156 ++---
.../ftpserver/clienttests/IpFilterTest.java | 170 ++---
.../clienttests/PasvPortUnavailableTest.java | 164 ++---
.../impl/listing/DirectoryListerTest.java | 202 +++---
.../config/spring/MyCustomListener.java | 222 +++----
.../config/spring/SpringConfigTest.java | 230 +++----
.../ftpserver/ssl/MinaCipherSuitesTest.java | 164 ++---
core/src/test/resources/users.properties | 114 ++--
distribution/LICENSE.springframework.txt | 354 +++++------
distribution/res/conf/users.properties | 74 +--
.../src/main/resources/users.properties | 74 +--
.../example/osgiservice/users.properties | 74 +--
28 files changed, 2338 insertions(+), 2338 deletions(-)
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/package.html b/core/src/main/java/org/apache/ftpserver/command/impl/listing/package.html
index 87346453..4a250c22 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/package.html
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
File listing implementations used by various FTP commands
-
-
+
File listing implementations used by various FTP commands
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/package.html b/core/src/main/java/org/apache/ftpserver/command/impl/package.html
index dc9e0e90..399ab0fd 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/package.html
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
FTP command implementations
-
-
+
FTP command implementations
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
index 3d6f1134..5be20bd8 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/ListenerBeanDefinitionParser.java
@@ -1,292 +1,292 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.config.spring;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import org.apache.ftpserver.DataConnectionConfiguration;
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
-import org.apache.ftpserver.FtpServerConfigurationException;
-import org.apache.ftpserver.ipfilter.DefaultIpFilter;
-import org.apache.ftpserver.ipfilter.IpFilterType;
-import org.apache.ftpserver.listener.ListenerFactory;
-import org.apache.ftpserver.ssl.SslConfiguration;
-import org.apache.ftpserver.ssl.SslConfigurationFactory;
-import org.apache.mina.filter.firewall.Subnet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanDefinitionHolder;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
-import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.util.StringUtils;
-import org.w3c.dom.Element;
-
-/**
- * Parses the FtpServer "nio-listener" element into a Spring bean graph
- *
- * @author Apache MINA Project
- */
-public class ListenerBeanDefinitionParser extends
- AbstractSingleBeanDefinitionParser {
-
- private final Logger LOG = LoggerFactory
- .getLogger(ListenerBeanDefinitionParser.class);
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected Class> getBeanClass(final Element element) {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void doParse(final Element element,
- final ParserContext parserContext,
- final BeanDefinitionBuilder builder) {
-
- BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(ListenerFactory.class);
-
- if (StringUtils.hasText(element.getAttribute("port"))) {
- factoryBuilder.addPropertyValue("port", Integer.parseInt(element
- .getAttribute("port")));
- }
-
- SslConfiguration ssl = parseSsl(element);
- if (ssl != null) {
- factoryBuilder.addPropertyValue("sslConfiguration", ssl);
- }
-
- Element dataConElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "data-connection");
- DataConnectionConfiguration dc = parseDataConnection(dataConElm, ssl);
- factoryBuilder.addPropertyValue("dataConnectionConfiguration", dc);
-
- if (StringUtils.hasText(element.getAttribute("idle-timeout"))) {
- factoryBuilder.addPropertyValue("idleTimeout", SpringUtil.parseInt(
- element, "idle-timeout", 300));
- }
-
- String localAddress = SpringUtil.parseStringFromInetAddress(element,
- "local-address");
- if (localAddress != null) {
- factoryBuilder.addPropertyValue("serverAddress", localAddress);
- }
- factoryBuilder.addPropertyValue("implicitSsl", SpringUtil.parseBoolean(
- element, "implicit-ssl", false));
-
- Element blacklistElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "blacklist");
- if (blacklistElm != null) {
- LOG.warn("Element 'blacklist' is deprecated, and may be removed in a future release. Please use 'ip-filter' instead. ");
- try {
- DefaultIpFilter ipFilter = new DefaultIpFilter(IpFilterType.DENY, blacklistElm.getTextContent());
- factoryBuilder.addPropertyValue("ipFilter", ipFilter);
- }
- catch (UnknownHostException e) {
- throw new IllegalArgumentException("Invalid IP address or subnet in the 'blacklist' element", e);
- }
- }
-
- Element ipFilterElement = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS, "ip-filter");
- if(ipFilterElement != null) {
- if(blacklistElm != null) {
- throw new FtpServerConfigurationException("Element 'ipFilter' may not be used when 'blacklist' element is specified. ");
- }
- String filterType = ipFilterElement.getAttribute("type");
- try {
- DefaultIpFilter ipFilter = new DefaultIpFilter(IpFilterType.parse(filterType), ipFilterElement.getTextContent());
- factoryBuilder.addPropertyValue("ipFilter", ipFilter);
- }
- catch (UnknownHostException e) {
- throw new IllegalArgumentException("Invalid IP address or subnet in the 'ip-filter' element");
- }
- }
-
- BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();
-
- String listenerFactoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);
-
- BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, listenerFactoryName);
- registerBeanDefinition(factoryHolder, parserContext.getRegistry());
-
- // set the factory on the listener bean
- builder.getRawBeanDefinition().setFactoryBeanName(listenerFactoryName);
- builder.getRawBeanDefinition().setFactoryMethodName("createListener");
- }
-
- private SslConfiguration parseSsl(final Element parent) {
- Element sslElm = SpringUtil.getChildElement(parent,
- FtpServerNamespaceHandler.FTPSERVER_NS, "ssl");
-
- if (sslElm != null) {
- SslConfigurationFactory ssl = new SslConfigurationFactory();
-
- Element keyStoreElm = SpringUtil.getChildElement(sslElm,
- FtpServerNamespaceHandler.FTPSERVER_NS, "keystore");
- if (keyStoreElm != null) {
- ssl.setKeystoreFile(SpringUtil.parseFile(keyStoreElm, "file"));
- ssl.setKeystorePassword(SpringUtil.parseString(keyStoreElm,
- "password"));
-
- String type = SpringUtil.parseString(keyStoreElm, "type");
- if (type != null) {
- ssl.setKeystoreType(type);
- }
-
- String keyAlias = SpringUtil.parseString(keyStoreElm,
- "key-alias");
- if (keyAlias != null) {
- ssl.setKeyAlias(keyAlias);
- }
-
- String keyPassword = SpringUtil.parseString(keyStoreElm,
- "key-password");
- if (keyPassword != null) {
- ssl.setKeyPassword(keyPassword);
- }
-
- String algorithm = SpringUtil.parseString(keyStoreElm,
- "algorithm");
- if (algorithm != null) {
- ssl.setKeystoreAlgorithm(algorithm);
- }
- }
-
- Element trustStoreElm = SpringUtil.getChildElement(sslElm,
- FtpServerNamespaceHandler.FTPSERVER_NS, "truststore");
- if (trustStoreElm != null) {
- ssl.setTruststoreFile(SpringUtil.parseFile(trustStoreElm,
- "file"));
- ssl.setTruststorePassword(SpringUtil.parseString(trustStoreElm,
- "password"));
-
- String type = SpringUtil.parseString(trustStoreElm, "type");
- if (type != null) {
- ssl.setTruststoreType(type);
- }
-
- String algorithm = SpringUtil.parseString(trustStoreElm,
- "algorithm");
- if (algorithm != null) {
- ssl.setTruststoreAlgorithm(algorithm);
- }
- }
-
- String clientAuthStr = SpringUtil.parseString(sslElm,
- "client-authentication");
- if (clientAuthStr != null) {
- ssl.setClientAuthentication(clientAuthStr);
- }
-
- String enabledCiphersuites = SpringUtil.parseString(sslElm,
- "enabled-ciphersuites");
- if (enabledCiphersuites != null) {
- ssl.setEnabledCipherSuites(enabledCiphersuites.split(" "));
- }
-
- String protocol = SpringUtil.parseString(sslElm, "protocol");
- if (protocol != null) {
- ssl.setSslProtocol(protocol);
- }
-
- return ssl.createSslConfiguration();
- } else {
- return null;
- }
-
- }
-
- private DataConnectionConfiguration parseDataConnection(
- final Element element,
- final SslConfiguration listenerSslConfiguration) {
- DataConnectionConfigurationFactory dc = new DataConnectionConfigurationFactory();
-
- if (element != null) {
-
- dc.setImplicitSsl(SpringUtil.parseBoolean(element, "implicit-ssl", false));
-
- // data con config element available
- SslConfiguration ssl = parseSsl(element);
-
- if (ssl != null) {
- LOG.debug("SSL configuration found for the data connection");
- dc.setSslConfiguration(ssl);
- }
-
- dc.setIdleTime(SpringUtil.parseInt(element, "idle-timeout", dc.getIdleTime()));
-
- Element activeElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "active");
- if (activeElm != null) {
- dc.setActiveEnabled(SpringUtil.parseBoolean(activeElm, "enabled",
- true));
- dc.setActiveIpCheck(SpringUtil.parseBoolean(activeElm,
- "ip-check", false));
- dc.setActiveLocalPort(SpringUtil.parseInt(activeElm,
- "local-port", 0));
-
- String localAddress = SpringUtil.parseStringFromInetAddress(
- activeElm, "local-address");
- if (localAddress != null) {
- dc.setActiveLocalAddress(localAddress);
- }
- }
-
- Element passiveElm = SpringUtil.getChildElement(element,
- FtpServerNamespaceHandler.FTPSERVER_NS, "passive");
- if (passiveElm != null) {
- String address = SpringUtil.parseStringFromInetAddress(passiveElm,
- "address");
- if (address != null) {
- dc.setPassiveAddress(address);
- }
-
- String externalAddress = SpringUtil.parseStringFromInetAddress(
- passiveElm, "external-address");
- if (externalAddress != null) {
- dc.setPassiveExternalAddress(externalAddress);
- }
-
- String ports = SpringUtil.parseString(passiveElm, "ports");
- if (ports != null) {
- dc.setPassivePorts(ports);
- }
- }
- } else {
- // no data conn config element, do we still have SSL config from the
- // parent?
- if (listenerSslConfiguration != null) {
- LOG
- .debug("SSL configuration found for the listener, falling back for that for the data connection");
- dc.setSslConfiguration(listenerSslConfiguration);
- }
- }
-
- return dc.createDataConnectionConfiguration();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.config.spring;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.apache.ftpserver.DataConnectionConfiguration;
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerConfigurationException;
+import org.apache.ftpserver.ipfilter.DefaultIpFilter;
+import org.apache.ftpserver.ipfilter.IpFilterType;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.ftpserver.ssl.SslConfiguration;
+import org.apache.ftpserver.ssl.SslConfigurationFactory;
+import org.apache.mina.filter.firewall.Subnet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanDefinitionHolder;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.StringUtils;
+import org.w3c.dom.Element;
+
+/**
+ * Parses the FtpServer "nio-listener" element into a Spring bean graph
+ *
+ * @author Apache MINA Project
+ */
+public class ListenerBeanDefinitionParser extends
+ AbstractSingleBeanDefinitionParser {
+
+ private final Logger LOG = LoggerFactory
+ .getLogger(ListenerBeanDefinitionParser.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected Class> getBeanClass(final Element element) {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void doParse(final Element element,
+ final ParserContext parserContext,
+ final BeanDefinitionBuilder builder) {
+
+ BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(ListenerFactory.class);
+
+ if (StringUtils.hasText(element.getAttribute("port"))) {
+ factoryBuilder.addPropertyValue("port", Integer.parseInt(element
+ .getAttribute("port")));
+ }
+
+ SslConfiguration ssl = parseSsl(element);
+ if (ssl != null) {
+ factoryBuilder.addPropertyValue("sslConfiguration", ssl);
+ }
+
+ Element dataConElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "data-connection");
+ DataConnectionConfiguration dc = parseDataConnection(dataConElm, ssl);
+ factoryBuilder.addPropertyValue("dataConnectionConfiguration", dc);
+
+ if (StringUtils.hasText(element.getAttribute("idle-timeout"))) {
+ factoryBuilder.addPropertyValue("idleTimeout", SpringUtil.parseInt(
+ element, "idle-timeout", 300));
+ }
+
+ String localAddress = SpringUtil.parseStringFromInetAddress(element,
+ "local-address");
+ if (localAddress != null) {
+ factoryBuilder.addPropertyValue("serverAddress", localAddress);
+ }
+ factoryBuilder.addPropertyValue("implicitSsl", SpringUtil.parseBoolean(
+ element, "implicit-ssl", false));
+
+ Element blacklistElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "blacklist");
+ if (blacklistElm != null) {
+ LOG.warn("Element 'blacklist' is deprecated, and may be removed in a future release. Please use 'ip-filter' instead. ");
+ try {
+ DefaultIpFilter ipFilter = new DefaultIpFilter(IpFilterType.DENY, blacklistElm.getTextContent());
+ factoryBuilder.addPropertyValue("ipFilter", ipFilter);
+ }
+ catch (UnknownHostException e) {
+ throw new IllegalArgumentException("Invalid IP address or subnet in the 'blacklist' element", e);
+ }
+ }
+
+ Element ipFilterElement = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS, "ip-filter");
+ if(ipFilterElement != null) {
+ if(blacklistElm != null) {
+ throw new FtpServerConfigurationException("Element 'ipFilter' may not be used when 'blacklist' element is specified. ");
+ }
+ String filterType = ipFilterElement.getAttribute("type");
+ try {
+ DefaultIpFilter ipFilter = new DefaultIpFilter(IpFilterType.parse(filterType), ipFilterElement.getTextContent());
+ factoryBuilder.addPropertyValue("ipFilter", ipFilter);
+ }
+ catch (UnknownHostException e) {
+ throw new IllegalArgumentException("Invalid IP address or subnet in the 'ip-filter' element");
+ }
+ }
+
+ BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();
+
+ String listenerFactoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);
+
+ BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, listenerFactoryName);
+ registerBeanDefinition(factoryHolder, parserContext.getRegistry());
+
+ // set the factory on the listener bean
+ builder.getRawBeanDefinition().setFactoryBeanName(listenerFactoryName);
+ builder.getRawBeanDefinition().setFactoryMethodName("createListener");
+ }
+
+ private SslConfiguration parseSsl(final Element parent) {
+ Element sslElm = SpringUtil.getChildElement(parent,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "ssl");
+
+ if (sslElm != null) {
+ SslConfigurationFactory ssl = new SslConfigurationFactory();
+
+ Element keyStoreElm = SpringUtil.getChildElement(sslElm,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "keystore");
+ if (keyStoreElm != null) {
+ ssl.setKeystoreFile(SpringUtil.parseFile(keyStoreElm, "file"));
+ ssl.setKeystorePassword(SpringUtil.parseString(keyStoreElm,
+ "password"));
+
+ String type = SpringUtil.parseString(keyStoreElm, "type");
+ if (type != null) {
+ ssl.setKeystoreType(type);
+ }
+
+ String keyAlias = SpringUtil.parseString(keyStoreElm,
+ "key-alias");
+ if (keyAlias != null) {
+ ssl.setKeyAlias(keyAlias);
+ }
+
+ String keyPassword = SpringUtil.parseString(keyStoreElm,
+ "key-password");
+ if (keyPassword != null) {
+ ssl.setKeyPassword(keyPassword);
+ }
+
+ String algorithm = SpringUtil.parseString(keyStoreElm,
+ "algorithm");
+ if (algorithm != null) {
+ ssl.setKeystoreAlgorithm(algorithm);
+ }
+ }
+
+ Element trustStoreElm = SpringUtil.getChildElement(sslElm,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "truststore");
+ if (trustStoreElm != null) {
+ ssl.setTruststoreFile(SpringUtil.parseFile(trustStoreElm,
+ "file"));
+ ssl.setTruststorePassword(SpringUtil.parseString(trustStoreElm,
+ "password"));
+
+ String type = SpringUtil.parseString(trustStoreElm, "type");
+ if (type != null) {
+ ssl.setTruststoreType(type);
+ }
+
+ String algorithm = SpringUtil.parseString(trustStoreElm,
+ "algorithm");
+ if (algorithm != null) {
+ ssl.setTruststoreAlgorithm(algorithm);
+ }
+ }
+
+ String clientAuthStr = SpringUtil.parseString(sslElm,
+ "client-authentication");
+ if (clientAuthStr != null) {
+ ssl.setClientAuthentication(clientAuthStr);
+ }
+
+ String enabledCiphersuites = SpringUtil.parseString(sslElm,
+ "enabled-ciphersuites");
+ if (enabledCiphersuites != null) {
+ ssl.setEnabledCipherSuites(enabledCiphersuites.split(" "));
+ }
+
+ String protocol = SpringUtil.parseString(sslElm, "protocol");
+ if (protocol != null) {
+ ssl.setSslProtocol(protocol);
+ }
+
+ return ssl.createSslConfiguration();
+ } else {
+ return null;
+ }
+
+ }
+
+ private DataConnectionConfiguration parseDataConnection(
+ final Element element,
+ final SslConfiguration listenerSslConfiguration) {
+ DataConnectionConfigurationFactory dc = new DataConnectionConfigurationFactory();
+
+ if (element != null) {
+
+ dc.setImplicitSsl(SpringUtil.parseBoolean(element, "implicit-ssl", false));
+
+ // data con config element available
+ SslConfiguration ssl = parseSsl(element);
+
+ if (ssl != null) {
+ LOG.debug("SSL configuration found for the data connection");
+ dc.setSslConfiguration(ssl);
+ }
+
+ dc.setIdleTime(SpringUtil.parseInt(element, "idle-timeout", dc.getIdleTime()));
+
+ Element activeElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "active");
+ if (activeElm != null) {
+ dc.setActiveEnabled(SpringUtil.parseBoolean(activeElm, "enabled",
+ true));
+ dc.setActiveIpCheck(SpringUtil.parseBoolean(activeElm,
+ "ip-check", false));
+ dc.setActiveLocalPort(SpringUtil.parseInt(activeElm,
+ "local-port", 0));
+
+ String localAddress = SpringUtil.parseStringFromInetAddress(
+ activeElm, "local-address");
+ if (localAddress != null) {
+ dc.setActiveLocalAddress(localAddress);
+ }
+ }
+
+ Element passiveElm = SpringUtil.getChildElement(element,
+ FtpServerNamespaceHandler.FTPSERVER_NS, "passive");
+ if (passiveElm != null) {
+ String address = SpringUtil.parseStringFromInetAddress(passiveElm,
+ "address");
+ if (address != null) {
+ dc.setPassiveAddress(address);
+ }
+
+ String externalAddress = SpringUtil.parseStringFromInetAddress(
+ passiveElm, "external-address");
+ if (externalAddress != null) {
+ dc.setPassiveExternalAddress(externalAddress);
+ }
+
+ String ports = SpringUtil.parseString(passiveElm, "ports");
+ if (ports != null) {
+ dc.setPassivePorts(ports);
+ }
+ }
+ } else {
+ // no data conn config element, do we still have SSL config from the
+ // parent?
+ if (listenerSslConfiguration != null) {
+ LOG
+ .debug("SSL configuration found for the listener, falling back for that for the data connection");
+ dc.setSslConfiguration(listenerSslConfiguration);
+ }
+ }
+
+ return dc.createDataConnectionConfiguration();
+ }
+
+}
diff --git a/core/src/main/java/org/apache/ftpserver/config/spring/package.html b/core/src/main/java/org/apache/ftpserver/config/spring/package.html
index e31fac25..ca4f67dc 100644
--- a/core/src/main/java/org/apache/ftpserver/config/spring/package.html
+++ b/core/src/main/java/org/apache/ftpserver/config/spring/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
Support classes for Spring based XML configuration
-
-
+
Support classes for Spring based XML configuration
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/package.html b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/package.html
index a9cc7085..e1d20c09 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/package.html
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
Native file system implementation
-
-
+
Native file system implementation
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/package.html b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/package.html
index af5f8f7a..baac85c3 100644
--- a/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/package.html
+++ b/core/src/main/java/org/apache/ftpserver/ftpletcontainer/impl/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
Ftplet container implementation
-
-
+
Ftplet container implementation
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/impl/package.html b/core/src/main/java/org/apache/ftpserver/impl/package.html
index fe172dce..42822ef5 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/package.html
+++ b/core/src/main/java/org/apache/ftpserver/impl/package.html
@@ -14,11 +14,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
-
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java b/core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java
index 0eb55283..ef97b51f 100644
--- a/core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/DefaultIpFilter.java
@@ -1,217 +1,217 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.ipfilter;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-import org.apache.mina.filter.firewall.Subnet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Default implementation of the IpFilter interface, which uses
- * specific IP addresses or ranges of IP addresses that can be blocked or
- * allowed.
- *
- * @author Apache MINA Project
- *
- */
-
-public class DefaultIpFilter extends CopyOnWriteArraySet implements
- IpFilter {
-
- /**
- * Logger
- */
- Logger LOGGER = LoggerFactory.getLogger(DefaultIpFilter.class);
-
- /**
- * Serial version UID
- */
- private static final long serialVersionUID = 4887092372700628783L;
-
- /**
- * filter type
- */
- private IpFilterType type = null;
-
- /**
- * Creates a new instance of DefaultIpFilter.
- *
- * @param type
- * the filter type
- */
- public DefaultIpFilter(IpFilterType type) {
- this(type, new HashSet(0));
- }
-
- /**
- * Creates a new instance of DefaultIpFilter.
- *
- * @param type
- * the filter type
- * @param collection
- * a collection of Subnets to filter out/in.
- */
- public DefaultIpFilter(IpFilterType type,
- Collection extends Subnet> collection) {
- super(collection);
- this.type = type;
- }
-
- /**
- * Creates a new instance of DefaultIpFilter.
- *
- * @param type
- * the filter type
- * @param addresses
- * a comma, space, tab, LF separated list of IP addresses/CIDRs.
- * @throws UnknownHostException
- * propagated
- * @throws NumberFormatException
- * propagated
- */
- public DefaultIpFilter(IpFilterType type, String addresses)
- throws NumberFormatException, UnknownHostException {
- super();
- this.type = type;
- if (addresses != null) {
- String[] tokens = addresses.split("[\\s,]+");
- for (String token : tokens) {
- if (token.trim().length() > 0) {
- add(token);
- }
- }
- }
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(
- "Created DefaultIpFilter of type {} with the subnets {}", type,
- this);
- }
- }
-
- /**
- * Returns the type of this filter.
- *
- * @return the type of this filter.
- */
- public IpFilterType getType() {
- return type;
- }
-
- /**
- * Sets the type of this filter.
- *
- * @param type
- * the type of this filter.
- */
- // TODO should we allow changing the filter type once it is created? I don't
- // think we should.
- public void setType(IpFilterType type) {
- this.type = type;
- }
-
- /**
- * Adds the given string representation of InetAddress or CIDR notation to
- * this filter.
- *
- * @param str
- * the string representation of InetAddress or CIDR notation
- * @return if the given element was added or not. true, if the
- * given element was added to the filter; false, if the
- * element already exists in the filter.
- * @throws NumberFormatException
- * propagated
- * @throws UnknownHostException
- * propagated
- */
- public boolean add(String str) throws NumberFormatException,
- UnknownHostException {
- // This is required so we do not block loopback address if some one adds
- // a string with blanks as the InetAddress class assumes loopback
- // address on blank string.
- if (str.trim().length() < 1) {
- throw new IllegalArgumentException("Invalid IP Address or Subnet: "
- + str);
- }
- String[] tokens = str.split("/");
- if (tokens.length == 2) {
- return add(new Subnet(InetAddress.getByName(tokens[0]),
- Integer.parseInt(tokens[1])));
- }
- else {
- return add(new Subnet(InetAddress.getByName(tokens[0]), 32));
- }
- }
-
- public boolean accept(InetAddress address) {
- switch (type) {
- case ALLOW:
- for (Subnet subnet : this) {
- if (subnet.inSubnet(address)) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(
- "Allowing connection from {} because it matches with the whitelist subnet {}",
- new Object[] { address, subnet });
- }
- return true;
- }
- }
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(
- "Denying connection from {} because it does not match any of the whitelist subnets",
- new Object[] { address });
- }
- return false;
- case DENY:
- if (isEmpty()) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(
- "Allowing connection from {} because blacklist is empty",
- new Object[] { address });
- }
- return true;
- }
- for (Subnet subnet : this) {
- if (subnet.inSubnet(address)) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(
- "Denying connection from {} because it matches with the blacklist subnet {}",
- new Object[] { address, subnet });
- }
- return false;
- }
- }
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(
- "Allowing connection from {} because it does not match any of the blacklist subnets",
- new Object[] { address });
- }
- return true;
- default:
- throw new RuntimeException(
- "Unknown or unimplemented filter type: " + type);
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import org.apache.mina.filter.firewall.Subnet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Default implementation of the IpFilter interface, which uses
+ * specific IP addresses or ranges of IP addresses that can be blocked or
+ * allowed.
+ *
+ * @author Apache MINA Project
+ *
+ */
+
+public class DefaultIpFilter extends CopyOnWriteArraySet implements
+ IpFilter {
+
+ /**
+ * Logger
+ */
+ Logger LOGGER = LoggerFactory.getLogger(DefaultIpFilter.class);
+
+ /**
+ * Serial version UID
+ */
+ private static final long serialVersionUID = 4887092372700628783L;
+
+ /**
+ * filter type
+ */
+ private IpFilterType type = null;
+
+ /**
+ * Creates a new instance of DefaultIpFilter.
+ *
+ * @param type
+ * the filter type
+ */
+ public DefaultIpFilter(IpFilterType type) {
+ this(type, new HashSet(0));
+ }
+
+ /**
+ * Creates a new instance of DefaultIpFilter.
+ *
+ * @param type
+ * the filter type
+ * @param collection
+ * a collection of Subnets to filter out/in.
+ */
+ public DefaultIpFilter(IpFilterType type,
+ Collection extends Subnet> collection) {
+ super(collection);
+ this.type = type;
+ }
+
+ /**
+ * Creates a new instance of DefaultIpFilter.
+ *
+ * @param type
+ * the filter type
+ * @param addresses
+ * a comma, space, tab, LF separated list of IP addresses/CIDRs.
+ * @throws UnknownHostException
+ * propagated
+ * @throws NumberFormatException
+ * propagated
+ */
+ public DefaultIpFilter(IpFilterType type, String addresses)
+ throws NumberFormatException, UnknownHostException {
+ super();
+ this.type = type;
+ if (addresses != null) {
+ String[] tokens = addresses.split("[\\s,]+");
+ for (String token : tokens) {
+ if (token.trim().length() > 0) {
+ add(token);
+ }
+ }
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Created DefaultIpFilter of type {} with the subnets {}", type,
+ this);
+ }
+ }
+
+ /**
+ * Returns the type of this filter.
+ *
+ * @return the type of this filter.
+ */
+ public IpFilterType getType() {
+ return type;
+ }
+
+ /**
+ * Sets the type of this filter.
+ *
+ * @param type
+ * the type of this filter.
+ */
+ // TODO should we allow changing the filter type once it is created? I don't
+ // think we should.
+ public void setType(IpFilterType type) {
+ this.type = type;
+ }
+
+ /**
+ * Adds the given string representation of InetAddress or CIDR notation to
+ * this filter.
+ *
+ * @param str
+ * the string representation of InetAddress or CIDR notation
+ * @return if the given element was added or not. true, if the
+ * given element was added to the filter; false, if the
+ * element already exists in the filter.
+ * @throws NumberFormatException
+ * propagated
+ * @throws UnknownHostException
+ * propagated
+ */
+ public boolean add(String str) throws NumberFormatException,
+ UnknownHostException {
+ // This is required so we do not block loopback address if some one adds
+ // a string with blanks as the InetAddress class assumes loopback
+ // address on blank string.
+ if (str.trim().length() < 1) {
+ throw new IllegalArgumentException("Invalid IP Address or Subnet: "
+ + str);
+ }
+ String[] tokens = str.split("/");
+ if (tokens.length == 2) {
+ return add(new Subnet(InetAddress.getByName(tokens[0]),
+ Integer.parseInt(tokens[1])));
+ }
+ else {
+ return add(new Subnet(InetAddress.getByName(tokens[0]), 32));
+ }
+ }
+
+ public boolean accept(InetAddress address) {
+ switch (type) {
+ case ALLOW:
+ for (Subnet subnet : this) {
+ if (subnet.inSubnet(address)) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Allowing connection from {} because it matches with the whitelist subnet {}",
+ new Object[] { address, subnet });
+ }
+ return true;
+ }
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Denying connection from {} because it does not match any of the whitelist subnets",
+ new Object[] { address });
+ }
+ return false;
+ case DENY:
+ if (isEmpty()) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Allowing connection from {} because blacklist is empty",
+ new Object[] { address });
+ }
+ return true;
+ }
+ for (Subnet subnet : this) {
+ if (subnet.inSubnet(address)) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Denying connection from {} because it matches with the blacklist subnet {}",
+ new Object[] { address, subnet });
+ }
+ return false;
+ }
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
+ "Allowing connection from {} because it does not match any of the blacklist subnets",
+ new Object[] { address });
+ }
+ return true;
+ default:
+ throw new RuntimeException(
+ "Unknown or unimplemented filter type: " + type);
+ }
+ }
+}
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java
index 53b2b534..88cbbb87 100644
--- a/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilter.java
@@ -1,43 +1,43 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.ipfilter;
-
-import java.net.InetAddress;
-
-/**
- * The interface for filtering connections based on the client's IP address.
- *
- * @author Apache MINA Project
- *
- */
-
-public interface IpFilter {
-
- /**
- * Tells whether or not the given IP address is accepted by this filter.
- *
- * @param address
- * the IP address to check
- * @return true, if the given IP address is accepted by this
- * filter; false, otherwise.
- */
- public boolean accept(InetAddress address);
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+import java.net.InetAddress;
+
+/**
+ * The interface for filtering connections based on the client's IP address.
+ *
+ * @author Apache MINA Project
+ *
+ */
+
+public interface IpFilter {
+
+ /**
+ * Tells whether or not the given IP address is accepted by this filter.
+ *
+ * @param address
+ * the IP address to check
+ * @return true, if the given IP address is accepted by this
+ * filter; false, otherwise.
+ */
+ public boolean accept(InetAddress address);
+
+}
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java
index 9538d2e8..569417d8 100644
--- a/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/IpFilterType.java
@@ -1,58 +1,58 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.ipfilter;
-
-/**
- * Defines various types of IP Filters.
- *
- * @author Apache MINA Project
- *
- */
-public enum IpFilterType {
-
- /**
- * filter type that allows a set of predefined IP addresses, also known as a
- * white list.
- */
- ALLOW,
-
- /**
- * filter type that blocks a set of predefined IP addresses, also known as a
- * black list.
- */
- DENY;
-
- /**
- * Parses the given string into its equivalent enum.
- *
- * @param value
- * the string value to parse.
- * @return the equivalent enum
- */
- public static IpFilterType parse(String value) {
- for (IpFilterType type : values()) {
- if (type.name().equalsIgnoreCase(value)) {
- return type;
- }
- }
- throw new IllegalArgumentException("Invalid IpFilterType: " + value);
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+/**
+ * Defines various types of IP Filters.
+ *
+ * @author Apache MINA Project
+ *
+ */
+public enum IpFilterType {
+
+ /**
+ * filter type that allows a set of predefined IP addresses, also known as a
+ * white list.
+ */
+ ALLOW,
+
+ /**
+ * filter type that blocks a set of predefined IP addresses, also known as a
+ * black list.
+ */
+ DENY;
+
+ /**
+ * Parses the given string into its equivalent enum.
+ *
+ * @param value
+ * the string value to parse.
+ * @return the equivalent enum
+ */
+ public static IpFilterType parse(String value) {
+ for (IpFilterType type : values()) {
+ if (type.name().equalsIgnoreCase(value)) {
+ return type;
+ }
+ }
+ throw new IllegalArgumentException("Invalid IpFilterType: " + value);
+ }
+
+}
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java b/core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java
index 77451ccb..1276c084 100644
--- a/core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/MinaIpFilter.java
@@ -1,69 +1,69 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.ipfilter;
-
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
-import org.apache.mina.core.filterchain.IoFilterAdapter;
-import org.apache.mina.core.session.IoSession;
-
-/**
- * An implementation of Mina Filter to filter clients based on the originating
- * IP address.
- *
- * @author Apache MINA Project
- *
- */
-
-public class MinaIpFilter extends IoFilterAdapter {
-
- /**
- * The actual IpFilter used by this filter.
- */
- private IpFilter filter = null;
-
- /**
- * Creates a new instance of MinaIpFilter.
- *
- * @param filter
- * the filter
- */
- public MinaIpFilter(IpFilter filter) {
- this.filter = filter;
- }
-
- @Override
- public void sessionCreated(NextFilter nextFilter, IoSession session) {
- SocketAddress remoteAddress = session.getRemoteAddress();
- if (remoteAddress instanceof InetSocketAddress) {
- InetAddress ipAddress = ((InetSocketAddress) remoteAddress).getAddress();
- // TODO we probably have to check if the InetAddress is a version 4
- // address, or else, the result would probably be unknown.
- if (!filter.accept(ipAddress)) {
- session.close(true);
- }
- else {
- nextFilter.sessionCreated(session);
- }
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ipfilter;
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
+import org.apache.mina.core.filterchain.IoFilterAdapter;
+import org.apache.mina.core.session.IoSession;
+
+/**
+ * An implementation of Mina Filter to filter clients based on the originating
+ * IP address.
+ *
+ * @author Apache MINA Project
+ *
+ */
+
+public class MinaIpFilter extends IoFilterAdapter {
+
+ /**
+ * The actual IpFilter used by this filter.
+ */
+ private IpFilter filter = null;
+
+ /**
+ * Creates a new instance of MinaIpFilter.
+ *
+ * @param filter
+ * the filter
+ */
+ public MinaIpFilter(IpFilter filter) {
+ this.filter = filter;
+ }
+
+ @Override
+ public void sessionCreated(NextFilter nextFilter, IoSession session) {
+ SocketAddress remoteAddress = session.getRemoteAddress();
+ if (remoteAddress instanceof InetSocketAddress) {
+ InetAddress ipAddress = ((InetSocketAddress) remoteAddress).getAddress();
+ // TODO we probably have to check if the InetAddress is a version 4
+ // address, or else, the result would probably be unknown.
+ if (!filter.accept(ipAddress)) {
+ session.close(true);
+ }
+ else {
+ nextFilter.sessionCreated(session);
+ }
+ }
+ }
+}
diff --git a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
index 1a3532b6..a2ea5140 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/ListenerFactory.java
@@ -1,301 +1,301 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.listener;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.List;
-
-import org.apache.ftpserver.DataConnectionConfiguration;
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
-import org.apache.ftpserver.FtpServerConfigurationException;
-import org.apache.ftpserver.ipfilter.IpFilter;
-import org.apache.ftpserver.listener.nio.NioListener;
-import org.apache.ftpserver.ssl.SslConfiguration;
-import org.apache.mina.filter.firewall.Subnet;
-
-/**
- * Factory for listeners. Listeners themselves are immutable and must be
- * created using this factory.
- *
- * @author Apache MINA Project
- */
-public class ListenerFactory {
-
- private String serverAddress;
-
- private int port = 21;
-
- private SslConfiguration ssl;
-
- private boolean implicitSsl = false;
-
- private DataConnectionConfiguration dataConnectionConfig = new DataConnectionConfigurationFactory()
- .createDataConnectionConfiguration();
-
- private int idleTimeout = 300;
-
- private List blockedAddresses;
-
- private List blockedSubnets;
-
- /**
- * The IP filter
- */
- private IpFilter ipFilter = null;
-
- /**
- * Default constructor
- */
- public ListenerFactory() {
- // do nothing
- }
-
- /**
- * Copy constructor, will copy properties from the provided listener.
- * @param listener The listener which properties will be used for this factory
- */
- public ListenerFactory(Listener listener) {
- serverAddress = listener.getServerAddress();
- port = listener.getPort();
- ssl = listener.getSslConfiguration();
- implicitSsl = listener.isImplicitSsl();
- dataConnectionConfig = listener.getDataConnectionConfiguration();
- idleTimeout = listener.getIdleTimeout();
- //TODO remove the next two lines if and when we remove the deprecated methods.
- blockedAddresses = listener.getBlockedAddresses();
- blockedSubnets = listener.getBlockedSubnets();
- this.ipFilter = listener.getIpFilter();
- }
-
- /**
- * Create a listener based on the settings of this factory. The listener is immutable.
- * @return The created listener
- */
- public Listener createListener() {
- try{
- InetAddress.getByName(serverAddress);
- }catch(UnknownHostException e){
- throw new FtpServerConfigurationException("Unknown host",e);
- }
- //Deal with the old style black list and new IP Filter here.
- if(ipFilter != null) {
- if(blockedAddresses != null || blockedSubnets != null) {
- throw new IllegalStateException("Usage of IPFilter in combination with blockedAddesses/subnets is not supported. ");
- }
- }
- if(blockedAddresses != null || blockedSubnets != null) {
- return new NioListener(serverAddress, port, implicitSsl, ssl,
- dataConnectionConfig, idleTimeout, blockedAddresses, blockedSubnets);
- }
- else {
- return new NioListener(serverAddress, port, implicitSsl, ssl,
- dataConnectionConfig, idleTimeout, ipFilter);
- }
- }
-
- /**
- * Is listeners created by this factory in SSL mode automatically or must the client explicitly
- * request to use SSL
- *
- * @return true is listeners created by this factory is automatically in SSL mode, false
- * otherwise
- */
- public boolean isImplicitSsl() {
- return implicitSsl;
- }
-
- /**
- * Should listeners created by this factory be in SSL mode automatically or must the client
- * explicitly request to use SSL
- *
- * @param implicitSsl
- * true is listeners created by this factory should automatically be in SSL mode,
- * false otherwise
- */
- public void setImplicitSsl(boolean implicitSsl) {
- this.implicitSsl = implicitSsl;
- }
-
- /**
- * Get the port on which listeners created by this factory is waiting for requests.
- *
- * @return The port
- */
- public int getPort() {
- return port;
- }
-
- /**
- * Set the port on which listeners created by this factory will accept requests. Or set to 0
- * (zero) is the port should be automatically assigned
- *
- * @param port
- * The port to use.
- */
- public void setPort(int port) {
- this.port = port;
- }
-
- /**
- * Get the {@link InetAddress} used for binding the local socket. Defaults
- * to null, that is, the server binds to all available network interfaces
- *
- * @return The local socket {@link InetAddress}, if set
- */
- public String getServerAddress() {
- return serverAddress;
- }
-
- /**
- * Set the {@link InetAddress} used for binding the local socket. Defaults
- * to null, that is, the server binds to all available network interfaces
- *
- * @param serverAddress
- * The local socket {@link InetAddress}
- */
- public void setServerAddress(String serverAddress) {
- this.serverAddress = serverAddress;
- }
-
- /**
- * Get the {@link SslConfiguration} used for listeners created by this factory
- *
- * @return The {@link SslConfiguration}
- */
- public SslConfiguration getSslConfiguration() {
- return ssl;
- }
-
- /**
- * Set the {@link SslConfiguration} to use by listeners created by this factory
- * @param ssl The {@link SslConfiguration}
- */
- public void setSslConfiguration(SslConfiguration ssl) {
- this.ssl = ssl;
- }
-
- /**
- * Get configuration for data connections made within listeners created by this factory
- *
- * @return The data connection configuration
- */
- public DataConnectionConfiguration getDataConnectionConfiguration() {
- return dataConnectionConfig;
- }
-
- /**
- * Set configuration for data connections made within listeners created by this factory
- *
- * @param dataConnectionConfig
- * The data connection configuration
- */
- public void setDataConnectionConfiguration(
- DataConnectionConfiguration dataConnectionConfig) {
- this.dataConnectionConfig = dataConnectionConfig;
- }
-
- /**
- * Get the number of seconds during which no network activity
- * is allowed before a session is closed due to inactivity.
- * @return The idle time out
- */
- public int getIdleTimeout() {
- return idleTimeout;
- }
-
- /**
- * Set the number of seconds during which no network activity
- * is allowed before a session is closed due to inactivity.
- *
- * @param idleTimeout The idle timeout in seconds
- */
- public void setIdleTimeout(int idleTimeout) {
- this.idleTimeout = idleTimeout;
- }
-
- /**
- * @deprecated Replaced by the IpFilter.
- * Retrieves the {@link InetAddress} for which listeners created by this factory blocks
- * connections
- *
- * @return The list of {@link InetAddress}es
- */
- @Deprecated
- public List getBlockedAddresses() {
- return blockedAddresses;
- }
-
- /**
- * @deprecated Replaced by the IpFilter.
- * Sets the {@link InetAddress} that listeners created by this factory will block from
- * connecting
- *
- * @param blockedAddresses
- * The list of {@link InetAddress}es
- */
- @Deprecated
- public void setBlockedAddresses(List blockedAddresses) {
- this.blockedAddresses = blockedAddresses;
- }
-
- /**
- * @deprecated Replaced by the IpFilter.
- * Retrives the {@link Subnet}s for which listeners created by this factory blocks connections
- *
- * @return The list of {@link Subnet}s
- */
- @Deprecated
- public List getBlockedSubnets() {
- return blockedSubnets;
- }
-
- /**
- * @deprecated Replaced by the IpFilter.
- * Sets the {@link Subnet}s that listeners created by this factory will block from connecting
- * @param blockedSubnets
- * The list of {@link Subnet}s
- * @param blockedAddresses
- */
- @Deprecated
- public void setBlockedSubnets(List blockedSubnets) {
- this.blockedSubnets = blockedSubnets;
- }
-
- /**
- * Returns the currently configured IP filter, if any.
- *
- * @return the currently configured IP filter, if any. Returns
- * null, if no IP filter is configured.
- */
- public IpFilter getIpFilter() {
- return ipFilter;
- }
-
- /**
- * Sets the IP filter to the given filter.
- *
- * @param ipFilter
- * the IP filter.
- */
- public void setIpFilter(IpFilter ipFilter) {
- this.ipFilter = ipFilter;
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.listener;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.List;
+
+import org.apache.ftpserver.DataConnectionConfiguration;
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerConfigurationException;
+import org.apache.ftpserver.ipfilter.IpFilter;
+import org.apache.ftpserver.listener.nio.NioListener;
+import org.apache.ftpserver.ssl.SslConfiguration;
+import org.apache.mina.filter.firewall.Subnet;
+
+/**
+ * Factory for listeners. Listeners themselves are immutable and must be
+ * created using this factory.
+ *
+ * @author Apache MINA Project
+ */
+public class ListenerFactory {
+
+ private String serverAddress;
+
+ private int port = 21;
+
+ private SslConfiguration ssl;
+
+ private boolean implicitSsl = false;
+
+ private DataConnectionConfiguration dataConnectionConfig = new DataConnectionConfigurationFactory()
+ .createDataConnectionConfiguration();
+
+ private int idleTimeout = 300;
+
+ private List blockedAddresses;
+
+ private List blockedSubnets;
+
+ /**
+ * The IP filter
+ */
+ private IpFilter ipFilter = null;
+
+ /**
+ * Default constructor
+ */
+ public ListenerFactory() {
+ // do nothing
+ }
+
+ /**
+ * Copy constructor, will copy properties from the provided listener.
+ * @param listener The listener which properties will be used for this factory
+ */
+ public ListenerFactory(Listener listener) {
+ serverAddress = listener.getServerAddress();
+ port = listener.getPort();
+ ssl = listener.getSslConfiguration();
+ implicitSsl = listener.isImplicitSsl();
+ dataConnectionConfig = listener.getDataConnectionConfiguration();
+ idleTimeout = listener.getIdleTimeout();
+ //TODO remove the next two lines if and when we remove the deprecated methods.
+ blockedAddresses = listener.getBlockedAddresses();
+ blockedSubnets = listener.getBlockedSubnets();
+ this.ipFilter = listener.getIpFilter();
+ }
+
+ /**
+ * Create a listener based on the settings of this factory. The listener is immutable.
+ * @return The created listener
+ */
+ public Listener createListener() {
+ try{
+ InetAddress.getByName(serverAddress);
+ }catch(UnknownHostException e){
+ throw new FtpServerConfigurationException("Unknown host",e);
+ }
+ //Deal with the old style black list and new IP Filter here.
+ if(ipFilter != null) {
+ if(blockedAddresses != null || blockedSubnets != null) {
+ throw new IllegalStateException("Usage of IPFilter in combination with blockedAddesses/subnets is not supported. ");
+ }
+ }
+ if(blockedAddresses != null || blockedSubnets != null) {
+ return new NioListener(serverAddress, port, implicitSsl, ssl,
+ dataConnectionConfig, idleTimeout, blockedAddresses, blockedSubnets);
+ }
+ else {
+ return new NioListener(serverAddress, port, implicitSsl, ssl,
+ dataConnectionConfig, idleTimeout, ipFilter);
+ }
+ }
+
+ /**
+ * Is listeners created by this factory in SSL mode automatically or must the client explicitly
+ * request to use SSL
+ *
+ * @return true is listeners created by this factory is automatically in SSL mode, false
+ * otherwise
+ */
+ public boolean isImplicitSsl() {
+ return implicitSsl;
+ }
+
+ /**
+ * Should listeners created by this factory be in SSL mode automatically or must the client
+ * explicitly request to use SSL
+ *
+ * @param implicitSsl
+ * true is listeners created by this factory should automatically be in SSL mode,
+ * false otherwise
+ */
+ public void setImplicitSsl(boolean implicitSsl) {
+ this.implicitSsl = implicitSsl;
+ }
+
+ /**
+ * Get the port on which listeners created by this factory is waiting for requests.
+ *
+ * @return The port
+ */
+ public int getPort() {
+ return port;
+ }
+
+ /**
+ * Set the port on which listeners created by this factory will accept requests. Or set to 0
+ * (zero) is the port should be automatically assigned
+ *
+ * @param port
+ * The port to use.
+ */
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ /**
+ * Get the {@link InetAddress} used for binding the local socket. Defaults
+ * to null, that is, the server binds to all available network interfaces
+ *
+ * @return The local socket {@link InetAddress}, if set
+ */
+ public String getServerAddress() {
+ return serverAddress;
+ }
+
+ /**
+ * Set the {@link InetAddress} used for binding the local socket. Defaults
+ * to null, that is, the server binds to all available network interfaces
+ *
+ * @param serverAddress
+ * The local socket {@link InetAddress}
+ */
+ public void setServerAddress(String serverAddress) {
+ this.serverAddress = serverAddress;
+ }
+
+ /**
+ * Get the {@link SslConfiguration} used for listeners created by this factory
+ *
+ * @return The {@link SslConfiguration}
+ */
+ public SslConfiguration getSslConfiguration() {
+ return ssl;
+ }
+
+ /**
+ * Set the {@link SslConfiguration} to use by listeners created by this factory
+ * @param ssl The {@link SslConfiguration}
+ */
+ public void setSslConfiguration(SslConfiguration ssl) {
+ this.ssl = ssl;
+ }
+
+ /**
+ * Get configuration for data connections made within listeners created by this factory
+ *
+ * @return The data connection configuration
+ */
+ public DataConnectionConfiguration getDataConnectionConfiguration() {
+ return dataConnectionConfig;
+ }
+
+ /**
+ * Set configuration for data connections made within listeners created by this factory
+ *
+ * @param dataConnectionConfig
+ * The data connection configuration
+ */
+ public void setDataConnectionConfiguration(
+ DataConnectionConfiguration dataConnectionConfig) {
+ this.dataConnectionConfig = dataConnectionConfig;
+ }
+
+ /**
+ * Get the number of seconds during which no network activity
+ * is allowed before a session is closed due to inactivity.
+ * @return The idle time out
+ */
+ public int getIdleTimeout() {
+ return idleTimeout;
+ }
+
+ /**
+ * Set the number of seconds during which no network activity
+ * is allowed before a session is closed due to inactivity.
+ *
+ * @param idleTimeout The idle timeout in seconds
+ */
+ public void setIdleTimeout(int idleTimeout) {
+ this.idleTimeout = idleTimeout;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Retrieves the {@link InetAddress} for which listeners created by this factory blocks
+ * connections
+ *
+ * @return The list of {@link InetAddress}es
+ */
+ @Deprecated
+ public List getBlockedAddresses() {
+ return blockedAddresses;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Sets the {@link InetAddress} that listeners created by this factory will block from
+ * connecting
+ *
+ * @param blockedAddresses
+ * The list of {@link InetAddress}es
+ */
+ @Deprecated
+ public void setBlockedAddresses(List blockedAddresses) {
+ this.blockedAddresses = blockedAddresses;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Retrives the {@link Subnet}s for which listeners created by this factory blocks connections
+ *
+ * @return The list of {@link Subnet}s
+ */
+ @Deprecated
+ public List getBlockedSubnets() {
+ return blockedSubnets;
+ }
+
+ /**
+ * @deprecated Replaced by the IpFilter.
+ * Sets the {@link Subnet}s that listeners created by this factory will block from connecting
+ * @param blockedSubnets
+ * The list of {@link Subnet}s
+ * @param blockedAddresses
+ */
+ @Deprecated
+ public void setBlockedSubnets(List blockedSubnets) {
+ this.blockedSubnets = blockedSubnets;
+ }
+
+ /**
+ * Returns the currently configured IP filter, if any.
+ *
+ * @return the currently configured IP filter, if any. Returns
+ * null, if no IP filter is configured.
+ */
+ public IpFilter getIpFilter() {
+ return ipFilter;
+ }
+
+ /**
+ * Sets the IP filter to the given filter.
+ *
+ * @param ipFilter
+ * the IP filter.
+ */
+ public void setIpFilter(IpFilter ipFilter) {
+ this.ipFilter = ipFilter;
+ }
}
\ No newline at end of file
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/package.html b/core/src/main/java/org/apache/ftpserver/listener/nio/package.html
index 95f1bfd0..324c7294 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/package.html
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
NIO based listener
-
-
+
NIO based listener
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/message/impl/package.html b/core/src/main/java/org/apache/ftpserver/message/impl/package.html
index 2e2d7a0e..ce5c9017 100644
--- a/core/src/main/java/org/apache/ftpserver/message/impl/package.html
+++ b/core/src/main/java/org/apache/ftpserver/message/impl/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
Message resource implementation
-
-
+
Message resource implementation
+
+
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/package.html b/core/src/main/java/org/apache/ftpserver/ssl/impl/package.html
index 309251ec..9db0d2b7 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/package.html
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/package.html
@@ -14,12 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-
-
+
+
+
+
+
Internal classes, do not use directly!
-
SSL support implementation
-
-
+
SSL support implementation
+
+
diff --git a/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd b/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
index be66d55a..ca735529 100644
--- a/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
+++ b/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
@@ -1,290 +1,290 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
index 4530320b..0fae2549 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/ActiveModeReplyTest.java
@@ -1,78 +1,78 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.clienttests;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.commons.net.ftp.FTPClient;
-import org.apache.commons.net.ftp.FTPClientConfig;
-import org.apache.ftpserver.test.TestUtil;
-
-/**
-*
-* @author Apache MINA Project
-*
-*/
-public class ActiveModeReplyTest extends ClientTestTemplate {
- private static final File TEST_TMP_DIR = new File("test-tmp");
-
- private static final File TEST_FILE = new File(ROOT_DIR, "test.txt");
-
- private static final File TEST_FILE1 = new File(TEST_TMP_DIR, "test1.txt");
-
- private static byte[] testData;
-
- protected void setUp() throws Exception {
- super.setUp();
-
- TEST_FILE1.createNewFile();
- assertTrue(TEST_FILE1.exists());
-
- testData = ("TESTDATA").getBytes("UTF-8");
- TestUtil.writeDataToFile(TEST_FILE, testData);
- assertTrue(TEST_FILE.exists());
-
- FTPClientConfig config = new FTPClientConfig("UNIX");
- client.configure(config);
-
- client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
- }
-
- public void testStoreInActiveModeIfNotAllowed() throws Exception {
- assertTrue(client.getDataConnectionMode() == FTPClient.ACTIVE_LOCAL_DATA_CONNECTION_MODE);
-
- sendCommand("APPE " + TEST_FILE1.getAbsolutePath());
- sendCommand("LIST");
- sendCommand("MLSD");
- sendCommand("NLST");
- sendCommand("RETR " + TEST_FILE.getName());
- sendCommand("STOR " + TEST_FILE1.getAbsolutePath());
- sendCommand("STOU");
- }
-
- private void sendCommand(final String command) throws IOException {
- final int returnCode = client.sendCommand(command);
- assertEquals(503, returnCode);
- assertEquals("503 PORT or PASV must be issued first", client
- .getReplyString().trim());
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPClientConfig;
+import org.apache.ftpserver.test.TestUtil;
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class ActiveModeReplyTest extends ClientTestTemplate {
+ private static final File TEST_TMP_DIR = new File("test-tmp");
+
+ private static final File TEST_FILE = new File(ROOT_DIR, "test.txt");
+
+ private static final File TEST_FILE1 = new File(TEST_TMP_DIR, "test1.txt");
+
+ private static byte[] testData;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ TEST_FILE1.createNewFile();
+ assertTrue(TEST_FILE1.exists());
+
+ testData = ("TESTDATA").getBytes("UTF-8");
+ TestUtil.writeDataToFile(TEST_FILE, testData);
+ assertTrue(TEST_FILE.exists());
+
+ FTPClientConfig config = new FTPClientConfig("UNIX");
+ client.configure(config);
+
+ client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
+ }
+
+ public void testStoreInActiveModeIfNotAllowed() throws Exception {
+ assertTrue(client.getDataConnectionMode() == FTPClient.ACTIVE_LOCAL_DATA_CONNECTION_MODE);
+
+ sendCommand("APPE " + TEST_FILE1.getAbsolutePath());
+ sendCommand("LIST");
+ sendCommand("MLSD");
+ sendCommand("NLST");
+ sendCommand("RETR " + TEST_FILE.getName());
+ sendCommand("STOR " + TEST_FILE1.getAbsolutePath());
+ sendCommand("STOU");
+ }
+
+ private void sendCommand(final String command) throws IOException {
+ final int returnCode = client.sendCommand(command);
+ assertEquals(503, returnCode);
+ assertEquals("503 PORT or PASV must be issued first", client
+ .getReplyString().trim());
+ }
+
+}
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java
index 6d339ef1..3f3c02cd 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/IpFilterTest.java
@@ -1,85 +1,85 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.clienttests;
-
-import java.net.InetAddress;
-
-import org.apache.commons.net.ftp.FTPConnectionClosedException;
-import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.ipfilter.DefaultIpFilter;
-import org.apache.ftpserver.ipfilter.IpFilterType;
-import org.apache.ftpserver.listener.ListenerFactory;
-import org.apache.mina.filter.firewall.Subnet;
-import org.springframework.context.annotation.FilterType;
-
-/**
-*
-* @author Apache MINA Project
-*
-*/
-public class IpFilterTest extends ClientTestTemplate {
-
- private DefaultIpFilter filter = new DefaultIpFilter(IpFilterType.DENY);
-
- protected FtpServerFactory createServer() throws Exception {
- FtpServerFactory server = super.createServer();
-
- ListenerFactory factory = new ListenerFactory(server.getListener("default"));
-
- factory.setIpFilter(filter);
- server.addListener("default", factory.createListener());
-
- return server;
- }
-
- protected boolean isConnectClient() {
- return false;
- }
-
- public void testDenyBlackList() throws Exception {
- filter.clear();
- filter.setType(IpFilterType.DENY);
- filter.add(new Subnet(InetAddress.getByName("localhost"), 32));
- try {
- client.connect("localhost", getListenerPort());
- fail("Must throw");
- } catch (FTPConnectionClosedException e) {
- // OK
- }
- }
-
- public void testDenyEmptyWhiteList() throws Exception {
- filter.clear();
- filter.setType(IpFilterType.ALLOW);
- try {
- client.connect("localhost", getListenerPort());
- fail("Must throw");
- } catch (FTPConnectionClosedException e) {
- // OK
- }
- }
-
- public void testWhiteList() throws Exception {
- filter.clear();
- filter.setType(IpFilterType.ALLOW);
- filter.add(new Subnet(InetAddress.getByName("localhost"), 32));
- client.connect("localhost", getListenerPort());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.net.InetAddress;
+
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.ipfilter.DefaultIpFilter;
+import org.apache.ftpserver.ipfilter.IpFilterType;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.mina.filter.firewall.Subnet;
+import org.springframework.context.annotation.FilterType;
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class IpFilterTest extends ClientTestTemplate {
+
+ private DefaultIpFilter filter = new DefaultIpFilter(IpFilterType.DENY);
+
+ protected FtpServerFactory createServer() throws Exception {
+ FtpServerFactory server = super.createServer();
+
+ ListenerFactory factory = new ListenerFactory(server.getListener("default"));
+
+ factory.setIpFilter(filter);
+ server.addListener("default", factory.createListener());
+
+ return server;
+ }
+
+ protected boolean isConnectClient() {
+ return false;
+ }
+
+ public void testDenyBlackList() throws Exception {
+ filter.clear();
+ filter.setType(IpFilterType.DENY);
+ filter.add(new Subnet(InetAddress.getByName("localhost"), 32));
+ try {
+ client.connect("localhost", getListenerPort());
+ fail("Must throw");
+ } catch (FTPConnectionClosedException e) {
+ // OK
+ }
+ }
+
+ public void testDenyEmptyWhiteList() throws Exception {
+ filter.clear();
+ filter.setType(IpFilterType.ALLOW);
+ try {
+ client.connect("localhost", getListenerPort());
+ fail("Must throw");
+ } catch (FTPConnectionClosedException e) {
+ // OK
+ }
+ }
+
+ public void testWhiteList() throws Exception {
+ filter.clear();
+ filter.setType(IpFilterType.ALLOW);
+ filter.add(new Subnet(InetAddress.getByName("localhost"), 32));
+ client.connect("localhost", getListenerPort());
+ }
+}
diff --git a/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java b/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
index f0146983..61c535dc 100644
--- a/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
+++ b/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
@@ -1,82 +1,82 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.clienttests;
-
-import java.net.ServerSocket;
-
-import org.apache.ftpserver.DataConnectionConfigurationFactory;
-import org.apache.ftpserver.FtpServerFactory;
-import org.apache.ftpserver.listener.ListenerFactory;
-import org.apache.ftpserver.test.TestUtil;
-import org.apache.commons.net.ftp.FTPClient;
-import org.apache.commons.net.ftp.FTPConnectionClosedException;
-
-
-/**
-*
-* @author Apache MINA Project
-*
-*/
-public class PasvPortUnavailableTest extends ClientTestTemplate {
-
- private int passivePort;
-
- @Override
- protected FtpServerFactory createServer() throws Exception {
- FtpServerFactory server = super.createServer();
-
- ListenerFactory listenerFactory = new ListenerFactory(server
- .getListener("default"));
-
- DataConnectionConfigurationFactory dccFactory = new DataConnectionConfigurationFactory();
-
- passivePort = TestUtil.findFreePort(12444);
-
- dccFactory.setPassivePorts(String.valueOf(passivePort));
-
- listenerFactory.setDataConnectionConfiguration(dccFactory
- .createDataConnectionConfiguration());
-
- server.addListener("default", listenerFactory.createListener());
-
- return server;
- }
-
- public void testPasvPortUnavailable() throws Exception {
- FTPClient[] clients = new FTPClient[3];
- for(int i = 0; i < 3; i ++) {
- clients[i] = createFTPClient();
- clients[i] .connect("localhost", getListenerPort());
- clients[i].login(ADMIN_USERNAME, ADMIN_PASSWORD);
- clients[i].pasv();
- if(i < 1) {
- assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("227"));
- }
- else {
- assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("425"));
- }
- }
- for(int i = 0; i < 3; i ++) {
- if(clients[i] != null) {
- clients[i].disconnect();
- }
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.net.ServerSocket;
+
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.ftpserver.test.TestUtil;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class PasvPortUnavailableTest extends ClientTestTemplate {
+
+ private int passivePort;
+
+ @Override
+ protected FtpServerFactory createServer() throws Exception {
+ FtpServerFactory server = super.createServer();
+
+ ListenerFactory listenerFactory = new ListenerFactory(server
+ .getListener("default"));
+
+ DataConnectionConfigurationFactory dccFactory = new DataConnectionConfigurationFactory();
+
+ passivePort = TestUtil.findFreePort(12444);
+
+ dccFactory.setPassivePorts(String.valueOf(passivePort));
+
+ listenerFactory.setDataConnectionConfiguration(dccFactory
+ .createDataConnectionConfiguration());
+
+ server.addListener("default", listenerFactory.createListener());
+
+ return server;
+ }
+
+ public void testPasvPortUnavailable() throws Exception {
+ FTPClient[] clients = new FTPClient[3];
+ for(int i = 0; i < 3; i ++) {
+ clients[i] = createFTPClient();
+ clients[i] .connect("localhost", getListenerPort());
+ clients[i].login(ADMIN_USERNAME, ADMIN_PASSWORD);
+ clients[i].pasv();
+ if(i < 1) {
+ assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("227"));
+ }
+ else {
+ assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("425"));
+ }
+ }
+ for(int i = 0; i < 3; i ++) {
+ if(clients[i] != null) {
+ clients[i].disconnect();
+ }
+ }
+ }
+}
diff --git a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
index 56c3a4f1..dfd82c6e 100644
--- a/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
+++ b/core/src/test/java/org/apache/ftpserver/commands/impl/listing/DirectoryListerTest.java
@@ -1,102 +1,102 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.commands.impl.listing;
-
-import java.io.File;
-
-import junit.framework.TestCase;
-
-import org.apache.ftpserver.command.impl.listing.DirectoryLister;
-import org.apache.ftpserver.command.impl.listing.FileFormater;
-import org.apache.ftpserver.command.impl.listing.ListArgument;
-import org.apache.ftpserver.command.impl.listing.NLSTFileFormater;
-import org.apache.ftpserver.filesystem.nativefs.impl.NativeFileSystemView;
-import org.apache.ftpserver.ftplet.FileSystemView;
-import org.apache.ftpserver.test.TestUtil;
-import org.apache.ftpserver.usermanager.impl.BaseUser;
-import org.apache.ftpserver.util.IoUtils;
-
-/**
-*
-* @author Apache MINA Project
-*
-*/
-public class DirectoryListerTest extends TestCase {
- private static final File TEST_TMP_DIR = new File("test-tmp");
-
- protected static final File ROOT_DIR = new File(TEST_TMP_DIR, "ftproot");
-
- private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
-
- private static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
-
- private static final File TEST_DIR2 = new File(ROOT_DIR, "dir2");
-
- private static final File TEST_FILE1_IN_DIR1 = new File(TEST_DIR1,
- "test3.txt");
-
- private static final File TEST_FILE2_IN_DIR1 = new File(TEST_DIR1,
- "test4.txt");
-
- private static final File TEST_DIR_IN_DIR1 = new File(TEST_DIR1, "dir3");
-
- private static final byte[] TEST_DATA = "TESTDATA".getBytes();
-
- private DirectoryLister directoryLister;
-
- private FileSystemView fileSystemView;
-
- protected void setUp() throws Exception {
- BaseUser baseUser = new BaseUser();
- baseUser.setHomeDirectory(ROOT_DIR.getAbsolutePath());
- fileSystemView = new NativeFileSystemView(baseUser) {
- };
- directoryLister = new DirectoryLister();
-
- assertTrue(ROOT_DIR.mkdirs());
- assertTrue(TEST_DIR1.mkdirs());
- assertTrue(TEST_DIR2.mkdirs());
- TestUtil.writeDataToFile(TEST_FILE1, TEST_DATA);
- TestUtil.writeDataToFile(TEST_FILE1_IN_DIR1, TEST_DATA);
- TEST_FILE2_IN_DIR1.createNewFile();
- assertTrue(TEST_DIR_IN_DIR1.mkdir());
- }
-
- public void testListFiles() throws Exception {
- ListArgument arg = new ListArgument(TEST_DIR1.getName(), null, null);
- FileFormater formater = new NLSTFileFormater();
-
- String actual = directoryLister
- .listFiles(arg, fileSystemView, formater);
-
- assertEquals("dir3\r\ntest3.txt\r\ntest4.txt\r\n", actual);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see junit.framework.TestCase#tearDown()
- */
- protected void tearDown() throws Exception {
- if (TEST_TMP_DIR.exists()) {
- IoUtils.delete(TEST_TMP_DIR);
- }
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.commands.impl.listing;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.command.impl.listing.DirectoryLister;
+import org.apache.ftpserver.command.impl.listing.FileFormater;
+import org.apache.ftpserver.command.impl.listing.ListArgument;
+import org.apache.ftpserver.command.impl.listing.NLSTFileFormater;
+import org.apache.ftpserver.filesystem.nativefs.impl.NativeFileSystemView;
+import org.apache.ftpserver.ftplet.FileSystemView;
+import org.apache.ftpserver.test.TestUtil;
+import org.apache.ftpserver.usermanager.impl.BaseUser;
+import org.apache.ftpserver.util.IoUtils;
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class DirectoryListerTest extends TestCase {
+ private static final File TEST_TMP_DIR = new File("test-tmp");
+
+ protected static final File ROOT_DIR = new File(TEST_TMP_DIR, "ftproot");
+
+ private static final File TEST_FILE1 = new File(ROOT_DIR, "test1.txt");
+
+ private static final File TEST_DIR1 = new File(ROOT_DIR, "dir1");
+
+ private static final File TEST_DIR2 = new File(ROOT_DIR, "dir2");
+
+ private static final File TEST_FILE1_IN_DIR1 = new File(TEST_DIR1,
+ "test3.txt");
+
+ private static final File TEST_FILE2_IN_DIR1 = new File(TEST_DIR1,
+ "test4.txt");
+
+ private static final File TEST_DIR_IN_DIR1 = new File(TEST_DIR1, "dir3");
+
+ private static final byte[] TEST_DATA = "TESTDATA".getBytes();
+
+ private DirectoryLister directoryLister;
+
+ private FileSystemView fileSystemView;
+
+ protected void setUp() throws Exception {
+ BaseUser baseUser = new BaseUser();
+ baseUser.setHomeDirectory(ROOT_DIR.getAbsolutePath());
+ fileSystemView = new NativeFileSystemView(baseUser) {
+ };
+ directoryLister = new DirectoryLister();
+
+ assertTrue(ROOT_DIR.mkdirs());
+ assertTrue(TEST_DIR1.mkdirs());
+ assertTrue(TEST_DIR2.mkdirs());
+ TestUtil.writeDataToFile(TEST_FILE1, TEST_DATA);
+ TestUtil.writeDataToFile(TEST_FILE1_IN_DIR1, TEST_DATA);
+ TEST_FILE2_IN_DIR1.createNewFile();
+ assertTrue(TEST_DIR_IN_DIR1.mkdir());
+ }
+
+ public void testListFiles() throws Exception {
+ ListArgument arg = new ListArgument(TEST_DIR1.getName(), null, null);
+ FileFormater formater = new NLSTFileFormater();
+
+ String actual = directoryLister
+ .listFiles(arg, fileSystemView, formater);
+
+ assertEquals("dir3\r\ntest3.txt\r\ntest4.txt\r\n", actual);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see junit.framework.TestCase#tearDown()
+ */
+ protected void tearDown() throws Exception {
+ if (TEST_TMP_DIR.exists()) {
+ IoUtils.delete(TEST_TMP_DIR);
+ }
+ }
}
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
index 040ac055..8c515d39 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
@@ -1,111 +1,111 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.config.spring;
-
-import java.net.InetAddress;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.ftpserver.DataConnectionConfiguration;
-import org.apache.ftpserver.impl.FtpIoSession;
-import org.apache.ftpserver.impl.FtpServerContext;
-import org.apache.ftpserver.ipfilter.IpFilter;
-import org.apache.ftpserver.listener.Listener;
-import org.apache.ftpserver.ssl.SslConfiguration;
-import org.apache.mina.filter.firewall.Subnet;
-
-/**
- * Used for testing creation of custom listeners from Spring config
- *
- * @author Apache MINA Project *
- */
-public class MyCustomListener implements Listener {
-
- private int port;
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public Set getActiveSessions() {
- return null;
- }
-
- public DataConnectionConfiguration getDataConnectionConfiguration() {
- return null;
- }
-
- public int getIdleTimeout() {
- return 0;
- }
-
- public int getPort() {
- return port;
- }
-
- public String getServerAddress() {
- return null;
- }
-
- public SslConfiguration getSslConfiguration() {
- return null;
- }
-
- public boolean isImplicitSsl() {
- return false;
- }
-
- public boolean isStopped() {
- return false;
- }
-
- public boolean isSuspended() {
- return false;
- }
-
- public void resume() {
-
- }
-
- public void start(FtpServerContext serverContext) {
-
- }
-
- public void stop() {
-
- }
-
- public void suspend() {
-
- }
-
- public List getBlockedAddresses() {
- return null;
- }
-
- public List getBlockedSubnets() {
- return null;
- }
-
- public IpFilter getIpFilter() {
- return null;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.config.spring;
+
+import java.net.InetAddress;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.ftpserver.DataConnectionConfiguration;
+import org.apache.ftpserver.impl.FtpIoSession;
+import org.apache.ftpserver.impl.FtpServerContext;
+import org.apache.ftpserver.ipfilter.IpFilter;
+import org.apache.ftpserver.listener.Listener;
+import org.apache.ftpserver.ssl.SslConfiguration;
+import org.apache.mina.filter.firewall.Subnet;
+
+/**
+ * Used for testing creation of custom listeners from Spring config
+ *
+ * @author Apache MINA Project *
+ */
+public class MyCustomListener implements Listener {
+
+ private int port;
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public Set getActiveSessions() {
+ return null;
+ }
+
+ public DataConnectionConfiguration getDataConnectionConfiguration() {
+ return null;
+ }
+
+ public int getIdleTimeout() {
+ return 0;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public String getServerAddress() {
+ return null;
+ }
+
+ public SslConfiguration getSslConfiguration() {
+ return null;
+ }
+
+ public boolean isImplicitSsl() {
+ return false;
+ }
+
+ public boolean isStopped() {
+ return false;
+ }
+
+ public boolean isSuspended() {
+ return false;
+ }
+
+ public void resume() {
+
+ }
+
+ public void start(FtpServerContext serverContext) {
+
+ }
+
+ public void stop() {
+
+ }
+
+ public void suspend() {
+
+ }
+
+ public List getBlockedAddresses() {
+ return null;
+ }
+
+ public List getBlockedSubnets() {
+ return null;
+ }
+
+ public IpFilter getIpFilter() {
+ return null;
+ }
+
+}
diff --git a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
index b78c1bc6..12be3f97 100644
--- a/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
+++ b/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
@@ -1,115 +1,115 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.config.spring;
-
-import java.net.InetAddress;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.apache.ftpserver.command.CommandFactory;
-import org.apache.ftpserver.command.impl.HELP;
-import org.apache.ftpserver.command.impl.STAT;
-import org.apache.ftpserver.filesystem.nativefs.NativeFileSystemFactory;
-import org.apache.ftpserver.impl.DefaultFtpServer;
-import org.apache.ftpserver.ipfilter.DefaultIpFilter;
-import org.apache.ftpserver.listener.Listener;
-import org.apache.ftpserver.listener.nio.NioListener;
-import org.apache.mina.filter.firewall.Subnet;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
-import org.springframework.core.io.FileSystemResource;
-
-/**
-*
-* @author Apache MINA Project
-*/
-public class SpringConfigTest extends TestCase {
-
- public void test() throws Throwable {
- XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
- "src/test/resources/spring-config/config-spring-1.xml"));
-
- DefaultFtpServer server = (DefaultFtpServer) factory.getBean("server");
-
- assertEquals(500, server.getConnectionConfig().getMaxLogins());
- assertEquals(false, server.getConnectionConfig()
- .isAnonymousLoginEnabled());
- assertEquals(123, server.getConnectionConfig().getMaxAnonymousLogins());
- assertEquals(124, server.getConnectionConfig().getMaxLoginFailures());
- assertEquals(125, server.getConnectionConfig().getLoginFailureDelay());
-
- Map listeners = server.getServerContext()
- .getListeners();
- assertEquals(3, listeners.size());
-
- Listener listener = listeners.get("listener0");
- assertNotNull(listener);
- assertTrue(listener instanceof NioListener);
- assertEquals(2222, ((NioListener) listener).getPort());
- assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
- .getServerAddress()));
- assertEquals(100, ((NioListener) listener)
- .getDataConnectionConfiguration().getIdleTime());
- assertTrue(((NioListener) listener)
- .getDataConnectionConfiguration().isActiveEnabled());
- assertTrue(((NioListener) listener)
- .getDataConnectionConfiguration().isImplicitSsl());
-
- assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
- .getDataConnectionConfiguration().getActiveLocalAddress()) );
- assertEquals("123-125", ((NioListener) listener)
- .getDataConnectionConfiguration().getPassivePorts());
-
- DefaultIpFilter filter = (DefaultIpFilter) listener.getIpFilter();
- assertEquals(3, filter.size());
- assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.3.0"), 16)));
- assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.4.0"), 16)));
- assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.3.4"), 32)));
- listener = listeners.get("listener1");
- assertNotNull(listener);
- assertTrue(listener instanceof MyCustomListener);
- assertEquals(2223, listener.getPort());
-
- listener = listeners.get("listener2");
- assertNotNull(listener);
- assertTrue(listener instanceof MyCustomListener);
- assertEquals(2224, listener.getPort());
-
- CommandFactory cf = server.getCommandFactory();
- assertTrue(cf.getCommand("FOO") instanceof HELP);
- assertTrue(cf.getCommand("FOO2") instanceof STAT);
-
- List languages = server.getServerContext().getMessageResource()
- .getAvailableLanguages();
-
- assertEquals(2, languages.size());
- assertEquals("en", languages.get(0));
- assertEquals("zh-tw", languages.get(1));
-
- NativeFileSystemFactory fs = (NativeFileSystemFactory) server.getFileSystem();
- assertTrue(fs.isCreateHome());
- assertTrue(fs.isCaseInsensitive());
-
- assertEquals(2, server.getFtplets().size());
- assertEquals(123, ((TestFtplet)server.getFtplets().get("ftplet1")).getFoo());
- assertEquals(223, ((TestFtplet)server.getFtplets().get("ftplet2")).getFoo());
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.config.spring;
+
+import java.net.InetAddress;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.command.CommandFactory;
+import org.apache.ftpserver.command.impl.HELP;
+import org.apache.ftpserver.command.impl.STAT;
+import org.apache.ftpserver.filesystem.nativefs.NativeFileSystemFactory;
+import org.apache.ftpserver.impl.DefaultFtpServer;
+import org.apache.ftpserver.ipfilter.DefaultIpFilter;
+import org.apache.ftpserver.listener.Listener;
+import org.apache.ftpserver.listener.nio.NioListener;
+import org.apache.mina.filter.firewall.Subnet;
+import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.core.io.FileSystemResource;
+
+/**
+*
+* @author Apache MINA Project
+*/
+public class SpringConfigTest extends TestCase {
+
+ public void test() throws Throwable {
+ XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
+ "src/test/resources/spring-config/config-spring-1.xml"));
+
+ DefaultFtpServer server = (DefaultFtpServer) factory.getBean("server");
+
+ assertEquals(500, server.getConnectionConfig().getMaxLogins());
+ assertEquals(false, server.getConnectionConfig()
+ .isAnonymousLoginEnabled());
+ assertEquals(123, server.getConnectionConfig().getMaxAnonymousLogins());
+ assertEquals(124, server.getConnectionConfig().getMaxLoginFailures());
+ assertEquals(125, server.getConnectionConfig().getLoginFailureDelay());
+
+ Map listeners = server.getServerContext()
+ .getListeners();
+ assertEquals(3, listeners.size());
+
+ Listener listener = listeners.get("listener0");
+ assertNotNull(listener);
+ assertTrue(listener instanceof NioListener);
+ assertEquals(2222, ((NioListener) listener).getPort());
+ assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
+ .getServerAddress()));
+ assertEquals(100, ((NioListener) listener)
+ .getDataConnectionConfiguration().getIdleTime());
+ assertTrue(((NioListener) listener)
+ .getDataConnectionConfiguration().isActiveEnabled());
+ assertTrue(((NioListener) listener)
+ .getDataConnectionConfiguration().isImplicitSsl());
+
+ assertEquals(InetAddress.getByName("1.2.3.4"), InetAddress.getByName(((NioListener) listener)
+ .getDataConnectionConfiguration().getActiveLocalAddress()) );
+ assertEquals("123-125", ((NioListener) listener)
+ .getDataConnectionConfiguration().getPassivePorts());
+
+ DefaultIpFilter filter = (DefaultIpFilter) listener.getIpFilter();
+ assertEquals(3, filter.size());
+ assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.3.0"), 16)));
+ assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.4.0"), 16)));
+ assertTrue(filter.contains(new Subnet(InetAddress.getByName("1.2.3.4"), 32)));
+ listener = listeners.get("listener1");
+ assertNotNull(listener);
+ assertTrue(listener instanceof MyCustomListener);
+ assertEquals(2223, listener.getPort());
+
+ listener = listeners.get("listener2");
+ assertNotNull(listener);
+ assertTrue(listener instanceof MyCustomListener);
+ assertEquals(2224, listener.getPort());
+
+ CommandFactory cf = server.getCommandFactory();
+ assertTrue(cf.getCommand("FOO") instanceof HELP);
+ assertTrue(cf.getCommand("FOO2") instanceof STAT);
+
+ List languages = server.getServerContext().getMessageResource()
+ .getAvailableLanguages();
+
+ assertEquals(2, languages.size());
+ assertEquals("en", languages.get(0));
+ assertEquals("zh-tw", languages.get(1));
+
+ NativeFileSystemFactory fs = (NativeFileSystemFactory) server.getFileSystem();
+ assertTrue(fs.isCreateHome());
+ assertTrue(fs.isCaseInsensitive());
+
+ assertEquals(2, server.getFtplets().size());
+ assertEquals(123, ((TestFtplet)server.getFtplets().get("ftplet1")).getFoo());
+ assertEquals(223, ((TestFtplet)server.getFtplets().get("ftplet2")).getFoo());
+ }
+}
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
index b85b105f..289a0bff 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaCipherSuitesTest.java
@@ -1,82 +1,82 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ftpserver.ssl;
-
-import javax.net.ssl.SSLHandshakeException;
-
-import org.apache.commons.net.ftp.FTPSClient;
-
-/**
-*
-* @author Apache MINA Project
-*
-*/
-public class MinaCipherSuitesTest extends SSLTestTemplate {
-
- protected String getAuthValue() {
- return "TLS";
- }
-
- protected boolean useImplicit() {
- return true;
- }
-
- protected SslConfigurationFactory createSslConfiguration() {
- SslConfigurationFactory sslConfigFactory = super.createSslConfiguration();
-
- sslConfigFactory
- .setEnabledCipherSuites(new String[] { "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" });
-
- return sslConfigFactory;
- }
-
- protected FTPSClient createFTPClient() throws Exception {
- return new FTPSClient(true);
- }
-
- protected boolean isConnectClient() {
- return false;
- }
-
- /*
- * Only certain cipher suites will work with the keys and protocol we're
- * using for this test. Two suites known to work is:
- * SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
- */
- public void testEnabled() throws Exception {
-
- ((FTPSClient) client)
- .setEnabledCipherSuites(new String[] { "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" });
-
- connectClient();
- }
-
- public void testDisabled() throws Exception {
- ((FTPSClient) client)
- .setEnabledCipherSuites(new String[] { "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA" });
-
- try {
- doConnect();
- fail("Must throw SSLHandshakeException");
- } catch (SSLHandshakeException e) {
- // OK
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.ssl;
+
+import javax.net.ssl.SSLHandshakeException;
+
+import org.apache.commons.net.ftp.FTPSClient;
+
+/**
+*
+* @author Apache MINA Project
+*
+*/
+public class MinaCipherSuitesTest extends SSLTestTemplate {
+
+ protected String getAuthValue() {
+ return "TLS";
+ }
+
+ protected boolean useImplicit() {
+ return true;
+ }
+
+ protected SslConfigurationFactory createSslConfiguration() {
+ SslConfigurationFactory sslConfigFactory = super.createSslConfiguration();
+
+ sslConfigFactory
+ .setEnabledCipherSuites(new String[] { "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" });
+
+ return sslConfigFactory;
+ }
+
+ protected FTPSClient createFTPClient() throws Exception {
+ return new FTPSClient(true);
+ }
+
+ protected boolean isConnectClient() {
+ return false;
+ }
+
+ /*
+ * Only certain cipher suites will work with the keys and protocol we're
+ * using for this test. Two suites known to work is:
+ * SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
+ */
+ public void testEnabled() throws Exception {
+
+ ((FTPSClient) client)
+ .setEnabledCipherSuites(new String[] { "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" });
+
+ connectClient();
+ }
+
+ public void testDisabled() throws Exception {
+ ((FTPSClient) client)
+ .setEnabledCipherSuites(new String[] { "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA" });
+
+ try {
+ doConnect();
+ fail("Must throw SSLHandshakeException");
+ } catch (SSLHandshakeException e) {
+ // OK
+ }
+ }
+}
diff --git a/core/src/test/resources/users.properties b/core/src/test/resources/users.properties
index 30127a8e..348eef86 100644
--- a/core/src/test/resources/users.properties
+++ b/core/src/test/resources/users.properties
@@ -1,57 +1,57 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-#Generated file - don't edit (please)
-#Wed Feb 07 20:58:22 CET 2007
-
-ftpserver.user.admin.userpassword=admin
-ftpserver.user.admin.homedirectory=./test-tmp/ftproot
-ftpserver.user.admin.maxloginperip=0
-ftpserver.user.admin.idletime=0
-ftpserver.user.admin.enableflag=true
-ftpserver.user.admin.writepermission=true
-ftpserver.user.admin.maxloginnumber=0
-ftpserver.user.admin.uploadrate=0
-ftpserver.user.admin.downloadrate=0
-
-ftpserver.user.testuser1.homedirectory=./test-tmp/ftproot
-ftpserver.user.testuser1.maxloginnumber=3
-ftpserver.user.testuser1.writepermission=true
-ftpserver.user.testuser1.userpassword=password
-
-ftpserver.user.testuser2.userpassword=password
-ftpserver.user.testuser2.writepermission=true
-ftpserver.user.testuser2.homedirectory=./test-tmp/ftproot
-ftpserver.user.testuser2.maxloginperip=2
-
-ftpserver.user.testuser3.userpassword=
-ftpserver.user.testuser3.writepermission=true
-ftpserver.user.testuser3.homedirectory=./test-tmp/ftproot
-
-ftpserver.user.testuser4.userpassword=password
-ftpserver.user.testuser4.enableflag=false
-ftpserver.user.testuser4.homedirectory=./test-tmp/ftproot
-
-ftpserver.user.anonymous.userpassword=
-ftpserver.user.anonymous.maxloginperip=2
-ftpserver.user.anonymous.uploadrate=4800
-ftpserver.user.anonymous.writepermission=false
-ftpserver.user.anonymous.maxloginnumber=20
-ftpserver.user.anonymous.enableflag=true
-ftpserver.user.anonymous.homedirectory=./test-tmp/ftproot
-ftpserver.user.anonymous.idletime=300
-ftpserver.user.anonymous.downloadrate=4800
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#Generated file - don't edit (please)
+#Wed Feb 07 20:58:22 CET 2007
+
+ftpserver.user.admin.userpassword=admin
+ftpserver.user.admin.homedirectory=./test-tmp/ftproot
+ftpserver.user.admin.maxloginperip=0
+ftpserver.user.admin.idletime=0
+ftpserver.user.admin.enableflag=true
+ftpserver.user.admin.writepermission=true
+ftpserver.user.admin.maxloginnumber=0
+ftpserver.user.admin.uploadrate=0
+ftpserver.user.admin.downloadrate=0
+
+ftpserver.user.testuser1.homedirectory=./test-tmp/ftproot
+ftpserver.user.testuser1.maxloginnumber=3
+ftpserver.user.testuser1.writepermission=true
+ftpserver.user.testuser1.userpassword=password
+
+ftpserver.user.testuser2.userpassword=password
+ftpserver.user.testuser2.writepermission=true
+ftpserver.user.testuser2.homedirectory=./test-tmp/ftproot
+ftpserver.user.testuser2.maxloginperip=2
+
+ftpserver.user.testuser3.userpassword=
+ftpserver.user.testuser3.writepermission=true
+ftpserver.user.testuser3.homedirectory=./test-tmp/ftproot
+
+ftpserver.user.testuser4.userpassword=password
+ftpserver.user.testuser4.enableflag=false
+ftpserver.user.testuser4.homedirectory=./test-tmp/ftproot
+
+ftpserver.user.anonymous.userpassword=
+ftpserver.user.anonymous.maxloginperip=2
+ftpserver.user.anonymous.uploadrate=4800
+ftpserver.user.anonymous.writepermission=false
+ftpserver.user.anonymous.maxloginnumber=20
+ftpserver.user.anonymous.enableflag=true
+ftpserver.user.anonymous.homedirectory=./test-tmp/ftproot
+ftpserver.user.anonymous.idletime=300
+ftpserver.user.anonymous.downloadrate=4800
diff --git a/distribution/LICENSE.springframework.txt b/distribution/LICENSE.springframework.txt
index 32af2891..66a27ec5 100644
--- a/distribution/LICENSE.springframework.txt
+++ b/distribution/LICENSE.springframework.txt
@@ -1,177 +1,177 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/distribution/res/conf/users.properties b/distribution/res/conf/users.properties
index 9dc67144..f52442ef 100644
--- a/distribution/res/conf/users.properties
+++ b/distribution/res/conf/users.properties
@@ -1,37 +1,37 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Password is "admin"
-ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
-ftpserver.user.admin.homedirectory=./res/home
-ftpserver.user.admin.enableflag=true
-ftpserver.user.admin.writepermission=true
-ftpserver.user.admin.maxloginnumber=0
-ftpserver.user.admin.maxloginperip=0
-ftpserver.user.admin.idletime=0
-ftpserver.user.admin.uploadrate=0
-ftpserver.user.admin.downloadrate=0
-
-ftpserver.user.anonymous.userpassword=
-ftpserver.user.anonymous.homedirectory=./res/home
-ftpserver.user.anonymous.enableflag=true
-ftpserver.user.anonymous.writepermission=false
-ftpserver.user.anonymous.maxloginnumber=20
-ftpserver.user.anonymous.maxloginperip=2
-ftpserver.user.anonymous.idletime=300
-ftpserver.user.anonymous.uploadrate=4800
-ftpserver.user.anonymous.downloadrate=4800
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# Password is "admin"
+ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
+ftpserver.user.admin.homedirectory=./res/home
+ftpserver.user.admin.enableflag=true
+ftpserver.user.admin.writepermission=true
+ftpserver.user.admin.maxloginnumber=0
+ftpserver.user.admin.maxloginperip=0
+ftpserver.user.admin.idletime=0
+ftpserver.user.admin.uploadrate=0
+ftpserver.user.admin.downloadrate=0
+
+ftpserver.user.anonymous.userpassword=
+ftpserver.user.anonymous.homedirectory=./res/home
+ftpserver.user.anonymous.enableflag=true
+ftpserver.user.anonymous.writepermission=false
+ftpserver.user.anonymous.maxloginnumber=20
+ftpserver.user.anonymous.maxloginperip=2
+ftpserver.user.anonymous.idletime=300
+ftpserver.user.anonymous.uploadrate=4800
+ftpserver.user.anonymous.downloadrate=4800
diff --git a/examples/ftpserver-example-spring-war/src/main/resources/users.properties b/examples/ftpserver-example-spring-war/src/main/resources/users.properties
index 2aed0d15..52899ce7 100644
--- a/examples/ftpserver-example-spring-war/src/main/resources/users.properties
+++ b/examples/ftpserver-example-spring-war/src/main/resources/users.properties
@@ -1,37 +1,37 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Password is "admin"
-ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
-ftpserver.user.admin.homedirectory=/tmp
-ftpserver.user.admin.enableflag=true
-ftpserver.user.admin.writepermission=true
-ftpserver.user.admin.maxloginnumber=0
-ftpserver.user.admin.maxloginperip=0
-ftpserver.user.admin.idletime=0
-ftpserver.user.admin.uploadrate=0
-ftpserver.user.admin.downloadrate=0
-
-ftpserver.user.anonymous.userpassword=
-ftpserver.user.anonymous.homedirectory=/tmp
-ftpserver.user.anonymous.enableflag=true
-ftpserver.user.anonymous.writepermission=false
-ftpserver.user.anonymous.maxloginnumber=20
-ftpserver.user.anonymous.maxloginperip=2
-ftpserver.user.anonymous.idletime=300
-ftpserver.user.anonymous.uploadrate=4800
-ftpserver.user.anonymous.downloadrate=4800
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# Password is "admin"
+ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
+ftpserver.user.admin.homedirectory=/tmp
+ftpserver.user.admin.enableflag=true
+ftpserver.user.admin.writepermission=true
+ftpserver.user.admin.maxloginnumber=0
+ftpserver.user.admin.maxloginperip=0
+ftpserver.user.admin.idletime=0
+ftpserver.user.admin.uploadrate=0
+ftpserver.user.admin.downloadrate=0
+
+ftpserver.user.anonymous.userpassword=
+ftpserver.user.anonymous.homedirectory=/tmp
+ftpserver.user.anonymous.enableflag=true
+ftpserver.user.anonymous.writepermission=false
+ftpserver.user.anonymous.maxloginnumber=20
+ftpserver.user.anonymous.maxloginperip=2
+ftpserver.user.anonymous.idletime=300
+ftpserver.user.anonymous.uploadrate=4800
+ftpserver.user.anonymous.downloadrate=4800
diff --git a/examples/ftpserver-osgi-spring-service/src/main/resources/org/apache/ftpserver/example/osgiservice/users.properties b/examples/ftpserver-osgi-spring-service/src/main/resources/org/apache/ftpserver/example/osgiservice/users.properties
index 2aed0d15..52899ce7 100644
--- a/examples/ftpserver-osgi-spring-service/src/main/resources/org/apache/ftpserver/example/osgiservice/users.properties
+++ b/examples/ftpserver-osgi-spring-service/src/main/resources/org/apache/ftpserver/example/osgiservice/users.properties
@@ -1,37 +1,37 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Password is "admin"
-ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
-ftpserver.user.admin.homedirectory=/tmp
-ftpserver.user.admin.enableflag=true
-ftpserver.user.admin.writepermission=true
-ftpserver.user.admin.maxloginnumber=0
-ftpserver.user.admin.maxloginperip=0
-ftpserver.user.admin.idletime=0
-ftpserver.user.admin.uploadrate=0
-ftpserver.user.admin.downloadrate=0
-
-ftpserver.user.anonymous.userpassword=
-ftpserver.user.anonymous.homedirectory=/tmp
-ftpserver.user.anonymous.enableflag=true
-ftpserver.user.anonymous.writepermission=false
-ftpserver.user.anonymous.maxloginnumber=20
-ftpserver.user.anonymous.maxloginperip=2
-ftpserver.user.anonymous.idletime=300
-ftpserver.user.anonymous.uploadrate=4800
-ftpserver.user.anonymous.downloadrate=4800
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# Password is "admin"
+ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
+ftpserver.user.admin.homedirectory=/tmp
+ftpserver.user.admin.enableflag=true
+ftpserver.user.admin.writepermission=true
+ftpserver.user.admin.maxloginnumber=0
+ftpserver.user.admin.maxloginperip=0
+ftpserver.user.admin.idletime=0
+ftpserver.user.admin.uploadrate=0
+ftpserver.user.admin.downloadrate=0
+
+ftpserver.user.anonymous.userpassword=
+ftpserver.user.anonymous.homedirectory=/tmp
+ftpserver.user.anonymous.enableflag=true
+ftpserver.user.anonymous.writepermission=false
+ftpserver.user.anonymous.maxloginnumber=20
+ftpserver.user.anonymous.maxloginperip=2
+ftpserver.user.anonymous.idletime=300
+ftpserver.user.anonymous.uploadrate=4800
+ftpserver.user.anonymous.downloadrate=4800
From d3216d713253586f79bede49ec11162272a4f9dc Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Tue, 1 May 2012 21:37:10 +0000
Subject: [PATCH 099/101] Remove duplicate code
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1332843 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/ftpserver/command/impl/AUTH.java | 21 +++++++------------
1 file changed, 7 insertions(+), 14 deletions(-)
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 ff4cd0d9..908082da 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
@@ -21,6 +21,8 @@
import java.io.IOException;
import java.security.GeneralSecurityException;
+import java.util.Arrays;
+import java.util.List;
import org.apache.ftpserver.command.AbstractCommand;
import org.apache.ftpserver.ftplet.FtpException;
@@ -48,6 +50,8 @@ public class AUTH extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(AUTH.class);
+ private static final List VALID_AUTH_TYPES = Arrays.asList("SSL", "TLS");
+
/**
* Execute command
*/
@@ -95,22 +99,11 @@ public void execute(final FtpIoSession session,
// check parameter
String authType = request.getArgument().toUpperCase();
- if (authType.equals("SSL")) {
- try {
- secureSession(session, "SSL");
- session.write(LocalizedFtpReply.translate(session, request, context,
- 234, "AUTH.SSL", null));
- } catch (FtpException ex) {
- throw ex;
- } catch (Exception ex) {
- LOG.warn("AUTH.execute()", ex);
- throw new FtpException("AUTH.execute()", ex);
- }
- } else if (authType.equals("TLS")) {
+ if (VALID_AUTH_TYPES.contains(authType)) {
try {
- secureSession(session, "TLS");
+ secureSession(session, authType);
session.write(LocalizedFtpReply.translate(session, request, context,
- 234, "AUTH.TLS", null));
+ 234, "AUTH." + authType, null));
} catch (FtpException ex) {
throw ex;
} catch (Exception ex) {
From 74f35ad5c911b0e0fd4e7816530d5b1ffb833039 Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Tue, 1 May 2012 21:37:27 +0000
Subject: [PATCH 100/101] Correctly set the data connection as protected when
using AUTH SSL
Fixes FTPSERVER-431
Also adds support for the TLS-C and TLS-P auth types
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1332844 13f79535-47bb-0310-9956-ffa450edef68
---
.../java/org/apache/ftpserver/command/impl/AUTH.java | 11 ++++++++++-
.../ftpserver/ssl/ExplicitSecurityTestTemplate.java | 7 +++++++
.../ftpserver/ssl/MinaImplicitDataChannelTest.java | 4 ++++
3 files changed, 21 insertions(+), 1 deletion(-)
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 908082da..d3dfd17c 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
@@ -50,7 +50,7 @@ public class AUTH extends AbstractCommand {
private final Logger LOG = LoggerFactory.getLogger(AUTH.class);
- private static final List VALID_AUTH_TYPES = Arrays.asList("SSL", "TLS");
+ private static final List VALID_AUTH_TYPES = Arrays.asList("SSL", "TLS", "TLS-C", "TLS-P");
/**
* Execute command
@@ -100,6 +100,12 @@ public void execute(final FtpIoSession session,
// check parameter
String authType = request.getArgument().toUpperCase();
if (VALID_AUTH_TYPES.contains(authType)) {
+ if(authType.equals("TLS-C")) {
+ authType = "TLS";
+ } else if(authType.equals("TLS-P")) {
+ authType = "SSL";
+ }
+
try {
secureSession(session, authType);
session.write(LocalizedFtpReply.translate(session, request, context,
@@ -141,6 +147,9 @@ private void secureSession(final FtpIoSession session, final String type)
session.getFilterChain().addFirst(SSL_SESSION_FILTER_NAME,
sslFilter);
+ if("SSL".equals(type)) {
+ session.getDataConnection().setSecure(true);
+ }
} else {
throw new FtpException("Socket factory SSL not configured");
}
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java b/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
index 3d919373..a8406fab 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/ExplicitSecurityTestTemplate.java
@@ -45,12 +45,19 @@ protected void setUp() throws Exception {
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
}
+ protected boolean expectDataConnectionSecure() {
+ return getAuthValue().equals("SSL") && !useImplicit();
+ }
+
/**
* Tests that we can send command over the command channel. This is, in fact
* already tested by login in setup but an explicit test is good anyways.
*/
public void testCommandChannel() throws Exception {
assertTrue(getActiveSession().isSecure());
+
+ assertEquals(expectDataConnectionSecure(), getActiveSession().getDataConnection().isSecure());
+
assertTrue(FTPReply.isPositiveCompletion(client.noop()));
}
diff --git a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
index 076abd7f..52d7788c 100644
--- a/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
+++ b/core/src/test/java/org/apache/ftpserver/ssl/MinaImplicitDataChannelTest.java
@@ -57,6 +57,10 @@ protected boolean useImplicit() {
return true;
}
+ protected boolean expectDataConnectionSecure() {
+ return true;
+ }
+
/**
* Simple test that the {@link ServerDataConnectionFactory#isSecure()}
* works as expected
From 78b296b025044b49e055d7787d8623992513a7cd Mon Sep 17 00:00:00 2001
From: Niklas Gustavsson
Date: Sat, 15 Sep 2012 20:50:41 +0000
Subject: [PATCH 101/101] Fix for broken OSGi packages (FTPSERVER-425)
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/branches/1.0.x@1385176 13f79535-47bb-0310-9956-ffa450edef68
---
core/pom.xml | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index d6d83958..ce064eee 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -76,17 +76,7 @@
org.apache.ftpserver.ssl;version=${project.version},
org.apache.ftpserver.usermanager;version=${project.version}
- org.apache.ftpserver.command.impl,
- org.apache.ftpserver.command.impl.listing,
- org.apache.ftpserver.filesystem.nativefs.impl,
- org.apache.ftpserver.ftpletcontainer.impl,
- org.apache.ftpserver.impl, org.apache.ftpserver.listener.nio,
- org.apache.ftpserver.message.impl, org.apache.ftpserver.ssl.impl,
- org.apache.ftpserver.usermanager.impl,
- org.apache.ftpserver.util,
- org.apache.ftpserver.*
-
-
+
org.springframework.beans.factory.config;resolution:=optional;version="2.5",
org.springframework.beans.factory.support;resolution:=optional;version="2.5",
org.springframework.beans.factory.xml;resolution:=optional;version="2.5",