summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/filetransfer
diff options
context:
space:
mode:
authorBjörn Hagemeister2014-07-02 16:22:54 +0200
committerBjörn Hagemeister2014-07-02 16:22:54 +0200
commit2af7714e8672797677628bea1ece6f62bbe75c89 (patch)
treefbaf28cdebd1b9dd5aa01714a0005f6f4422ecf3 /src/main/java/org/openslx/filetransfer
parentAdd getter for port in Listener (diff)
downloadmaster-sync-shared-2af7714e8672797677628bea1ece6f62bbe75c89.tar.gz
master-sync-shared-2af7714e8672797677628bea1ece6f62bbe75c89.tar.xz
master-sync-shared-2af7714e8672797677628bea1ece6f62bbe75c89.zip
new method for sending error string, usefull for wrong token.
Diffstat (limited to 'src/main/java/org/openslx/filetransfer')
-rw-r--r--src/main/java/org/openslx/filetransfer/ClassTest.java42
-rw-r--r--src/main/java/org/openslx/filetransfer/Downloader.java50
-rw-r--r--src/main/java/org/openslx/filetransfer/Uploader.java84
3 files changed, 104 insertions, 72 deletions
diff --git a/src/main/java/org/openslx/filetransfer/ClassTest.java b/src/main/java/org/openslx/filetransfer/ClassTest.java
index 9cd4676..768316b 100644
--- a/src/main/java/org/openslx/filetransfer/ClassTest.java
+++ b/src/main/java/org/openslx/filetransfer/ClassTest.java
@@ -33,51 +33,41 @@ import javax.net.ssl.TrustManagerFactory;
public class ClassTest {
public static void main(String[] args) throws Exception {
+ 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();
- 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);
+ context.init(keyManagers, null, null);
- new Listener(new Test(), context, 6789).listen();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }).start();
+ Listener listener = new Listener(new Test(), context, 6789);
+ listener.start();
Thread.sleep(5000);
String pathToTrustStore =
"/home/bjoern/javadev/DataTransfer/mySrvKeyStore.jks";
- char[] passphrase = "test123".toCharArray();
- KeyStore keystore = KeyStore.getInstance("JKS");
+ passphrase = "test123".toCharArray();
+ keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream(pathToTrustStore), passphrase);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keystore);
- SSLContext context = SSLContext.getInstance("SSLv3");
+ context = SSLContext.getInstance("SSLv3");
TrustManager[] trustManagers = tmf.getTrustManagers();
context.init(null, trustManagers, null);
Downloader d = new Downloader("localhost", 6789, context);
+ d.setOutputFilename("output.txt");
d.sendToken("xyz");
while (d.readMetaData())
d.readBinary();
diff --git a/src/main/java/org/openslx/filetransfer/Downloader.java b/src/main/java/org/openslx/filetransfer/Downloader.java
index 176b874..58e32f9 100644
--- a/src/main/java/org/openslx/filetransfer/Downloader.java
+++ b/src/main/java/org/openslx/filetransfer/Downloader.java
@@ -3,12 +3,10 @@ package org.openslx.filetransfer;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;
import java.security.KeyManagementException;
-import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
@@ -16,8 +14,6 @@ import java.security.cert.CertificateException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
public class Downloader {
// Some instance variables.
@@ -28,6 +24,7 @@ public class Downloader {
private String TOKEN = null;
private String RANGE = null;
private String outputFilename = null;
+ private String ERROR = null;
/***********************************************************************//**
* Constructor for satellite downloader.
@@ -228,10 +225,17 @@ public class Downloader {
RANGE = splitted[1];
System.out.println("RANGE: '" + RANGE + "'");
}
+ else if (splitted[0].equals("ERROR")) {
+ if (splitted[1] != null)
+ ERROR = splitted[1];
+ System.err.println("ERROR: " + ERROR);
+ this.close();
+ return false;
+ }
}
- } catch (IOException e) {
- throw e;
- // return false;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
}
return true;
}
@@ -255,17 +259,37 @@ public class Downloader {
hasRead += ret;
}
- RandomAccessFile file = new RandomAccessFile(new File(outputFilename), "rw");
- file.seek(getStartOfRange());
- file.write(incoming, 0, length);
- file.close();
+ RandomAccessFile file;
+ try {
+ file = new RandomAccessFile(new File(outputFilename), "rw");
+ file.seek(getStartOfRange());
+ file.write(incoming, 0, length);
+ file.close();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
return true;
}
/***********************************************************************//**
+ * Method for sending error Code to server. For example in case of wrong
+ * token, send code for wrong token.
+ * @throws IOException
+ */
+ public void sendErrorCode(String errString) throws IOException {
+ String sendError = "ERROR=" + errString;
+ byte[] data = sendError.getBytes(StandardCharsets.UTF_8);
+ dataToServer.writeByte(data.length);
+ dataToServer.write(data);
+ }
+
+ /***********************************************************************//**
* Method for closing connection, if download has finished.
+ * @throws IOException
*/
- public void close() {
-
+ public void close() throws IOException {
+ this.satelliteSocket.close();
}
}
diff --git a/src/main/java/org/openslx/filetransfer/Uploader.java b/src/main/java/org/openslx/filetransfer/Uploader.java
index 6fbb656..befa9bf 100644
--- a/src/main/java/org/openslx/filetransfer/Uploader.java
+++ b/src/main/java/org/openslx/filetransfer/Uploader.java
@@ -3,14 +3,11 @@ package org.openslx.filetransfer;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.security.KeyManagementException;
-import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
@@ -18,8 +15,6 @@ import java.security.cert.CertificateException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
public class Uploader {
// Some member variables.
@@ -29,6 +24,7 @@ public class Uploader {
private DataInputStream dataFromServer;
private String TOKEN = null;
private String RANGE = null;
+ private String ERROR = null;
/***********************************************************************//**
* Constructor for satellite uploader.
@@ -196,6 +192,13 @@ public class Uploader {
RANGE = splitted[1];
System.out.println("RANGE: " + RANGE);
}
+ else if (splitted[0].equals("ERROR")) {
+ if (splitted[1] != null)
+ ERROR = splitted[1];
+ System.err.println("ERROR: " + ERROR);
+ this.close();
+ return false;
+ }
}
} catch (IOException e) {
e.printStackTrace();
@@ -209,42 +212,57 @@ public class Uploader {
* @param filename
* @throws IOException
*/
- public Boolean sendFile(String filename) throws IOException {
- RandomAccessFile file;
+ public Boolean sendFile(String filename) {
try {
- file = new RandomAccessFile(new File(filename), "r");
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- return false;
- }
-
- if (getStartOfRange() == -1) {
- file.close();
- return false;
- }
- file.seek(getStartOfRange());
-
- byte[] data = new byte[255];
- int hasRead = 0;
- int length = getDiffOfRange();
- System.out.println("diff of Range: " + length);
- while (hasRead < length) {
- int ret = file.read(data, hasRead, length - hasRead);
- if (ret == -1) {
- System.out.println("Error occured in Uploader.sendFile(),"
- + " while reading from File to send.");
+ RandomAccessFile file = new RandomAccessFile(new File(filename), "r");
+
+ if (getStartOfRange() == -1) {
file.close();
return false;
}
- hasRead += ret;
- }
- file.close();
- try {
+ file.seek(getStartOfRange());
+
+ byte[] data = new byte[255];
+ int hasRead = 0;
+ int length = getDiffOfRange();
+ System.out.println("diff of Range: " + length);
+ while (hasRead < length) {
+ int ret = file.read(data, hasRead, length - hasRead);
+ if (ret == -1) {
+ System.out.println("Error occured in Uploader.sendFile(),"
+ + " while reading from File to send.");
+ file.close();
+ return false;
+ }
+ hasRead += ret;
+ }
+ file.close();
+
dataToServer.write(data, 0, length);
- } catch (IOException e) {
+ } catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
+
+ /***********************************************************************//**
+ * Method for sending error Code to server. For example in case of wrong
+ * token, send code for wrong token.
+ * @throws IOException
+ */
+ public void sendErrorCode(String errString) throws IOException {
+ String sendError = "ERROR=" + errString;
+ byte[] data = sendError.getBytes(StandardCharsets.UTF_8);
+ dataToServer.writeByte(data.length);
+ dataToServer.write(data);
+ }
+
+ /***********************************************************************//**
+ * Method for closing connection, if download has finished.
+ * @throws IOException
+ */
+ public void close() throws IOException {
+ this.satelliteSocket.close();
+ }
}