Here is my code....rather trivail usage case.
import java.io.File;
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
import common.CommonConstants;
public class ApacheFtpServer{
private FtpServer server = null;
public ApacheFtpServer(int port) throws Exception{
initialize(port);
}
private void initialize(int port) throws Exception{
FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory factory = new ListenerFactory();
// set the port of the listener
factory.setPort(port);
// define SSL configuration
//SslConfigurationFactory ssl = new SslConfigurationFactory();
//ssl.setKeystoreFile(new
File("support/apacheFtpServer/ftpserver.jks"));
//ssl.setKeystorePassword("password");
// set the SSL configuration for the listener
//factory.setSslConfiguration(ssl.createSslConfiguration());
//factory.setImplicitSsl(true);
// replace the default listener
serverFactory.addListener("default", factory.createListener());
PropertiesUserManagerFactory userManagerFactory = new
PropertiesUserManagerFactory();
userManagerFactory.setFile(new
File(CommonConstants.FTP_USERS_PROPERTIES_FILE));
userManagerFactory.setPasswordEncryptor(new ClearTextPasswordEncryptor
());
serverFactory.setUserManager(userManagerFactory.createUserManager());
// start the server
server = serverFactory.createServer();
server.start();
}
public void suspend() throws Exception{
server.suspend();
}
public void resume() throws Exception{
server.resume();
}
public void stop() throws Exception{
server.stop();
}
public static void main(String[] args) throws Exception {
new ApacheFtpServer(CommonConstants.FTP_SERVER_DEFAULT_PORT);
}
}
-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: Thursday, January 22, 2009 12:32 PM
To: [email protected]
Subject: Re: IOException on ftp client disconnect
You also get something similar using filezilla in SSL mode when it
disconnects:
[DEBUG] 2009-01-19 12:04:40,288 [] [] Unexpected exception from
SSLEngine.closeInbound().
javax.net.ssl.SSLException: Inbound closed before receiving peer's
close_notify: possible truncation attack?
at
com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:166)
at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1356)
at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1324)
at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:1263)
at org.apache.mina.filter.ssl.SslHandler.destroy(SslHandler.java:155)
at
org.apache.mina.filter.ssl.SslFilter.sessionClosed(SslFilter.java:386)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:378)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$900(DefaultIoFilterChain.java:49)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:817)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$HeadFilter.sessionClosed(DefaultIoFilterChain.java:598)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:378)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireSessionClosed(DefaultIoFilterChain.java:373)
at
org.apache.mina.core.service.IoServiceListenerSupport.fireSessionDestroyed(IoServiceListenerSupport.java:229)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.removeNow(AbstractPollingIoProcessor.java:485)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.remove(AbstractPollingIoProcessor.java:455)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:58)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:862)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
[ INFO] 2009-01-19 12:04:40,289 [gary] [172.25.72.185] CLOSED
Best Regards,
Gary