summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java
diff options
context:
space:
mode:
authorNils Schwabe2014-08-18 15:34:18 +0200
committerNils Schwabe2014-08-18 15:34:18 +0200
commit859c07eba2b19a11340e473340e408c0a24380de (patch)
treec4eb7806cd4dbe3fec767490d2b03cc5b3e14dbb /src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java
parentChange TSocket to TNonBlockingServerTransport (diff)
downloadsatellite-daemon-859c07eba2b19a11340e473340e408c0a24380de.tar.gz
satellite-daemon-859c07eba2b19a11340e473340e408c0a24380de.tar.xz
satellite-daemon-859c07eba2b19a11340e473340e408c0a24380de.zip
Change implementation of the configuration in Global.java
Add sample config file
Diffstat (limited to 'src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java')
-rw-r--r--src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java359
1 files changed, 186 insertions, 173 deletions
diff --git a/src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java b/src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java
index 4b95f9b..b813f15 100644
--- a/src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java
+++ b/src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java
@@ -31,8 +31,6 @@ import org.openslx.imagemaster.thrift.iface.UploadError;
import org.openslx.imagemaster.thrift.iface.UploadException;
import org.openslx.imagemaster.thrift.iface.UploadInfos;
import org.openslx.satellitedaemon.Globals;
-import org.openslx.satellitedaemon.Globals.PropInt;
-import org.openslx.satellitedaemon.Globals.PropString;
import org.openslx.satellitedaemon.db.DbImage;
import org.openslx.satellitedaemon.util.EncryptWithServerIdPublicKey;
@@ -40,14 +38,13 @@ import org.openslx.satellitedaemon.util.EncryptWithServerIdPublicKey;
/***********************************************************************************************/
/**
- * Handles the authentication with the Satellite Server and sends the FILTRANSFERCredentials, which
- * are necessary for the upload of the image.
+ * Handles the authentication with the Satellite Server and sends the
+ * FILTRANSFERCredentials, which are necessary for the upload of the image.
*/
-public class ThriftConnection
-{
+public class ThriftConnection {
private static ImageServer.Client client = null;
private static ServerSessionData sSD = null;
- private static Logger log = Logger.getLogger( ThriftConnection.class );
+ private static Logger log = Logger.getLogger(ThriftConnection.class);
private static CrcFile crc = null;
/***********************************************************************************************/
@@ -56,93 +53,96 @@ public class ThriftConnection
*
* !! on the first Call !!
*
- * when the CRCsum need to be transfered.
- * The method calls getConnection() to check if the connection is ok
- * and to get the ServerSessionData. If connection is ok, it calls
- * submitImage with CRCsum in List<Integer>.
+ * when the CRCsum need to be transfered. The method calls getConnection()
+ * to check if the connection is ok and to get the ServerSessionData. If
+ * connection is ok, it calls submitImage with CRCsum in List<Integer>.
*
* @return returns 'null' if there is a problem.
*/
- public static UploadInfos getUploadInfos( ImageData imDat, String filename )
- {
+ public static UploadInfos getUploadInfos(ImageData imDat, String filename) {
ImageServer.Client theClient = null;
try {
theClient = getConnection();
- if ( theClient == null ) {
- log.error( "Client was null!" );
+ if (theClient == null) {
+ log.error("Client was null!");
return null;
}
- // .submitImage needs the List<Integer> from CRCFile.getCRCs() only
+ // .submitImage needs the List<Integer> from CRCFile.getCRCs() only
// on the first time called. null afterwards.
- log.info( "First call of submitImage following..." );
- crc = new CrcFile( filename );
- log.info( "Made CRCFile from " + filename );
- log.info( "crc.getCrcSums( ).size = " + crc.getCrcSums().size() );
- // log.info( "crc.getMasterSum() : " + crc.getMasterSum() );
- // for ( int i = 0; i < crc.getCrcSums().size() - 1; i++ ) {
- // log.info( "crc.getCRCSum() : " + crc.getCRCSum( i ) );
- // }
- return theClient.submitImage( sSD.sessionId, imDat, crc.getCrcSums() );
- } catch ( ImageDataException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( ImageDataError.INVALID_DATA ) ) {
- // Data in the db is not valid
+ log.info("First call of submitImage following...");
+ crc = new CrcFile(filename);
+ log.info("Made CRCFile from " + filename);
+ log.info("crc.getCrcSums( ).size = " + crc.getCrcSums().size());
+ // log.info( "crc.getMasterSum() : " + crc.getMasterSum() );
+ // for ( int i = 0; i < crc.getCrcSums().size() - 1; i++ ) {
+ // log.info( "crc.getCRCSum() : " + crc.getCRCSum( i ) );
+ // }
+ return theClient
+ .submitImage(sSD.sessionId, imDat, crc.getCrcSums());
+ } catch (ImageDataException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(ImageDataError.INVALID_DATA)) {
+ // Data in the db is not valid
// TODO: add e.message into DB;
} else {
e.printStackTrace();
}
- } catch ( UploadException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( UploadError.BROKEN_BLOCK ) ) {
+ } catch (UploadException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(UploadError.BROKEN_BLOCK)) {
// A Block was transmitted 20 times unsuccessfully.
// TODO: Mark the Image as corrupted.
- } else if ( e.getNumber().equals( UploadError.INVALID_CRC ) ) {
+ } else if (e.getNumber().equals(UploadError.INVALID_CRC)) {
// The CRC sum contained errors
- crc = new CrcFile( filename );
+ crc = new CrcFile(filename);
try {
- if ( !crc.isValid() ) {
- //TODO: Mark CRC-file as corrupted.
+ if (!crc.isValid()) {
+ // TODO: Mark CRC-file as corrupted.
}
- } catch ( IOException e1 ) {
- log.error( "IOERROR, while reading from CRC File" + filename );
+ } catch (IOException e1) {
+ log.error("IOERROR, while reading from CRC File" + filename);
}
} else {
e.printStackTrace();
}
- } catch ( AuthorizationException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( AuthorizationError.NOT_AUTHENTICATED ) ) {
+ } catch (AuthorizationException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(
+ AuthorizationError.NOT_AUTHENTICATED)) {
// SessionID is not valid
// TODO: Code for new SSID
- } else if ( e.getNumber().equals( AuthorizationError.NO_PERMISSION ) ) {
- //Gibts noch gar nicht
+ } else if (e.getNumber().equals(AuthorizationError.NO_PERMISSION)) {
+ // Gibts noch gar nicht
} else {
e.printStackTrace();
}
- } catch ( UnrecoverableKeyException e ) {
- log.error( "UnrecoverableKeyException" );
+ } catch (UnrecoverableKeyException e) {
+ log.error("UnrecoverableKeyException");
e.printStackTrace();
- } catch ( InvalidKeyException e ) {
- log.error( "InvalidKeyException" );
+ } catch (InvalidKeyException e) {
+ log.error("InvalidKeyException");
e.printStackTrace();
- } catch ( NoSuchAlgorithmException e ) {
- log.error( "NoSuchAlgorithmException" );
+ } catch (NoSuchAlgorithmException e) {
+ log.error("NoSuchAlgorithmException");
e.printStackTrace();
- } catch ( CertificateException e ) {
- log.error( "CertificateException" );
+ } catch (CertificateException e) {
+ log.error("CertificateException");
e.printStackTrace();
- } catch ( FileNotFoundException e ) {
- log.error( "FileNotFoundException" );
+ } catch (FileNotFoundException e) {
+ log.error("FileNotFoundException");
e.printStackTrace();
- } catch ( KeyStoreException e ) {
- log.error( "KeyStoreException" );
+ } catch (KeyStoreException e) {
+ log.error("KeyStoreException");
e.printStackTrace();
- } catch ( SignatureException e ) {
- log.error( "SignatureException" );
+ } catch (SignatureException e) {
+ log.error("SignatureException");
e.printStackTrace();
- } catch ( IOException e ) {
- log.error( "IOException" );
+ } catch (IOException e) {
+ log.error("IOException");
e.printStackTrace();
- } catch ( TException e ) {
- log.error( "TException" );
+ } catch (TException e) {
+ log.error("TException");
e.printStackTrace();
}
return null;
@@ -150,83 +150,88 @@ public class ThriftConnection
/***********************************************************************************************/
/**
- * Method for getting UploadeInfos when CRCsum was already transfered on first call.
- * The method calls getConnection() to check if the connection is ok
- * and to get the ServerSessionData. If connection is ok, it calls
+ * Method for getting UploadeInfos when CRCsum was already transfered on
+ * first call. The method calls getConnection() to check if the connection
+ * is ok and to get the ServerSessionData. If connection is ok, it calls
* submitImage with sSD.sessionId, imDat and !!null!!
*
* @return returns 'null' if there is a problem.
*/
- public static UploadInfos getUploadInfos( ImageData imDat )
- {
+ public static UploadInfos getUploadInfos(ImageData imDat) {
ImageServer.Client theClient = null;
try {
theClient = getConnection();
- if ( theClient == null ) {
- log.error( "Client was null!" );
+ if (theClient == null) {
+ log.error("Client was null!");
return null;
}
- // .submitImage needs the List<Integer> from CRCFile.getCRCs() only
- // on the first time called. null afterwards. --Was the plan. So far not working I guess.
- return theClient.submitImage( sSD.sessionId, imDat, crc.getCrcSums() );
- } catch ( ImageDataException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( ImageDataError.INVALID_DATA ) ) {
- // Data in the db is not valid
- //TODO: add e.message into DB;
+ // .submitImage needs the List<Integer> from CRCFile.getCRCs() only
+ // on the first time called. null afterwards. --Was the plan. So far
+ // not working I guess.
+ return theClient
+ .submitImage(sSD.sessionId, imDat, crc.getCrcSums());
+ } catch (ImageDataException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(ImageDataError.INVALID_DATA)) {
+ // Data in the db is not valid
+ // TODO: add e.message into DB;
} else {
e.printStackTrace();
}
- } catch ( UploadException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( UploadError.BROKEN_BLOCK ) ) {
+ } catch (UploadException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(UploadError.BROKEN_BLOCK)) {
// A Block was transmitted 20 times unsuccessfully.
// TODO: Mark the Image as corrupted.
- } else if ( e.getNumber().equals( UploadError.INVALID_CRC ) ) {
+ } else if (e.getNumber().equals(UploadError.INVALID_CRC)) {
// The CRC sum contained errors
try {
- if ( !crc.isValid() ) {
- //TODO: Mark CRC-file as corrupted.
+ if (!crc.isValid()) {
+ // TODO: Mark CRC-file as corrupted.
}
- } catch ( IOException e1 ) {
- log.error( "IOERROR, while reading from CRC File" );
+ } catch (IOException e1) {
+ log.error("IOERROR, while reading from CRC File");
}
} else {
e.printStackTrace();
}
- } catch ( AuthorizationException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( AuthorizationError.NOT_AUTHENTICATED ) ) {
+ } catch (AuthorizationException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(
+ AuthorizationError.NOT_AUTHENTICATED)) {
// SessionID is not valid
// TODO: Code for new SSID
- } else if ( e.getNumber().equals( AuthorizationError.NO_PERMISSION ) ) {
+ } else if (e.getNumber().equals(AuthorizationError.NO_PERMISSION)) {
} else {
e.printStackTrace();
}
- } catch ( UnrecoverableKeyException e ) {
- log.error( "UnrecoverableKeyException" );
+ } catch (UnrecoverableKeyException e) {
+ log.error("UnrecoverableKeyException");
e.printStackTrace();
- } catch ( InvalidKeyException e ) {
- log.error( "InvalidKeyException" );
+ } catch (InvalidKeyException e) {
+ log.error("InvalidKeyException");
e.printStackTrace();
- } catch ( NoSuchAlgorithmException e ) {
- log.error( "NoSuchAlgorithmException" );
+ } catch (NoSuchAlgorithmException e) {
+ log.error("NoSuchAlgorithmException");
e.printStackTrace();
- } catch ( CertificateException e ) {
- log.error( "CertificateException" );
+ } catch (CertificateException e) {
+ log.error("CertificateException");
e.printStackTrace();
- } catch ( FileNotFoundException e ) {
- log.error( "FileNotFoundException" );
+ } catch (FileNotFoundException e) {
+ log.error("FileNotFoundException");
e.printStackTrace();
- } catch ( KeyStoreException e ) {
- log.error( "KeyStoreException" );
+ } catch (KeyStoreException e) {
+ log.error("KeyStoreException");
e.printStackTrace();
- } catch ( SignatureException e ) {
- log.error( "SignatureException" );
+ } catch (SignatureException e) {
+ log.error("SignatureException");
e.printStackTrace();
- } catch ( IOException e ) {
- log.error( "IOException" );
+ } catch (IOException e) {
+ log.error("IOException");
e.printStackTrace();
- } catch ( TException e ) {
- log.error( "TException" );
+ } catch (TException e) {
+ log.error("TException");
e.printStackTrace();
}
return null;
@@ -239,63 +244,67 @@ public class ThriftConnection
*
* @return returns 'null' if there is a problem.
*/
- public static DownloadInfos getDownloadInfos( DbImage imDat, List<Integer> range )
- {
+ public static DownloadInfos getDownloadInfos(DbImage imDat,
+ List<Integer> range) {
ImageServer.Client theClient = null;
try {
theClient = getConnection();
- if ( theClient == null ) {
- log.error( "Client was null!" );
+ if (theClient == null) {
+ log.error("Client was null!");
return null;
}
- return theClient.getImage( imDat.guid, sSD.sessionId, range );
- } catch ( ImageDataException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( ImageDataError.INVALID_DATA ) ) {
- // Data in the db is not valid
- //TODO: add e.message into DB;
- } else if ( e.getNumber().equals( ImageDataError.UNKNOWN_IMAGE ) ) {
+ return theClient.getImage(imDat.guid, sSD.sessionId, range);
+ } catch (ImageDataException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(ImageDataError.INVALID_DATA)) {
+ // Data in the db is not valid
+ // TODO: add e.message into DB;
+ } else if (e.getNumber().equals(ImageDataError.UNKNOWN_IMAGE)) {
// The image requested is not known.
- //TODO: change field image_syncMode, so the image is not asked for again.
+ // TODO: change field image_syncMode, so the image is not asked
+ // for again.
// Plus add a note in some way to mark as unknown by Server
} else {
e.printStackTrace();
}
- } catch ( AuthorizationException e ) {
- if ( e.isSetNumber() && e.getNumber().equals( AuthorizationError.NOT_AUTHENTICATED ) ) {
+ } catch (AuthorizationException e) {
+ if (e.isSetNumber()
+ && e.getNumber().equals(
+ AuthorizationError.NOT_AUTHENTICATED)) {
// SessionID is not valid
// TODO: Code for new SSID
- } else if ( e.getNumber().equals( AuthorizationError.NO_PERMISSION ) ) {
+ } else if (e.getNumber().equals(AuthorizationError.NO_PERMISSION)) {
} else {
e.printStackTrace();
}
- } catch ( UnrecoverableKeyException e ) {
- log.error( "UnrecoverableKeyException" );
+ } catch (UnrecoverableKeyException e) {
+ log.error("UnrecoverableKeyException");
e.printStackTrace();
- } catch ( InvalidKeyException e ) {
- log.error( "InvalidKeyException" );
+ } catch (InvalidKeyException e) {
+ log.error("InvalidKeyException");
e.printStackTrace();
- } catch ( NoSuchAlgorithmException e ) {
- log.error( "NoSuchAlgorithmException" );
+ } catch (NoSuchAlgorithmException e) {
+ log.error("NoSuchAlgorithmException");
e.printStackTrace();
- } catch ( CertificateException e ) {
- log.error( "CertificateException" );
+ } catch (CertificateException e) {
+ log.error("CertificateException");
e.printStackTrace();
- } catch ( FileNotFoundException e ) {
- log.error( "FileNotFoundException" );
+ } catch (FileNotFoundException e) {
+ log.error("FileNotFoundException");
e.printStackTrace();
- } catch ( KeyStoreException e ) {
- log.error( "KeyStoreException" );
+ } catch (KeyStoreException e) {
+ log.error("KeyStoreException");
e.printStackTrace();
- } catch ( SignatureException e ) {
- log.error( "SignatureException" );
+ } catch (SignatureException e) {
+ log.error("SignatureException");
e.printStackTrace();
- } catch ( IOException e ) {
- log.error( "IOException" );
+ } catch (IOException e) {
+ log.error("IOException");
e.printStackTrace();
- } catch ( TException e ) {
- log.error( "TException" );
+ } catch (TException e) {
+ log.error("TException");
e.printStackTrace();
}
return null;
@@ -310,57 +319,60 @@ public class ThriftConnection
* @return returns the client if successful.
*/
private static ImageServer.Client getConnection()
- throws UnrecoverableKeyException, NoSuchAlgorithmException, CertificateException,
- FileNotFoundException, KeyStoreException, IOException, InvalidKeyException, SignatureException
- {
+ throws UnrecoverableKeyException, NoSuchAlgorithmException,
+ CertificateException, FileNotFoundException, KeyStoreException,
+ IOException, InvalidKeyException, SignatureException {
ImageServer.Client theClient = null;
boolean isAuthenticated = false;
- if ( client == null ) {
- log.info( "The global client was null. Making a new client ..." );
+ if (client == null) {
+ log.info("The global client was null. Making a new client ...");
theClient = newClient();
- if ( theClient == null ) {
- log.debug( "ThriftConnection: The client was null after newClient()" );
+ if (theClient == null) {
+ log.debug("ThriftConnection: The client was null after newClient()");
return null;
}
} else {
- log.info( "The global Client was already used. Setting isAuthenticated = true." );
+ log.info("The global Client was already used. Setting isAuthenticated = true.");
theClient = client;
isAuthenticated = true;
}
- // try {
- // isAuthenticated = theClient.ping();
- // } catch ( TException x ) {
- // theClient = newClient();
- // if ( theClient == null ) {
- // return null;
- // }
- // }
- if ( !isAuthenticated ) {
- log.info( "ThriftConnection: Client not yet Authenticated. Trying..." );
+ // try {
+ // isAuthenticated = theClient.ping();
+ // } catch ( TException x ) {
+ // theClient = newClient();
+ // if ( theClient == null ) {
+ // return null;
+ // }
+ // }
+ if (!isAuthenticated) {
+ log.info("ThriftConnection: Client not yet Authenticated. Trying...");
String toEncrypt;
- if ( theClient == null ) {
- log.debug( "The client was null" );
+ if (theClient == null) {
+ log.debug("The client was null");
return null;
}
try {
- toEncrypt = theClient.startServerAuthentication( Globals.getPropertyString( PropString.THRIFTORGANIZATIONNAME ) );
- log.info( "The random String we want to encrypt: " + toEncrypt );
- EncryptWithServerIdPublicKey rse = new EncryptWithServerIdPublicKey( Globals.getPropertyString( PropString.RNDSTRINGENCRYPTALIAS ),
- Globals.getPropertyString( PropString.RNDSTRINGENCRYPTPASSWORD ),
- Globals.getPropertyString( PropString.RNDSTRINGENCRYPTPATH ) );
- byte[] byteArray = rse.encryptString( toEncrypt );
+ toEncrypt = theClient.startServerAuthentication(Globals
+ .getOrganizationName());
+ log.info("The random String we want to encrypt: " + toEncrypt);
+ EncryptWithServerIdPublicKey rse = new EncryptWithServerIdPublicKey(
+ Globals.getThriftKeystoreAlias(),
+ Globals.getThriftKeystorePassword(),
+ Globals.getThriftKeystorePath());
+ byte[] byteArray = rse.encryptString(toEncrypt);
sSD = theClient.serverAuthenticate(
- Globals.getPropertyString( PropString.THRIFTORGANIZATIONNAME ), ByteBuffer.wrap( byteArray ) );
- } catch ( ServerAuthenticationException e ) {
- log.error( "ThriftConnection: ServerAuthenticationException: Server Authetication was not sucessful." );
+ Globals.getOrganizationName(),
+ ByteBuffer.wrap(byteArray));
+ } catch (ServerAuthenticationException e) {
+ log.error("ThriftConnection: ServerAuthenticationException: Server Authetication was not sucessful.");
e.printStackTrace();
return null;
- } catch ( TException e ) {
- log.error( "ThriftConnection: TException: Server Authetication was not sucessful." );
+ } catch (TException e) {
+ log.error("ThriftConnection: TException: Server Authetication was not sucessful.");
e.printStackTrace();
return null;
}
- log.info( "is Authenticated." );
+ log.info("is Authenticated.");
}
client = theClient;
@@ -371,20 +383,21 @@ public class ThriftConnection
/**
*
* @return
- * @throws IOException
+ * @throws IOException
*/
- private static ImageServer.Client newClient() throws IOException
- {
+ private static ImageServer.Client newClient() throws IOException {
ImageServer.Client newClient = null;
try {
TTransport transport;
- transport = new TNonblockingSocket( Globals.getPropertyString( PropString.FILETRANSFERSERVERIP ), Globals.getPropertyInt( PropInt.THRIFTPORT ) );
+ transport = new TNonblockingSocket(
+ Globals.getMasterserverHost(),
+ Globals.getThriftPort());
transport.open();
- TProtocol protocol = new TBinaryProtocol( transport );
- newClient = new ImageServer.Client( protocol );
- log.debug( "ThriftConnection: Made a new Client" );
- } catch ( TException x ) {
- log.error( "ThriftConnection coudn't create new client." );
+ TProtocol protocol = new TBinaryProtocol(transport);
+ newClient = new ImageServer.Client(protocol);
+ log.debug("ThriftConnection: Made a new Client");
+ } catch (TException x) {
+ log.error("ThriftConnection coudn't create new client.");
x.printStackTrace();
return null;
}