summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java61
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 );
+ }
}
}
}