summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/satellitedaemon
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/satellitedaemon')
-rw-r--r--src/main/java/org/openslx/satellitedaemon/App.java56
-rw-r--r--src/main/java/org/openslx/satellitedaemon/ftp/FtpUpDownUtil.java88
-rw-r--r--src/main/java/org/openslx/satellitedaemon/util/RndStringEncrypt.java50
3 files changed, 194 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/satellitedaemon/App.java b/src/main/java/org/openslx/satellitedaemon/App.java
new file mode 100644
index 0000000..9eb1cd6
--- /dev/null
+++ b/src/main/java/org/openslx/satellitedaemon/App.java
@@ -0,0 +1,56 @@
+package org.openslx.satellitedaemon;
+
+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.RndStringEncrypt;
+
+/**
+ * HS Server.
+ *
+ */
+public class App {
+ public static void main(String[] args) throws UnrecoverableKeyException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, KeyStoreException, IOException, InvalidKeyException, SignatureException {
+ try {
+ TTransport transport;
+
+ transport = new TSocket("132.230.4.23", 9090); //Nils IP
+ transport.open();
+
+ TProtocol protocol = new TBinaryProtocol(transport);
+ ImageServer.Client client = new ImageServer.Client(
+ protocol);
+
+ String rnd = client.startServerAuthentication("uni-freiburg.de");
+ System.out.println(rnd);
+
+ RndStringEncrypt rse = new RndStringEncrypt("serverid", "password", "/home/michael/satellite-daemon/config/serverid.jks");
+ byte[] byteArray = rse.encryptRndString(rnd);
+ ServerSessionData sSD = client.serverAuthenticate("uni-freiburg.de", ByteBuffer.wrap(byteArray));
+ System.out.println(sSD.sessionId);
+ ImageData imDat = new ImageData(UUID.randomUUID().toString(), 113, "TestImage", 100, 105, "me", "anyThing", true, false, "theBest", "theVeryBest", 1024 );
+ FtpCredentials ftpc = client.submitImage(sSD.sessionId, imDat);
+
+ transport.close();
+ } catch (TException x) {
+ x.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/org/openslx/satellitedaemon/ftp/FtpUpDownUtil.java b/src/main/java/org/openslx/satellitedaemon/ftp/FtpUpDownUtil.java
new file mode 100644
index 0000000..d83c0ea
--- /dev/null
+++ b/src/main/java/org/openslx/satellitedaemon/ftp/FtpUpDownUtil.java
@@ -0,0 +1,88 @@
+package org.openslx.satellitedaemon.ftp;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.apache.commons.net.ftp.FTPClient;
+
+public class FtpUpDownUtil {
+ /**
+ * FTP-Dateienliste.
+ * @return String-Array der Dateinamen auf dem FTP-Server
+ */
+ public static String[] list( String host, int port, String usr, String pwd ) throws IOException
+ {
+ FTPClient ftpClient = new FTPClient();
+ String[] filenameList;
+
+ try {
+ ftpClient.connect( host, port );
+ ftpClient.login( usr, pwd );
+ filenameList = ftpClient.listNames();
+ ftpClient.logout();
+ } finally {
+ ftpClient.disconnect();
+ }
+
+ return filenameList;
+ }
+
+ /**
+ * FTP-Client-Download.
+ * @return true falls ok
+ */
+ public static boolean download( String localResultFile, String remoteSourceFile,
+ String host, int port, String usr, String pwd, boolean showMessages ) throws IOException
+ {
+ FTPClient ftpClient = new FTPClient();
+ FileOutputStream fos = null;
+ boolean resultOk = true;
+
+ try {
+ ftpClient.connect( host, port );
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ resultOk &= ftpClient.login( usr, pwd );
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ fos = new FileOutputStream( localResultFile );
+ resultOk &= ftpClient.retrieveFile( remoteSourceFile, fos );
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ resultOk &= ftpClient.logout();
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ } finally {
+ try { if( fos != null ) { fos.close(); } } catch( IOException e ) {/* nothing to do */}
+ ftpClient.disconnect();
+ }
+
+ return resultOk;
+ }
+
+ /**
+ * FTP-Client-Upload.
+ * @return true falls ok
+ */
+ public static boolean upload( String localSourceFile, String remoteResultFile,
+ String host, int port, String usr, String pwd, boolean showMessages ) throws IOException
+ {
+ FTPClient ftpClient = new FTPClient();
+ FileInputStream fis = null;
+ boolean resultOk = true;
+
+ try {
+ ftpClient.connect( host, port );
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ resultOk &= ftpClient.login( usr, pwd );
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ fis = new FileInputStream( localSourceFile );
+ resultOk &= ftpClient.storeFile( remoteResultFile, fis );
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ resultOk &= ftpClient.logout();
+ if( showMessages ) { System.out.println( ftpClient.getReplyString() ); }
+ } finally {
+ try { if( fis != null ) { fis.close(); } } catch( IOException e ) {/* nothing to do */}
+ ftpClient.disconnect();
+ }
+
+ return resultOk;
+ }
+}
diff --git a/src/main/java/org/openslx/satellitedaemon/util/RndStringEncrypt.java b/src/main/java/org/openslx/satellitedaemon/util/RndStringEncrypt.java
new file mode 100644
index 0000000..c99a768
--- /dev/null
+++ b/src/main/java/org/openslx/satellitedaemon/util/RndStringEncrypt.java
@@ -0,0 +1,50 @@
+package org.openslx.satellitedaemon.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.KeyPair;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
+
+public class RndStringEncrypt {
+
+ KeyPair pair;
+
+ public RndStringEncrypt(String alias, String password, String file)
+ throws NoSuchAlgorithmException, CertificateException,
+ FileNotFoundException, IOException, KeyStoreException,
+ UnrecoverableKeyException {
+ KeyStore keystore = KeyStore.getInstance("JKS");
+ keystore.load(new FileInputStream(new File(file)),
+ password.toCharArray());
+ Certificate cert = null;
+
+ Key key = keystore.getKey(alias, password.toCharArray());
+
+ if (key instanceof PrivateKey) {
+ cert = keystore.getCertificate(alias);
+ PublicKey publicKey = cert.getPublicKey();
+ pair = new KeyPair(publicKey, (PrivateKey) key);
+ }
+ }
+
+ public byte[] encryptRndString(String message) throws NoSuchAlgorithmException,
+ InvalidKeyException, SignatureException {
+ Signature signature = Signature.getInstance("SHA256WITHRSA");
+ signature.initSign(pair.getPrivate());
+ signature.update(message.getBytes());
+ return signature.sign();
+ }
+}