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; } }