diff options
| author | Nils Schwabe | 2014-04-22 16:56:07 +0200 |
|---|---|---|
| committer | Nils Schwabe | 2014-04-22 16:56:07 +0200 |
| commit | 01e662bdfff823c4f5f0b6a270807fd0a3d2825f (patch) | |
| tree | daf063bc84c06781768794c17cc76f08decaa9c3 /src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java | |
| parent | Added test case for sha512crypt, removed try/catch blocks from other tests, s... (diff) | |
| download | masterserver-01e662bdfff823c4f5f0b6a270807fd0a3d2825f.tar.gz masterserver-01e662bdfff823c4f5f0b6a270807fd0a3d2825f.tar.xz masterserver-01e662bdfff823c4f5f0b6a270807fd0a3d2825f.zip | |
added a method to imageserver so that finshed uploads can be signaled
did some todos from simon
moved FtpCredentials creation to MasterFtpServer.java
moved some options to to config file
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java')
| -rw-r--r-- | src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java index 973c768..c6592bc 100644 --- a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java +++ b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java @@ -17,11 +17,15 @@ 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; +import org.openslx.imagemaster.Globals; +import org.openslx.imagemaster.thrift.iface.FtpCredentials; +import org.openslx.imagemaster.util.RandomString; public class MasterFtpServer implements Runnable { private static Logger log = Logger.getLogger( MasterFtpServer.class ); private FtpServer server; private UserManager userManager; + private HashMap<String, FtpCredentials> users = new HashMap<>(); public MasterFtpServer(int port, String adminUsername, String adminPassword, String ftproot) { FtpServerFactory serverFactory = new FtpServerFactory(); @@ -39,7 +43,7 @@ public class MasterFtpServer implements Runnable { userManager = userManagerFactory.createUserManager(); // create new admin user - addUser(adminUsername, adminPassword, ftproot, true); + //addUser(adminUsername, adminPassword, ftproot, true); serverFactory.setUserManager(userManager); // add the Ftplet @@ -51,38 +55,57 @@ public class MasterFtpServer implements Runnable { server = serverFactory.createServer(); } - public boolean addUser(final String username, final String password, final String ftproot, final boolean writeAccess) { + public FtpCredentials addUser(final String serverSessionId) { // TODO: enable SSL - boolean result = true; + + FtpCredentials ftpCredentials = null; + + String generatedUser = RandomString.generate(10, false); + String generatedPass = RandomString.generate(16, true); + + String dir = Globals.properties.getProperty(Globals.ftpBaseDir) + "/" + + generatedUser + "/"; + + if (!new File(dir).mkdir()) { + return ftpCredentials; + } BaseUser user = new BaseUser(); - user.setName(username); - user.setPassword(password); - user.setHomeDirectory(ftproot); + user.setName(generatedUser); + user.setPassword(generatedPass); + user.setHomeDirectory(dir); List<Authority> authorities = new ArrayList<Authority>(); - if (writeAccess) authorities.add(new WritePermission()); + authorities.add(new WritePermission()); user.setAuthorities(authorities); try { userManager.save(user); + ftpCredentials = new FtpCredentials(generatedUser, generatedPass); + users.put(serverSessionId, ftpCredentials); } catch (FtpException e) { - result = false; } - return result; + log.info("Generated user/pass: " + generatedUser + "\t" + + generatedPass + "\n with home dir: " + dir); + + return ftpCredentials; } - public boolean removeUser(final String username) { - boolean result = true; + public boolean removeUser(final String serverSessionId) { + if (!users.containsKey(serverSessionId)) return false; try { - userManager.delete(username); + userManager.delete(users.get(serverSessionId).username); + users.remove(serverSessionId); + return true; } catch (FtpException e) { - result = false; + return false; } - - return result; + } + + public FtpCredentials getCredentialsFromSessionId(String serverSessionId) { + return users.get(serverSessionId); } @Override |
