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; }