diff options
author | Nils Schwabe | 2014-04-22 18:18:09 +0200 |
---|---|---|
committer | Nils Schwabe | 2014-04-22 18:18:09 +0200 |
commit | aa76ff75e6830b35ca2b7171c8c3a81e96ff937c (patch) | |
tree | 2fd580518077d4703a45557409172fd7a6ab37ab | |
parent | Add code styling settings for eclipse (diff) | |
download | masterserver-aa76ff75e6830b35ca2b7171c8c3a81e96ff937c.tar.gz masterserver-aa76ff75e6830b35ca2b7171c8c3a81e96ff937c.tar.xz masterserver-aa76ff75e6830b35ca2b7171c8c3a81e96ff937c.zip |
Added FtpCredentialsScheduler to periodically remove old files and ftp users
4 files changed, 31 insertions, 5 deletions
diff --git a/src/main/java/org/openslx/imagemaster/App.java b/src/main/java/org/openslx/imagemaster/App.java index aba2cd6..8d7f200 100644 --- a/src/main/java/org/openslx/imagemaster/App.java +++ b/src/main/java/org/openslx/imagemaster/App.java @@ -7,6 +7,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; +import org.openslx.imagemaster.server.FtpCredentialsScheduler; import org.openslx.imagemaster.thrift.server.BinaryListener; public class App { @@ -56,6 +57,9 @@ public class App { servers.add(f); f.start(); + // start FtpCredentialsScheduler + FtpCredentialsScheduler.startScheduling(); + // Run more servers // ... // Wait for all servers to die diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java index fc1d9b0..1fcfa49 100644 --- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java +++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java @@ -1,9 +1,7 @@ package org.openslx.imagemaster.server; import java.io.File; -import java.util.HashMap; -import org.apache.ftpserver.ftplet.FtpException; import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.openslx.imagemaster.Globals; @@ -29,7 +27,6 @@ import org.openslx.imagemaster.thrift.iface.ServerAuthenticationException; import org.openslx.imagemaster.thrift.iface.ServerSessionData; import org.openslx.imagemaster.thrift.iface.SessionData; import org.openslx.imagemaster.thrift.iface.UserInfo; -import org.openslx.imagemaster.util.RandomString; /** * API Server This is where all the requests from the outside arrive. We don't diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java index c6592bc..d1ec14f 100644 --- a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java +++ b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java @@ -2,6 +2,7 @@ package org.openslx.imagemaster.server; import java.io.File; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; @@ -25,7 +26,10 @@ 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<>(); + // key: serverSessionId, value: FtpCredentials + public final HashMap<String, FtpCredentials> users = new HashMap<>(); + // key: ftpUsername, value: createTime + public final HashMap<String, Date> timeouts = new HashMap<>(); public MasterFtpServer(int port, String adminUsername, String adminPassword, String ftproot) { FtpServerFactory serverFactory = new FtpServerFactory(); @@ -83,6 +87,7 @@ public class MasterFtpServer implements Runnable { userManager.save(user); ftpCredentials = new FtpCredentials(generatedUser, generatedPass); users.put(serverSessionId, ftpCredentials); + timeouts.put(ftpCredentials.username, new Date()); } catch (FtpException e) { } @@ -97,7 +102,8 @@ public class MasterFtpServer implements Runnable { try { userManager.delete(users.get(serverSessionId).username); - users.remove(serverSessionId); + // remove user from both maps + timeouts.remove(users.remove(serverSessionId).username); return true; } catch (FtpException e) { return false; diff --git a/src/main/java/org/openslx/imagemaster/util/Util.java b/src/main/java/org/openslx/imagemaster/util/Util.java index 4459a3a..9e0f708 100644 --- a/src/main/java/org/openslx/imagemaster/util/Util.java +++ b/src/main/java/org/openslx/imagemaster/util/Util.java @@ -1,5 +1,6 @@ package org.openslx.imagemaster.util; +import java.io.File; import java.util.Random; import org.apache.log4j.Logger; @@ -48,5 +49,23 @@ public class Util { return random.nextInt( n ); } + + /** + * Remove a folder and all contents + * @param folder + */ + public static void deleteFolder(File folder) { + File[] files = folder.listFiles(); + if (files!=null) { + for (File f: files) { + if (f.isDirectory()) { + deleteFolder(f); + } else { + f.delete(); + } + } + } + folder.delete(); + } } |