I looked at the various manuals but nothing is clearly document about
how to set the idle timeout. I have couple of questions?
1. On linux can I set idle-timeout on EmbeddedFtpServer outside of JVM
but either logging in ftp server or by any other means?
2. I have below code (that I haven't written) that I need to modify to
add idle-timeout. But when I add
"config.listeners.default.data-connection.idle-timeout" I get
org.apache.ftpserver.FtpServerConfigurationException: Unknown property
"idle-timeout" on class
org.apache.ftpserver.DefaultDataConnectionConfig exception.
How do I add idle-timeout?
public static FtpServer createFtpServer(int port, String username,
String password, String homeDir) throws Exception {
ConfigurableFtpServerContext context = new
ConfigurableFtpServerContext(new
PropertiesConfiguration(getFtpProperties(port)));
PropertiesUserManager userManager =
(PropertiesUserManager)context.getUserManager();
addUser(userManager, username, password, homeDir);
FtpServer ftpServer = new FtpServer(context);
return ftpServer;
}
public static Properties getFtpsProperties(int port, String
keystoreLoc) throws IOException {
Properties p = new Properties();
if (keystoreLoc == null) keystoreLoc = "./dist/ftp/.keystore";
// Enable FTPS (SSL)
p.put("config.listeners.default.implicit-ssl", "false");
p.put("config.listeners.default.port", Integer.toString(port));
p.put("config.listeners.default.ssl.class",
"org.apache.ftpserver.ssl.DefaultSsl");
p.put("config.listeners.default.ssl.keystore-file", keystoreLoc);
p.put("config.listeners.default.ssl.keystore-password", "password");
p.put("config.listeners.default.ssl.keystore-type", "JKS");
p.put("config.listeners.default.ssl.keystore-algorithm", "SunX509");
p.put("config.listeners.default.ssl.ssl-protocol", "TLS");
p.put("config.listeners.default.ssl.client-authentication", "false");
p.put("config.listeners.default.ssl.key-password", "password");
// Enable encrypted data channel
p.put("config.listeners.default.data-connection.class",
"org.apache.ftpserver.DefaultDataConnectionConfig");
p.put("config.listeners.default.data-connection.ssl.class",
"org.apache.ftpserver.ssl.DefaultSsl");
log.info("SETTING IDLE TIMEOUT");
p.put("config.listeners.default.data-connection.idle-timeout", "300");
log.info("DONE SETTING IDLE TIMEOUT");
// p.put("config.listeners.default.data-connection.passive.address",
"localhost");
p.put("config.listeners.default.data-connection.passive.ports",
"5000-5010");
p.put("config.listeners.default.data-connection.ssl.keystore-file",
keystoreLoc);
p.put("config.listeners.default.data-connection.ssl.keystore-password",
"password");
p.put("config.listeners.default.data-connection.ssl.keystore-type",
"JKS");
p.put("config.listeners.default.data-connection.ssl.keystore-algorithm",
"SunX509");
p.put("config.listeners.default.data-connection.ssl.ssl-protocol",
"TLS");
p.put("config.listeners.default.data-connection.ssl.client-authentication",
"false");
p.put("config.connection-manager.max-connection", 100); // No Limit
p.put("config.connection-manager.max-login", 100); // No Limit
// User Manager
p.put("config.file-system-manager.create-home", "true");
// p.put("config.user-manager.class",
"org.apache.ftpserver.usermanager.PropertiesUserManager");
// p.put("config.user-manager.admin", "efe");
// p.put("config.user-mananger.prop-file", userfile);
// p.put("config.user.manager.prop-password-encrypt", "false");
//
// System.out.println("UserFile = " + userfile);
return p;
}