From 859c07eba2b19a11340e473340e408c0a24380de Mon Sep 17 00:00:00 2001 From: Nils Schwabe Date: Mon, 18 Aug 2014 15:34:18 +0200 Subject: Change implementation of the configuration in Global.java Add sample config file --- .../filetransfer/ThriftConnection.java | 359 +++++++++++---------- 1 file changed, 186 insertions(+), 173 deletions(-) (limited to 'src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java') 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. + * 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. * * @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 from CRCFile.getCRCs() only + // .submitImage needs the List 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 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 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 range ) - { + public static DownloadInfos getDownloadInfos(DbImage imDat, + List 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; } -- cgit v1.2.3-55-g7522