summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Schwabe2014-04-09 11:55:17 +0200
committerNils Schwabe2014-04-09 11:55:17 +0200
commitadd16042b8efaa7f64b61c64e311dcd637489a8c (patch)
tree5783d2d2ae95b180edf18203f1798426c6ed6f4b
parentadded ftp server for testing (diff)
downloadmasterserver-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.java69
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();
+ }
+ }
+}