package org.openslx.imagemaster.server; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.ftplet.Authority; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.ftplet.UserManager; import org.apache.ftpserver.listener.ListenerFactory; import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor; import org.apache.ftpserver.usermanager.impl.BaseUser; import org.apache.ftpserver.usermanager.impl.WritePermission; public class MasterFtpServer implements Runnable { private FtpServer server; public MasterFtpServer(int port, String username, String password, String ftproot) { FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); // set the port of the listener factory.setPort(port); // replace the default listener serverFactory.addListener("default", factory.createListener()); // create new user serverFactory.setUserManager(addUser(username, password, ftproot)); // start the server server = serverFactory.createServer(); } private UserManager addUser(final String username, final String password, final String ftproot) { PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); userManagerFactory.setFile(new File("config/ftp.properties")); userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor()); UserManager um = userManagerFactory.createUserManager(); BaseUser user = new BaseUser(); user.setName(username); user.setPassword(password); user.setHomeDirectory(ftproot); List authorities = new ArrayList(); authorities.add(new WritePermission()); user.setAuthorities(authorities); try { um.save(user); } catch (FtpException e) { e.printStackTrace(); } return um; } @Override public void run() { try { server.start(); } catch (FtpException e1) { e1.printStackTrace(); } } }