diff options
author | Björn Hagemeister | 2014-06-30 18:00:46 +0200 |
---|---|---|
committer | Björn Hagemeister | 2014-06-30 18:00:46 +0200 |
commit | 9710bd551c38aed7b729a8d39cef9c5dc534d20c (patch) | |
tree | 66ae2f0051023b92703439f92e4e2d300e07e3c2 /src/main/java/org/openslx/filetransfer/ClassTest.java | |
parent | Added filetransfer classes. Downloader.java, Uploader.java, Listener.java and... (diff) | |
download | master-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.java | 139 |
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(); + } +} |