// TODO: rename crative // some kind of check if Socket connection is still running when get FtpCredentials is called, otherwise open new // how: Sketch: make a getClient method. empty the static. getFtpCredentials calls getClient, which checks if every thing is ok, if not make it if not possible blame network 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.ServerAuthenticationException; import org.openslx.imagemaster.thrift.iface.ServerSessionData; import org.openslx.satellitedaemon.util.EncryptWithServerIdPublicKey; public class GetFtpCredentials { private static ImageServer.Client client = 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 ); client = new ImageServer.Client( protocol ); } catch ( TException x ) { x.printStackTrace(); } } public static FtpCredentials getFtpCredentials() throws ServerAuthenticationException { try { 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 ); return client.submitImage( sSD.sessionId, imDat ); } 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(); } catch ( TException e ) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }