diff options
Diffstat (limited to 'src/main/java/org/openslx/filetransfer')
-rw-r--r-- | src/main/java/org/openslx/filetransfer/ClassTest.java | 139 | ||||
-rw-r--r-- | src/main/java/org/openslx/filetransfer/Downloader.java | 2 | ||||
-rw-r--r-- | src/main/java/org/openslx/filetransfer/Uploader.java | 20 |
3 files changed, 140 insertions, 21 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(); + } +} diff --git a/src/main/java/org/openslx/filetransfer/Downloader.java b/src/main/java/org/openslx/filetransfer/Downloader.java index 171f3ae..450aad0 100644 --- a/src/main/java/org/openslx/filetransfer/Downloader.java +++ b/src/main/java/org/openslx/filetransfer/Downloader.java @@ -27,8 +27,6 @@ public class Downloader { private DataInputStream dataFromServer; private String TOKEN = null; private String RANGE = null; - private static String pathToTrustStore = - "/home/bjoern/javadev/DataTransfer/mySrvKeyStore.jks"; private String outputFilename; /***********************************************************************//** diff --git a/src/main/java/org/openslx/filetransfer/Uploader.java b/src/main/java/org/openslx/filetransfer/Uploader.java index 103e1bb..d87cfbb 100644 --- a/src/main/java/org/openslx/filetransfer/Uploader.java +++ b/src/main/java/org/openslx/filetransfer/Uploader.java @@ -29,11 +29,6 @@ public class Uploader { private String TOKEN = null; private String RANGE = null; - private static String pathToTrustStore = - "/home/bjoern/javadev/DataTransfer/mySrvKeyStore.jks"; - - - /***********************************************************************//** * Constructor for satellite uploader. * Tries to connect to specific ip and port and sending type of action. @@ -46,20 +41,7 @@ public class Uploader { * @throws KeyManagementException * @throws UnknownHostException */ - public Uploader(String ip, int port) throws IOException, KeyStoreException, NoSuchAlgorithmException, CertificateException, KeyManagementException { - 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); - + public Uploader(String ip, int port, SSLContext context) throws IOException, KeyStoreException, NoSuchAlgorithmException, CertificateException, KeyManagementException { sslSocketFactory = context.getSocketFactory(); satelliteSocket = (SSLSocket) sslSocketFactory.createSocket(ip, port); |