summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
diff options
context:
space:
mode:
authorNils Schwabe2014-04-25 14:28:56 +0200
committerNils Schwabe2014-04-25 14:28:56 +0200
commit40d528627efc309681496b47d66558e15eb3fe5e (patch)
tree4cb7ba77b4b55ecb0b29a734c782b68d6926d441 /src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
parentAdd FTPS to MasterFtpServer (diff)
downloadmasterserver-40d528627efc309681496b47d66558e15eb3fe5e.tar.gz
masterserver-40d528627efc309681496b47d66558e15eb3fe5e.tar.xz
masterserver-40d528627efc309681496b47d66558e15eb3fe5e.zip
Finally: Add _real_ server authentication. (this challengeresponse thing)
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java b/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
new file mode 100644
index 0000000..b0b23aa
--- /dev/null
+++ b/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
@@ -0,0 +1,63 @@
+package org.openslx.imagemaster.ftp;
+
+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 );
+ }
+
+}