summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
diff options
context:
space:
mode:
authorNils Schwabe2014-04-28 18:18:59 +0200
committerNils Schwabe2014-04-28 18:18:59 +0200
commit287ad92152c530b400a5405a4672a41d92e4d368 (patch)
tree42dcb2c698672ae371d70a81ea5c49f3280db9c6 /src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
parentAdd remove image from process list (when user gets deleted after timeout) (diff)
downloadmasterserver-287ad92152c530b400a5405a4672a41d92e4d368.tar.gz
masterserver-287ad92152c530b400a5405a4672a41d92e4d368.tar.xz
masterserver-287ad92152c530b400a5405a4672a41d92e4d368.zip
Add ftp users and images in processing list are remembered
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java43
1 files changed, 13 insertions, 30 deletions
diff --git a/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
index 19671e3..e3514f6 100644
--- a/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
+++ b/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
@@ -1,8 +1,6 @@
package org.openslx.imagemaster.ftp;
import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -34,10 +32,8 @@ public class MasterFtpServer implements Runnable
private FtpServer server;
private UserManager userManager;
private Listener listener;
- // key: serverSessionId, value: FtpCredentials
- public final HashMap<String, FtpCredentials> users = new HashMap<>();
// key: ftpUsername, value: createTime
- public final HashMap<String, Long> timeouts = new HashMap<>();
+ public final HashMap<String, Long> users = new HashMap<>();
private boolean ini = false;
public void init( int port )
@@ -66,15 +62,6 @@ public class MasterFtpServer implements Runnable
// create user manager
PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
File userFile = new File( "src/main/properties/ftp.properties" );
- // clear user file to avoid dead users
- PrintWriter writer = null;
- try {
- writer = new PrintWriter(userFile);
- } catch ( FileNotFoundException e ) {
- } finally {
- writer.print("");
- writer.close();
- }
userManagerFactory.setFile( userFile );
userManagerFactory.setPasswordEncryptor( new SaltedPasswordEncryptor() );
userManager = userManagerFactory.createUserManager();
@@ -116,8 +103,9 @@ public class MasterFtpServer implements Runnable
try {
userManager.save( user );
ftpCredentials = new FtpCredentials( generatedUser, generatedPass );
- users.put( serverSessionId, ftpCredentials );
- timeouts.put( ftpCredentials.username, System.currentTimeMillis());
+ synchronized ( users ) {
+ users.put( ftpCredentials.username, System.currentTimeMillis());
+ }
} catch ( FtpException e ) {
}
@@ -127,43 +115,38 @@ public class MasterFtpServer implements Runnable
return ftpCredentials;
}
- public boolean removeUser( final String serverSessionId )
+ public boolean removeUser( final String username )
{
- if ( !users.containsKey( serverSessionId ) )
+ if ( !users.containsKey( username ) )
return false;
try {
- log.info( "Closing session" );
// first find active session and close it
Iterator<FtpIoSession> iter = listener.getActiveSessions().iterator();
while (iter.hasNext()) {
FtpIoSession session = (FtpIoSession) iter.next();
if (session.getUser() == null) continue;
- if (session.getUser().getName() == users.get( serverSessionId ).username) {
+ if (session.getUser().getName() == username) {
session.close();
}
}
- log.info( "Deleting user" );
// afterwards delete user
- userManager.delete( users.get( serverSessionId ).username );
- log.info( "removing user from timeout list" );
- // remove user from both maps
- timeouts.remove( users.remove( serverSessionId ).username );
+ userManager.delete( username );
+ // remove user from map (cache)
+ synchronized ( users ) {
+ users.remove( username );
+ }
return true;
} catch ( FtpException e ) {
return false;
}
}
- public FtpCredentials getCredentialsFromSessionId( String serverSessionId )
- {
- return users.get( serverSessionId );
- }
-
@Override
public void run()
{
try {
+ //if (!ini) throw new Exception("FTP server needs to be initalized.");
log.info( "Starting FTP Sever" );
server.start();
} catch ( FtpException e1 ) {