diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java')
| -rw-r--r-- | src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java deleted file mode 100644 index de0d758..0000000 --- a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java +++ /dev/null @@ -1,143 +0,0 @@ -package org.openslx.imagemaster.server; - -import java.io.File; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import org.apache.ftpserver.FtpServer; -import org.apache.ftpserver.FtpServerFactory; -import org.apache.ftpserver.ftplet.Authority; -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; -import org.apache.ftpserver.usermanager.impl.WritePermission; -import org.apache.log4j.Logger; -import org.openslx.imagemaster.Globals; -import org.openslx.imagemaster.thrift.iface.FtpCredentials; -import org.openslx.imagemaster.util.RandomString; - -public class MasterFtpServer implements Runnable -{ - private static Logger log = Logger.getLogger( MasterFtpServer.class ); - private FtpServer server; - private UserManager userManager; - // key: serverSessionId, value: FtpCredentials - public final HashMap<String, FtpCredentials> users = new HashMap<>(); - // key: ftpUsername, value: createTime - public final HashMap<String, Date> timeouts = new HashMap<>(); - private boolean ini = false; - - public void init( int port ) - { - if ( ini ) - return; - - 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() ); - - // create user manager - PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); - userManagerFactory.setFile( new File( "src/main/properties/ftp.properties" ) ); - userManagerFactory.setPasswordEncryptor( new SaltedPasswordEncryptor() ); - userManager = userManagerFactory.createUserManager(); - serverFactory.setUserManager( userManager ); - - // add the Ftplet - HashMap<String, Ftplet> map = new HashMap<String, Ftplet>(); - map.put( "Ftplet1", new MasterFtplet() ); - serverFactory.setFtplets( map ); - - // start the server - server = serverFactory.createServer(); - ini = true; - } - - public FtpCredentials addUser( final String serverSessionId ) - { - FtpCredentials ftpCredentials = null; - - String generatedUser = RandomString.generate( 10, false ); - String generatedPass = RandomString.generate( 16, true ); - - String dir = Globals.getPropertyString( Globals.PropString.FTPBASEDIR ) + "/" - + generatedUser + "/"; - - if ( !new File( dir ).mkdir() ) { - return ftpCredentials; - } - - BaseUser user = new BaseUser(); - user.setName( generatedUser ); - user.setPassword( generatedPass ); - user.setHomeDirectory( dir ); - - List<Authority> authorities = new ArrayList<Authority>(); - authorities.add( new WritePermission() ); - user.setAuthorities( authorities ); - - try { - userManager.save( user ); - ftpCredentials = new FtpCredentials( generatedUser, generatedPass ); - users.put( serverSessionId, ftpCredentials ); - timeouts.put( ftpCredentials.username, new Date() ); - } catch ( FtpException e ) { - } - - log.info( "Generated user/pass: " + generatedUser + "\t" - + generatedPass + "\n with home dir: " + dir ); - - return ftpCredentials; - } - - public boolean removeUser( final String serverSessionId ) - { - if ( !users.containsKey( serverSessionId ) ) - return false; - - try { - userManager.delete( users.get( serverSessionId ).username ); - // remove user from both maps - timeouts.remove( users.remove( serverSessionId ).username ); - return true; - } catch ( FtpException e ) { - return false; - } - } - - public FtpCredentials getCredentialsFromSessionId( String serverSessionId ) - { - return users.get( serverSessionId ); - } - - @Override - public void run() - { - try { - log.info( "Starting FTP Sever" ); - server.start(); - } catch ( FtpException e1 ) { - e1.printStackTrace(); - } - } -} |
