diff options
| author | Simon Rettberg | 2014-04-24 18:59:35 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2014-04-24 18:59:35 +0200 |
| commit | ed787b6f67954faab790cab107503eac8e6aad3c (patch) | |
| tree | 6f05300170e670ab5db0ccda62bb918d0371b7ad /src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java | |
| parent | Fix name of format style (diff) | |
| parent | Add FTPS to MasterFtpServer (diff) | |
| download | masterserver-ed787b6f67954faab790cab107503eac8e6aad3c.tar.gz masterserver-ed787b6f67954faab790cab107503eac8e6aad3c.tar.xz masterserver-ed787b6f67954faab790cab107503eac8e6aad3c.zip | |
Merge branch 'master' of dnbd3:bwlp/masterserver
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java')
| -rw-r--r-- | src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java b/src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java new file mode 100644 index 0000000..ba88f33 --- /dev/null +++ b/src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java @@ -0,0 +1,63 @@ +package org.openslx.imagemaster.server; + +import java.io.File; +import java.util.Date; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; + +import org.apache.log4j.Logger; +import org.openslx.imagemaster.App; +import org.openslx.imagemaster.Globals; +import org.openslx.imagemaster.thrift.iface.FtpCredentials; +import org.openslx.imagemaster.util.Util; + +public class FtpCredentialsScheduler extends TimerTask +{ + private static Logger log = Logger.getLogger( FtpCredentialsScheduler.class ); + + public static final long timeout = Long.valueOf( Globals.getPropertyInt( Globals.PropInt.FTPTIMEOUT ) ) * 60L * 1000L; // timeout in ms + + @Override + public void run() + { + // check all folders + for ( Map.Entry<String, FtpCredentials> entry : App.ftpServer.users.entrySet() ) { + String sessionId = entry.getKey(); + String username = entry.getValue().username; + File dir = new File( Globals.getPropertyString( Globals.PropString.FTPBASEDIR ) + "/" + username ); + if ( !dir.exists() ) + continue; + File[] list = dir.listFiles(); + if ( list.length == 1 ) { + if ( ( new Date().getTime() - list[0].lastModified() ) >= timeout ) { + log.info( username + "'s files are too old. Deleting him and his folder." ); + Util.deleteFolder( dir ); + App.ftpServer.removeUser( sessionId ); + } + } else if ( list.length > 1 ) { + log.info( username + " uploaded too many files. Deleting his account and his folder." ); + Util.deleteFolder( dir ); + App.ftpServer.removeUser( sessionId ); + } else { + // check the creation time of the user + if ( ( new Date().getTime() - App.ftpServer.timeouts.get( username ).getTime() ) >= timeout ) { + // remove user and his folder + Util.deleteFolder( dir ); + App.ftpServer.removeUser( sessionId ); + log.info( username + " did nothing for too long. Deleting him and his folder" ); + } + } + } + //TODO: remove image from process list + } + + public static void startScheduling() + { + Timer timer = new Timer(); + + // start timer now and fire every 60 seconds + timer.schedule( new FtpCredentialsScheduler(), 0, 60000 ); + } + +} |
