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 | |
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')
3 files changed, 102 insertions, 14 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java index dd0ec9e..ba15623 100644 --- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java +++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java @@ -26,7 +26,6 @@ public class ApiServer { @SuppressWarnings( "unused" ) private static Logger log = Logger.getLogger( ApiServer.class ); - // /** * Request for authentication 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(); diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java b/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java new file mode 100644 index 0000000..73d69d2 --- /dev/null +++ b/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java @@ -0,0 +1,61 @@ +package org.openslx.imagemaster.server; + +import java.io.IOException; + +import org.apache.ftpserver.ftplet.FtpException; +import org.apache.ftpserver.ftplet.FtpReply; +import org.apache.ftpserver.ftplet.FtpRequest; +import org.apache.ftpserver.ftplet.FtpSession; +import org.apache.ftpserver.ftplet.Ftplet; +import org.apache.ftpserver.ftplet.FtpletContext; +import org.apache.ftpserver.ftplet.FtpletResult; +import org.apache.log4j.Logger; +import org.openslx.imagemaster.App; + +public class MasterFtplet implements Ftplet { + private static Logger log = Logger.getLogger(App.class); + + @Override + public void init(FtpletContext ftpletContext) throws FtpException { + // TODO Auto-generated method stub + + } + + @Override + public void destroy() { + // TODO Auto-generated method stub + + } + + @Override + public FtpletResult beforeCommand(FtpSession session, FtpRequest request) + throws FtpException, IOException { + if (session.getUser() != null && request.getCommand() == "QUIT") { + // TODO: tell server that user finished uploading + String user = session.getUser().getName(); + } + return null; + } + + @Override + public FtpletResult afterCommand(FtpSession session, FtpRequest request, + FtpReply reply) throws FtpException, IOException { + // TODO Auto-generated method stub + return null; + } + + @Override + public FtpletResult onConnect(FtpSession session) throws FtpException, + IOException { + // TODO Auto-generated method stub + return null; + } + + @Override + public FtpletResult onDisconnect(FtpSession session) throws FtpException, + IOException { + // TODO Auto-generated method stub + return null; + } + +} |