summaryrefslogblamecommitdiffstats
path: root/src/main/java/org/openslx/satellitedaemon/ftp/GetFtpCredentials.java
blob: fff2f7fb46e6faeb225e6b1fbe48ebe81b3eea10 (plain) (tree)
1
                                        




















                                                              
                                                                     





































































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