diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java | 61 |
1 files changed, 30 insertions, 31 deletions
diff --git a/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java b/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java index 62d16dc..8cd72df 100644 --- a/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java +++ b/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java @@ -9,50 +9,49 @@ 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 - - static { - log.info( "timeout is:" + timeout ); - } @Override public void run() { - // check all folders - for ( Map.Entry<String, FtpCredentials> entry : App.ftpServer.users.entrySet() ) { - if (entry == null) continue; - 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 ); - ImageProcessor.removeImageFromProcessList( username ); - } - } 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 ); - ImageProcessor.removeImageFromProcessList( username ); - } else { - // check the creation time of the user - if ( ( System.currentTimeMillis() - App.ftpServer.timeouts.get( username ) ) >= timeout ) { - log.info( username + " did nothing for too long. Deleting him and his folder" ); + synchronized ( App.ftpServer.users ) { + // check all folders + for ( Map.Entry<String, Long> entry : App.ftpServer.users.entrySet() ) { + if ( entry == null ) + continue; + String username = entry.getKey(); + 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 ) { + // TODO: test if his file is complete by checking the file size + log.info( username + "'s files are too old. Deleting him and his folder." ); + Util.deleteFolder( dir ); + App.ftpServer.removeUser( username ); + ImageProcessor.removeImageFromProcessList( username ); + } + } else if ( list.length > 1 ) { + log.info( "User '" + username + "' uploaded too many files. Deleting his account and his folder." ); Util.deleteFolder( dir ); - App.ftpServer.removeUser( sessionId ); + App.ftpServer.removeUser( username ); ImageProcessor.removeImageFromProcessList( username ); + } else { + // check the creation time of the user + if ( ( System.currentTimeMillis() - App.ftpServer.users.get( username ) ) >= timeout ) { + log.info( username + " did nothing for too long. Deleting him and his folder" ); + Util.deleteFolder( dir ); + App.ftpServer.removeUser( username ); + ImageProcessor.removeImageFromProcessList( username ); + } } } } |