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