diff options
author | Nils Schwabe | 2014-04-24 15:26:58 +0200 |
---|---|---|
committer | Nils Schwabe | 2014-04-24 15:26:58 +0200 |
commit | 87d2abae6355cfb9993edb89cc60912d0d8230a5 (patch) | |
tree | 148279b45dc791d2bd6b19e690cff8740158b0dc /src/main/java/org/openslx/imagemaster/server | |
parent | Reformat all files with simon's new layout (diff) | |
download | masterserver-87d2abae6355cfb9993edb89cc60912d0d8230a5.tar.gz masterserver-87d2abae6355cfb9993edb89cc60912d0d8230a5.tar.xz masterserver-87d2abae6355cfb9993edb89cc60912d0d8230a5.zip |
Add FTPS to MasterFtpServer
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/server')
3 files changed, 23 insertions, 15 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java index 30fb0a8..c88bd05 100644 --- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java +++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java @@ -4,6 +4,7 @@ import java.io.File; import org.apache.log4j.Logger; import org.apache.thrift.TException; +import org.openslx.imagemaster.App; import org.openslx.imagemaster.Globals; import org.openslx.imagemaster.db.DbSatellite; import org.openslx.imagemaster.db.ImageProcessor; @@ -100,7 +101,7 @@ public class ApiServer } // create new user - FtpCredentials ftpCredentials = Globals.ftpServer.addUser( serverSessionId ); + FtpCredentials ftpCredentials = App.ftpServer.addUser( serverSessionId ); if ( ftpCredentials == null ) { log.error( "Could not create ftp credentials" ); @@ -108,7 +109,7 @@ public class ApiServer } if ( !ImageProcessor.addImageDataToProcess( imageDescription, ftpCredentials.username ) ) { - Globals.ftpServer.removeUser( serverSessionId ); + App.ftpServer.removeUser( serverSessionId ); throw new TException( "ImageData is not valid." ); } @@ -179,7 +180,7 @@ public class ApiServer } // process the image - String username = Globals.ftpServer.getCredentialsFromSessionId( serverSessionId ).username; + String username = App.ftpServer.getCredentialsFromSessionId( serverSessionId ).username; File userDirectory = new File( Globals.getPropertyString( Globals.PropString.FTPBASEDIR ) + "/" + username ); File[] list = userDirectory.listFiles(); @@ -190,12 +191,12 @@ public class ApiServer log.info( username + " is done with upload" ); // remove user that is not needed anymore - Globals.ftpServer.removeUser( username ); + App.ftpServer.removeUser( username ); log.info( "Removed user: " + username ); ImageProcessor.processImageAfterUpload( username, list[0].getName() ); - Globals.ftpServer.removeUser( serverSessionId ); + App.ftpServer.removeUser( serverSessionId ); return true; } diff --git a/src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java b/src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java index c5fad4f..ba88f33 100644 --- a/src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java +++ b/src/main/java/org/openslx/imagemaster/server/FtpCredentialsScheduler.java @@ -7,6 +7,7 @@ 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; @@ -21,7 +22,7 @@ public class FtpCredentialsScheduler extends TimerTask public void run() { // check all folders - for ( Map.Entry<String, FtpCredentials> entry : Globals.ftpServer.users.entrySet() ) { + 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 ); @@ -32,18 +33,18 @@ public class FtpCredentialsScheduler extends TimerTask if ( ( new Date().getTime() - list[0].lastModified() ) >= timeout ) { log.info( username + "'s files are too old. Deleting him and his folder." ); Util.deleteFolder( dir ); - Globals.ftpServer.removeUser( sessionId ); + 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 ); - Globals.ftpServer.removeUser( sessionId ); + App.ftpServer.removeUser( sessionId ); } else { // check the creation time of the user - if ( ( new Date().getTime() - Globals.ftpServer.timeouts.get( username ).getTime() ) >= timeout ) { + if ( ( new Date().getTime() - App.ftpServer.timeouts.get( username ).getTime() ) >= timeout ) { // remove user and his folder Util.deleteFolder( dir ); - Globals.ftpServer.removeUser( sessionId ); + App.ftpServer.removeUser( sessionId ); log.info( username + " did nothing for too long. Deleting him and his folder" ); } } diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java index f68e909..de0d758 100644 --- a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java +++ b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java @@ -13,6 +13,7 @@ import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.ftplet.Ftplet; import org.apache.ftpserver.ftplet.UserManager; import org.apache.ftpserver.listener.ListenerFactory; +import org.apache.ftpserver.ssl.SslConfigurationFactory; import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor; import org.apache.ftpserver.usermanager.impl.BaseUser; @@ -40,8 +41,17 @@ public class MasterFtpServer implements Runnable FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); + + // config ssl + SslConfigurationFactory sslConfigFactory = new SslConfigurationFactory(); + sslConfigFactory.setKeystoreFile( new File( "./keyfiles/ftp.jks" ) ); + sslConfigFactory.setKeyAlias( "ftp" ); + sslConfigFactory.setKeystorePassword( "password" ); + // set the port of the listener factory.setPort( port ); + factory.setSslConfiguration( sslConfigFactory.createSslConfiguration() ); + factory.setImplicitSsl( true ); // replace the default listener serverFactory.addListener( "default", factory.createListener() ); @@ -51,9 +61,6 @@ public class MasterFtpServer implements Runnable userManagerFactory.setFile( new File( "src/main/properties/ftp.properties" ) ); userManagerFactory.setPasswordEncryptor( new SaltedPasswordEncryptor() ); userManager = userManagerFactory.createUserManager(); - - // create new admin user - //addUser(adminUsername, adminPassword, ftproot, true); serverFactory.setUserManager( userManager ); // add the Ftplet @@ -63,12 +70,11 @@ public class MasterFtpServer implements Runnable // start the server server = serverFactory.createServer(); + ini = true; } public FtpCredentials addUser( final String serverSessionId ) { - // TODO: enable SSL - FtpCredentials ftpCredentials = null; String generatedUser = RandomString.generate( 10, false ); |