summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/filetransfer/ClassTest.java
diff options
context:
space:
mode:
authorBjörn Hagemeister2014-06-30 18:00:46 +0200
committerBjörn Hagemeister2014-06-30 18:00:46 +0200
commit9710bd551c38aed7b729a8d39cef9c5dc534d20c (patch)
tree66ae2f0051023b92703439f92e4e2d300e07e3c2 /src/main/java/org/openslx/filetransfer/ClassTest.java
parentAdded filetransfer classes. Downloader.java, Uploader.java, Listener.java and... (diff)
downloadmaster-sync-shared-9710bd551c38aed7b729a8d39cef9c5dc534d20c.tar.gz
master-sync-shared-9710bd551c38aed7b729a8d39cef9c5dc534d20c.tar.xz
master-sync-shared-9710bd551c38aed7b729a8d39cef9c5dc534d20c.zip
Also pass to uploader context as argument. Added ClassTest file, which is same like Main for testing.
Diffstat (limited to 'src/main/java/org/openslx/filetransfer/ClassTest.java')
-rw-r--r--src/main/java/org/openslx/filetransfer/ClassTest.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/filetransfer/ClassTest.java b/src/main/java/org/openslx/filetransfer/ClassTest.java
new file mode 100644
index 0000000..6d9f4e9
--- /dev/null
+++ b/src/main/java/org/openslx/filetransfer/ClassTest.java
@@ -0,0 +1,139 @@
+/**
+ * File transfer between master server and satellite server.
+ * The connection should always be from satellite to master, because of
+ * open port knowledge on master server.
+ *
+ * For uploading file to master, satellite should send a request with
+ * token "U" for want upload. --> start Uploader(IP, PORT).
+ *
+ * For downloading a file from master, satellite should send a request
+ * with token "D" for want download. --> start Downloader(IP, PORT).
+ *
+ * Means the master server has to start the opposite part:
+ * If master receives token "U" --> start Downloader(socket)
+ * If master receives token "D" --> start Uploader(socket)
+ */
+
+//TODO Björn Hagemeister. SSLConfiguration!
+
+package org.openslx.filetransfer;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.security.KeyStore;
+
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+
+public class ClassTest {
+ public static void main(String[] args) throws Exception {
+
+ new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ String pathToKeyStore =
+ "/home/bjoern/javadev/DataTransfer/mySrvKeyStore.jks";
+ char[] passphrase = "test123".toCharArray();
+ KeyStore keystore = KeyStore.getInstance("JKS");
+ keystore.load(new FileInputStream(pathToKeyStore), passphrase);
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
+ kmf.init(keystore, passphrase);
+ SSLContext context = SSLContext.getInstance("SSLv3");
+ KeyManager[] keyManagers = kmf.getKeyManagers();
+
+ context.init(keyManagers, null, null);
+
+ new Listener(new Test(), context).listen();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }).start();
+
+ Thread.sleep(5000);
+
+ String pathToTrustStore =
+ "/home/bjoern/javadev/DataTransfer/mySrvKeyStore.jks";
+
+ char[] passphrase = "test123".toCharArray();
+ KeyStore keystore = KeyStore.getInstance("JKS");
+ keystore.load(new FileInputStream(pathToTrustStore), passphrase);
+
+ TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ tmf.init(keystore);
+
+ SSLContext context = SSLContext.getInstance("SSLv3");
+ TrustManager[] trustManagers = tmf.getTrustManagers();
+
+ context.init(null, trustManagers, null);
+
+
+ Downloader d = new Downloader("localhost", 6789, "output.txt", context);
+ d.sendToken("xyz");
+ while (d.readMetaData())
+ d.readBinary();
+
+ /*
+ String pathToKeyStore =
+ "/home/bjoern/javadev/DataTransfer/mySrvKeyStore.jks";
+ char[] passphrase = "test123".toCharArray();
+ KeyStore keystore = KeyStore.getInstance("JKS");
+ keystore.load(new FileInputStream(pathToKeyStore), passphrase);
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
+ kmf.init(keystore, passphrase);
+ SSLContext context = SSLContext.getInstance("SSLv3");
+ KeyManager[] keyManagers = kmf.getKeyManagers();
+
+ context.init(keyManagers, null, null);
+
+ Uploader u = new Uploader("localhost", 6789, context);
+ u.sendToken("xyz");
+
+ RandomAccessFile file = new RandomAccessFile(new File("test.txt"), "rw");
+ long length = file.length();
+ file.close();
+
+ int diff = 0;
+ for (int i = 0; (i + 5) < length; i += 5) {
+ u.sendRange(i, i + 5);
+ u.sendFile("test.txt");
+ diff = (int) (length - i);
+ }
+
+ u.sendRange((int)(length - diff), (int)length);
+ u.sendFile("test.txt");
+ */
+ }
+}
+
+// Implementing IncomingEvent for testing case.
+class Test implements IncomingEvent {
+ public void incomingUploader(Uploader uploader) throws IOException {
+ RandomAccessFile file = new RandomAccessFile(new File("test.txt"), "rw");
+ long length = file.length();
+ file.close();
+
+ int diff = 0;
+ for (int i = 0; (i + 5) < length; i += 5) {
+ uploader.sendRange(i, i + 5);
+ uploader.sendFile("test.txt");
+ diff = (int) (length - i);
+ }
+
+ uploader.sendRange((int)(length - diff), (int)length);
+ uploader.sendFile("test.txt");
+ }
+
+ public void incomingDownloader(Downloader downloader) throws IOException {
+ while (downloader.readMetaData())
+ downloader.readBinary();
+ }
+}