From b30da021d491ace47c1b6a7b5ad11e595a2399c9 Mon Sep 17 00:00:00 2001 From: Nils Schwabe Date: Wed, 9 Apr 2014 15:40:16 +0200 Subject: 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 --- .../imagemaster/server/MasterFtpServer.java | 54 ++++++++++++++++------ 1 file changed, 41 insertions(+), 13 deletions(-) (limited to 'src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java') 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 map = new HashMap(); + 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 authorities = new ArrayList(); - 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(); -- cgit v1.2.3-55-g7522