diff options
| author | Nils Schwabe | 2014-04-09 15:40:16 +0200 |
|---|---|---|
| committer | Nils Schwabe | 2014-04-09 15:40:16 +0200 |
| commit | b30da021d491ace47c1b6a7b5ad11e595a2399c9 (patch) | |
| tree | a90ccc1f2a7833df6727c181a885cc56dc2e463a /src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java | |
| parent | fixed config dir (examples etc) (diff) | |
| download | masterserver-b30da021d491ace47c1b6a7b5ad11e595a2399c9.tar.gz masterserver-b30da021d491ace47c1b6a7b5ad11e595a2399c9.tar.xz masterserver-b30da021d491ace47c1b6a7b5ad11e595a2399c9.zip | |
Added Globals.java and global properties
Added Ftpserver test
Created some ftp testign in App.java (needs to be removed)
Added Ftplet to trigger on FTP Commands
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java')
| -rw-r--r-- | src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java | 54 |
1 files changed, 41 insertions, 13 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java index f54b80d..9ec5cf7 100644 --- a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java +++ b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java @@ -2,23 +2,28 @@ package org.openslx.imagemaster.server; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; 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.Ftplet; 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; +import org.apache.log4j.Logger; public class MasterFtpServer implements Runnable { + private static Logger log = Logger.getLogger( ApiServer.class ); private FtpServer server; + private UserManager userManager; - public MasterFtpServer(int port, String username, String password, String ftproot) { + public MasterFtpServer(int port, String adminUsername, String adminPassword, String ftproot) { FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); // set the port of the listener @@ -27,18 +32,28 @@ public class MasterFtpServer implements Runnable { // replace the default listener serverFactory.addListener("default", factory.createListener()); - // create new user - serverFactory.setUserManager(addUser(username, password, ftproot)); + // create user manager + PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); + userManagerFactory.setFile(new File("src/main/properties/ftp.properties")); + userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor()); + userManager = userManagerFactory.createUserManager(); + + // create new admin user + addUser(adminUsername, adminPassword, ftproot, true); + serverFactory.setUserManager(userManager); + + // add the Ftplet + HashMap<String, Ftplet> map = new HashMap<String, Ftplet>(); + map.put("Ftplet1", new MasterFtplet()); + serverFactory.setFtplets(map); // start the server - server = serverFactory.createServer(); + 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(); + public boolean addUser(final String username, final String password, final String ftproot, final boolean writeAccess) { + // TODO: enable SSL + boolean result = true; BaseUser user = new BaseUser(); user.setName(username); @@ -46,21 +61,34 @@ public class MasterFtpServer implements Runnable { user.setHomeDirectory(ftproot); List<Authority> authorities = new ArrayList<Authority>(); - authorities.add(new WritePermission()); + if (writeAccess) authorities.add(new WritePermission()); user.setAuthorities(authorities); try { - um.save(user); + userManager.save(user); } catch (FtpException e) { - e.printStackTrace(); + result = false; } - return um; + return result; + } + + public boolean removeUser(final String username) { + boolean result = true; + + try { + userManager.delete(username); + } catch (FtpException e) { + result = false; + } + + return result; } @Override public void run() { try { + log.info( "Starting FTP Sever" ); server.start(); } catch (FtpException e1) { e1.printStackTrace(); |
