summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java')
-rw-r--r--src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java126
1 files changed, 80 insertions, 46 deletions
diff --git a/src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java b/src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java
index bcf217f..76f03cf 100644
--- a/src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java
+++ b/src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java
@@ -1,24 +1,22 @@
package org.openslx.satellitedaemon.ftp;
-import java.io.File;
import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
-import java.io.InputStream;
+import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.util.List;
-import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
-import org.apache.commons.net.ftp.FTP;
-import org.apache.commons.net.ftp.FTPSClient;
import org.apache.log4j.Logger;
-import org.openslx.imagemaster.thrift.iface.FtpCredentials;
+import org.openslx.filetransfer.Downloader;
+import org.openslx.imagemaster.thrift.iface.DownloadInfos;
import org.openslx.satellitedaemon.Globals;
import org.openslx.satellitedaemon.Globals.PropInt;
import org.openslx.satellitedaemon.Globals.PropString;
@@ -36,50 +34,86 @@ public class FtpDownloadWorker implements Runnable
log.info( "FtpDownloadWorker: imageList Contains " + imageList.size() + " items." );
for ( DbImage image : imageList ) {
- FtpCredentials ftpc = ThriftConnection.getFtpCredentials( image.guid );
- if ( ftpc == null ) {
- log.error( "The FtpCredentials are null" );
+ DownloadInfos downInfos = ThriftConnection.getDownloadInfos( image );
+ if ( downInfos == null ) {
+ log.error( "The DownloadInfos returned by ThriftConnection class are null" );
}
+ char[] passphrase = Globals.getPropertyString( PropString.FTPSKEYSTOREPWD ).toCharArray();
+ KeyStore keystore;
try {
- TrustManagerFactory trustManagerFactory = TrustManagerFactory
- .getInstance( KeyManagerFactory.getDefaultAlgorithm() );
- KeyStore keystore = KeyStore.getInstance( Globals.getPropertyString( PropString.KEYSTORETYPE ) );
- keystore.load( new FileInputStream( new File(
- Globals.getPropertyString( PropString.FTPSKEYSTOREPATH ) ) ),
- Globals.getPropertyString( PropString.FTPSKEYSTOREPWD ).toCharArray() );
- trustManagerFactory.init( keystore );
- TrustManager trustManager = trustManagerFactory.getTrustManagers()[0];
- FTPSClient ftpClient = new FTPSClient( "SSL", true );
- ftpClient.setTrustManager( trustManager );
- try {
- ftpClient.connect( Globals.getPropertyString( PropString.FTPSERVERIP ), Globals.getPropertyInt( PropInt.FTPPORT ) );
- if ( !ftpClient.login( ftpc.username, ftpc.password ) ) {
- log.error( "FTP problem. Coundn't log in!" );
- }
- File file = new File( "/tmp/" + image.guid + ".vmdk");
- ftpClient.setFileType( FTP.BINARY_FILE_TYPE );
- log.info( "FtpDownloadWorker: ftpc.filename: " + ftpc.filename );
- InputStream is = ftpClient.retrieveFileStream( ftpc.filename );
- FileOutputStream fos = new FileOutputStream( file );
- int b;
- while ((b = is.read()) != -1) {
- fos.write( b );
- }
- is.close();
- fos.close();
- ThriftConnection.finishedDownload( ftpc.username);
+ keystore = KeyStore.getInstance( "JKS" );
+ keystore.load( new FileInputStream( Globals.getPropertyString( PropString.FTPSKEYSTOREPATH ) ), passphrase );
+ TrustManagerFactory tmf = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() );
+ tmf.init( keystore );
+ SSLContext context = SSLContext.getInstance( "SSLv3" );
+ TrustManager[] trustManagers = tmf.getTrustManagers();
+ context.init( null, trustManagers, null );
- } catch (IOException e) {
- log.error("FtpDownloadWorker: Error creating the FileInputStream");
- }
- finally {
- ftpClient.disconnect();
- log.info( "FtpDownloadWorker: ftpClient disconnected" );
- }
- } catch ( NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException e ) {
- log.debug( "FtpDownloadWorker: Problem with Keystore ore FtpsClient creation." );
+ Downloader d = new Downloader( Globals.getPropertyString( PropString.FTPSERVERIP ), Globals.getPropertyInt( PropInt.FTPPORT ), context );
+ d.sendToken( downInfos.token );
+ while ( d.readMetaData() )
+ d.readBinary();
+ } catch ( NoSuchAlgorithmException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch ( CertificateException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch ( FileNotFoundException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch ( IOException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch ( KeyStoreException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch ( KeyManagementException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
+
+
+ // try {
+ // TrustManagerFactory trustManagerFactory = TrustManagerFactory
+ // .getInstance( KeyManagerFactory.getDefaultAlgorithm() );
+ // KeyStore keystore = KeyStore.getInstance( Globals.getPropertyString( PropString.KEYSTORETYPE ) );
+ // keystore.load( new FileInputStream( new File(
+ // Globals.getPropertyString( PropString.FTPSKEYSTOREPATH ) ) ),
+ // Globals.getPropertyString( PropString.FTPSKEYSTOREPWD ).toCharArray() );
+ // trustManagerFactory.init( keystore );
+ // TrustManager trustManager = trustManagerFactory.getTrustManagers()[0];
+ // FTPSClient ftpClient = new FTPSClient( "SSL", true );
+ // ftpClient.setTrustManager( trustManager );
+ // try {
+ // ftpClient.connect( Globals.getPropertyString( PropString.FTPSERVERIP ), Globals.getPropertyInt( PropInt.FTPPORT ) );
+ // if ( !ftpClient.login( ftpc.username, ftpc.password ) ) {
+ // log.error( "FTP problem. Coundn't log in!" );
+ // }
+ // File file = new File( "/tmp/" + image.guid + ".vmdk");
+ // ftpClient.setFileType( FTP.BINARY_FILE_TYPE );
+ // log.info( "FtpDownloadWorker: ftpc.filename: " + ftpc.filename );
+ // InputStream is = ftpClient.retrieveFileStream( ftpc.filename );
+ // FileOutputStream fos = new FileOutputStream( file );
+ // int b;
+ // while ((b = is.read()) != -1) {
+ // fos.write( b );
+ // }
+ // is.close();
+ // fos.close();
+ // ThriftConnection.finishedDownload( ftpc.username);
+ //
+ // } catch (IOException e) {
+ // log.error("FtpDownloadWorker: Error creating the FileInputStream");
+ // }
+ // finally {
+ // ftpClient.disconnect();
+ // log.info( "FtpDownloadWorker: ftpClient disconnected" );
+ // }
+ // } catch ( NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException e ) {
+ // log.debug( "FtpDownloadWorker: Problem with Keystore ore FtpsClient creation." );
+ // }
}
try {
Thread.sleep( 5 * 60 * 1000 );