From 99995b4ab0c18ab6fd59153da6fb9897bbd002bd Mon Sep 17 00:00:00 2001 From: Michael Petretti Date: Thu, 8 May 2014 14:01:56 +0200 Subject: Even prettier. --- src/main/java/org/openslx/satellitedaemon/App.java | 45 ++--------- .../satellitedaemon/ftp/FtpImageUploader.java | 55 +++++++++++++ .../satellitedaemon/ftp/GetFtpCredentials.java | 93 ++++++++++++++++++++++ .../satellitedaemon/util/GetFtpCredentials.java | 92 --------------------- 4 files changed, 154 insertions(+), 131 deletions(-) create mode 100644 src/main/java/org/openslx/satellitedaemon/ftp/FtpImageUploader.java create mode 100644 src/main/java/org/openslx/satellitedaemon/ftp/GetFtpCredentials.java delete mode 100644 src/main/java/org/openslx/satellitedaemon/util/GetFtpCredentials.java diff --git a/src/main/java/org/openslx/satellitedaemon/App.java b/src/main/java/org/openslx/satellitedaemon/App.java index 6df6cff..6c88ece 100644 --- a/src/main/java/org/openslx/satellitedaemon/App.java +++ b/src/main/java/org/openslx/satellitedaemon/App.java @@ -1,25 +1,14 @@ package org.openslx.satellitedaemon; -import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.net.ConnectException; -import java.security.InvalidKeyException; -import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; -import java.security.SignatureException; -import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; - -import org.apache.commons.net.ftp.FTPSClient; import org.openslx.imagemaster.thrift.iface.FtpCredentials; -import org.openslx.satellitedaemon.util.GetFtpCredentials; +import org.openslx.satellitedaemon.ftp.FtpImageUploader; +import org.openslx.satellitedaemon.ftp.GetFtpCredentials; /** * Main class for uploading images from the HS-Server to the Satellite Server. @@ -27,36 +16,14 @@ import org.openslx.satellitedaemon.util.GetFtpCredentials; */ public class App { - public static void main( String[] args ) throws UnrecoverableKeyException, - NoSuchAlgorithmException, CertificateException, - FileNotFoundException, KeyStoreException, IOException, - InvalidKeyException, SignatureException + public static void main( String[] args ) throws NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException { - String nilsIp = "132.230.4.23"; - int ftpPort = 2221; // TODO: A Thread that starts the call for new credentials and the upload // whenever a new image was sceduled in the db. FtpCredentials ftpc = GetFtpCredentials.now(); - FTPSClient ftpClient = new FTPSClient( "SSL", true ); - TrustManagerFactory trustManagerFactory = TrustManagerFactory - .getInstance( KeyManagerFactory.getDefaultAlgorithm() ); - KeyStore keystore = KeyStore.getInstance( "JKS" ); - keystore.load( new FileInputStream( new File( - "/home/michael/satellite-daemon/config/ftpsid.jks" ) ), - "password".toCharArray() ); - trustManagerFactory.init( keystore ); - TrustManager trustManager = trustManagerFactory.getTrustManagers()[0]; - ftpClient.setTrustManager( trustManager ); - try { - ftpClient.connect( nilsIp, ftpPort ); - if ( !ftpClient.login( ftpc.username, ftpc.password ) ) { - throw new ConnectException( "Could not login." ); - } - System.out.println( "Connected to " + nilsIp + ":" + ftpPort - + ". Reply code: " + ftpClient.getReplyCode() ); - } finally { - ftpClient.disconnect(); - } + FtpImageUploader ftpIU = new FtpImageUploader( ftpc ); + ftpIU.connectTest(); + } } diff --git a/src/main/java/org/openslx/satellitedaemon/ftp/FtpImageUploader.java b/src/main/java/org/openslx/satellitedaemon/ftp/FtpImageUploader.java new file mode 100644 index 0000000..db83646 --- /dev/null +++ b/src/main/java/org/openslx/satellitedaemon/ftp/FtpImageUploader.java @@ -0,0 +1,55 @@ +package org.openslx.satellitedaemon.ftp; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.ConnectException; +import java.net.SocketException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; + +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; + +import org.apache.commons.net.ftp.FTPSClient; +import org.openslx.imagemaster.thrift.iface.FtpCredentials; + +public class FtpImageUploader +{ + static String nilsIp = "132.230.4.23"; + static int ftpPort = 2221; + FTPSClient ftpClient = new FTPSClient( "SSL", true ); + FtpCredentials ftpc = null; + + public FtpImageUploader(FtpCredentials ftpCredentials) throws NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException { + TrustManagerFactory trustManagerFactory = TrustManagerFactory + .getInstance( KeyManagerFactory.getDefaultAlgorithm() ); + KeyStore keystore = KeyStore.getInstance( "JKS" ); + keystore.load( new FileInputStream( new File( + "/home/michael/satellite-daemon/config/ftpsid.jks" ) ), + "password".toCharArray() ); + trustManagerFactory.init( keystore ); + TrustManager trustManager = trustManagerFactory.getTrustManagers()[0]; + ftpClient.setTrustManager( trustManager ); + ftpc = ftpCredentials; + + } + + public void connectTest() throws SocketException, IOException { + try { + ftpClient.connect( nilsIp, ftpPort ); + if ( !ftpClient.login( ftpc.username, ftpc.password ) ) { + throw new ConnectException( "Could not login." ); + } + System.out.println( "Connected to " + nilsIp + ":" + ftpPort + + ". Reply code: " + ftpClient.getReplyCode() ); + } finally { + ftpClient.disconnect(); + } + } + +} diff --git a/src/main/java/org/openslx/satellitedaemon/ftp/GetFtpCredentials.java b/src/main/java/org/openslx/satellitedaemon/ftp/GetFtpCredentials.java new file mode 100644 index 0000000..fff2f7f --- /dev/null +++ b/src/main/java/org/openslx/satellitedaemon/ftp/GetFtpCredentials.java @@ -0,0 +1,93 @@ +package org.openslx.satellitedaemon.ftp; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.security.InvalidKeyException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; +import java.util.UUID; + +import org.apache.thrift.TException; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.openslx.imagemaster.thrift.iface.FtpCredentials; +import org.openslx.imagemaster.thrift.iface.ImageData; +import org.openslx.imagemaster.thrift.iface.ImageServer; +import org.openslx.imagemaster.thrift.iface.ServerSessionData; +import org.openslx.satellitedaemon.util.EncryptWithServerIdPublicKey; + +public class GetFtpCredentials +{ + private static FtpCredentials ftpc = null; + // TODO: All of the Strings and int's should not fall from sky. + static String nilsIp = "132.230.4.23"; + static int thriftPort = 9090; + + /** + * Handles the authentication with the Satellite Server and sends the FtpCredentials, which + * are necessary for the upload of the image. + */ + static { + try { + TTransport transport; + transport = new TSocket( nilsIp, thriftPort ); // Nils IP + transport.open(); + TProtocol protocol = new TBinaryProtocol( transport ); + + ImageServer.Client client = new ImageServer.Client( protocol ); + String toEncrypt = client.startServerAuthentication( "uni-freiburg.de" ); + // System.out.println( toEncrypt ); + EncryptWithServerIdPublicKey rse = new EncryptWithServerIdPublicKey( "serverid", "password", + "/home/michael/satellite-daemon/config/serverid.jks" ); + byte[] byteArray = rse.encryptString( toEncrypt ); + ServerSessionData sSD = client.serverAuthenticate( + "uni-freiburg.de", ByteBuffer.wrap( byteArray ) ); + + // TODO: Should be able to get the necessary strings ect. from the DB. + ImageData imDat = new ImageData( UUID.randomUUID().toString(), 113, + "TestImage", System.currentTimeMillis(), System.currentTimeMillis(), "me", "anyThing", + true, false, "theBest", "theVeryBest", 1024 ); + + ftpc = client.submitImage( sSD.sessionId, imDat ); + + transport.close(); + } catch ( TException x ) { + x.printStackTrace(); + } catch ( InvalidKeyException e ) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch ( NoSuchAlgorithmException e ) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch ( SignatureException e ) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch ( UnrecoverableKeyException 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 ( KeyStoreException e ) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch ( IOException e ) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public static FtpCredentials now() + { + return ftpc; + } +} diff --git a/src/main/java/org/openslx/satellitedaemon/util/GetFtpCredentials.java b/src/main/java/org/openslx/satellitedaemon/util/GetFtpCredentials.java deleted file mode 100644 index 27fea93..0000000 --- a/src/main/java/org/openslx/satellitedaemon/util/GetFtpCredentials.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.openslx.satellitedaemon.util; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.security.InvalidKeyException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.SignatureException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; -import java.util.UUID; - -import org.apache.thrift.TException; -import org.apache.thrift.protocol.TBinaryProtocol; -import org.apache.thrift.protocol.TProtocol; -import org.apache.thrift.transport.TSocket; -import org.apache.thrift.transport.TTransport; -import org.openslx.imagemaster.thrift.iface.FtpCredentials; -import org.openslx.imagemaster.thrift.iface.ImageData; -import org.openslx.imagemaster.thrift.iface.ImageServer; -import org.openslx.imagemaster.thrift.iface.ServerSessionData; - -public class GetFtpCredentials -{ - private static FtpCredentials ftpc = null; - // TODO: All of the Strings and int's should not fall from sky. - static String nilsIp = "132.230.4.23"; - static int thriftPort = 9090; - - /** - * Handles the authentication with the Satellite Server and sends the FtpCredentials, which - * are necessary for the upload of the image. - */ - static { - try { - TTransport transport; - transport = new TSocket( nilsIp, thriftPort ); // Nils IP - transport.open(); - TProtocol protocol = new TBinaryProtocol( transport ); - - ImageServer.Client client = new ImageServer.Client( protocol ); - String toEncrypt = client.startServerAuthentication( "uni-freiburg.de" ); - // System.out.println( toEncrypt ); - EncryptWithServerIdPublicKey rse = new EncryptWithServerIdPublicKey( "serverid", "password", - "/home/michael/satellite-daemon/config/serverid.jks" ); - byte[] byteArray = rse.encryptString( toEncrypt ); - ServerSessionData sSD = client.serverAuthenticate( - "uni-freiburg.de", ByteBuffer.wrap( byteArray ) ); - - // TODO: Should be able to get the necessary strings ect. from the DB. - ImageData imDat = new ImageData( UUID.randomUUID().toString(), 113, - "TestImage", System.currentTimeMillis(), System.currentTimeMillis(), "me", "anyThing", - true, false, "theBest", "theVeryBest", 1024 ); - - ftpc = client.submitImage( sSD.sessionId, imDat ); - - transport.close(); - } catch ( TException x ) { - x.printStackTrace(); - } catch ( InvalidKeyException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch ( NoSuchAlgorithmException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch ( SignatureException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch ( UnrecoverableKeyException 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 ( KeyStoreException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch ( IOException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static FtpCredentials now() - { - return ftpc; - } -} -- cgit v1.2.3-55-g7522