diff options
author | Nils Schwabe | 2014-04-09 11:55:17 +0200 |
---|---|---|
committer | Nils Schwabe | 2014-04-09 11:55:17 +0200 |
commit | add16042b8efaa7f64b61c64e311dcd637489a8c (patch) | |
tree | 5783d2d2ae95b180edf18203f1798426c6ed6f4b | |
parent | added ftp server for testing (diff) | |
download | masterserver-add16042b8efaa7f64b61c64e311dcd637489a8c.tar.gz masterserver-add16042b8efaa7f64b61c64e311dcd637489a8c.tar.xz masterserver-add16042b8efaa7f64b61c64e311dcd637489a8c.zip |
forgot to commit the ftpserver class
-rw-r--r-- | src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java new file mode 100644 index 0000000..f54b80d --- /dev/null +++ b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java @@ -0,0 +1,69 @@ +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<Authority> authorities = new ArrayList<Authority>(); + 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(); + } + } +} |