mirror of
https://github.com/moparisthebest/SSLDroid
synced 2025-01-12 21:58:00 -05:00
Moved Relay class into a separate file
Signed-off-by: Balint Kovacs <blint@blint.hu>
This commit is contained in:
parent
42c6f7df96
commit
c97ab2bb80
70
src/hu/blint/ssldroid/Relay.java
Normal file
70
src/hu/blint/ssldroid/Relay.java
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
package hu.blint.ssldroid;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.SocketException;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
public class Relay extends Thread {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private final TcpProxyServerThread tcpProxyServerThread;
|
||||||
|
private InputStream in;
|
||||||
|
private OutputStream out;
|
||||||
|
private String side;
|
||||||
|
private int sessionid;
|
||||||
|
private final static int BUFSIZ = 4096;
|
||||||
|
private byte buf[] = new byte[BUFSIZ];
|
||||||
|
|
||||||
|
public Relay(TcpProxyServerThread tcpProxyServerThread, InputStream in, OutputStream out, String side, int sessionid) {
|
||||||
|
this.tcpProxyServerThread = tcpProxyServerThread;
|
||||||
|
this.in = in;
|
||||||
|
this.out = out;
|
||||||
|
this.side = side;
|
||||||
|
this.sessionid = sessionid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
while ((n = in.read(buf)) > 0) {
|
||||||
|
if (Thread.interrupted()) {
|
||||||
|
// We've been interrupted: no more relaying
|
||||||
|
Log.d("SSLDroid", this.tcpProxyServerThread.tunnelName+"/"+sessionid+": Interrupted "+side+" thread");
|
||||||
|
try {
|
||||||
|
in.close();
|
||||||
|
out.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.d("SSLDroid", this.tcpProxyServerThread.tunnelName+"/"+sessionid+": "+e.toString());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
out.write(buf, 0, n);
|
||||||
|
out.flush();
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
if (buf[i] == 7)
|
||||||
|
buf[i] = '#';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SocketException e) {
|
||||||
|
Log.d("SSLDroid", this.tcpProxyServerThread.tunnelName+"/"+sessionid+": "+e.toString());
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.d("SSLDroid", this.tcpProxyServerThread.tunnelName+"/"+sessionid+": "+e.toString());
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Log.d("SSLDroid", this.tcpProxyServerThread.tunnelName+"/"+sessionid+": "+e.toString());
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
in.close();
|
||||||
|
out.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.d("SSLDroid", this.tcpProxyServerThread.tunnelName+"/"+sessionid+": "+e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.d("SSLDroid", this.tcpProxyServerThread.tunnelName+"/"+sessionid+": Quitting "+side+"-side stream proxy...");
|
||||||
|
}
|
||||||
|
}
|
@ -3,8 +3,6 @@ package hu.blint.ssldroid;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
@ -96,61 +94,6 @@ public class TcpProxyServerThread extends Thread {
|
|||||||
return sslSocketFactory;
|
return sslSocketFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Relay extends Thread {
|
|
||||||
private InputStream in;
|
|
||||||
private OutputStream out;
|
|
||||||
private String side;
|
|
||||||
private int sessionid;
|
|
||||||
private final static int BUFSIZ = 4096;
|
|
||||||
private byte buf[] = new byte[BUFSIZ];
|
|
||||||
|
|
||||||
public Relay(InputStream in, OutputStream out, String side, int sessionid) {
|
|
||||||
this.in = in;
|
|
||||||
this.out = out;
|
|
||||||
this.side = side;
|
|
||||||
this.sessionid = sessionid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
int n = 0;
|
|
||||||
|
|
||||||
try {
|
|
||||||
while ((n = in.read(buf)) > 0) {
|
|
||||||
if (Thread.interrupted()) {
|
|
||||||
// We've been interrupted: no more relaying
|
|
||||||
Log.d("SSLDroid", tunnelName+"/"+sessionid+": Interrupted "+side+" thread");
|
|
||||||
try {
|
|
||||||
in.close();
|
|
||||||
out.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
Log.d("SSLDroid", tunnelName+"/"+sessionid+": "+e.toString());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
out.write(buf, 0, n);
|
|
||||||
out.flush();
|
|
||||||
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
if (buf[i] == 7)
|
|
||||||
buf[i] = '#';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (SocketException e) {
|
|
||||||
Log.d("SSLDroid", tunnelName+"/"+sessionid+": "+e.toString());
|
|
||||||
} catch (IOException e) {
|
|
||||||
Log.d("SSLDroid", tunnelName+"/"+sessionid+": "+e.toString());
|
|
||||||
} finally {
|
|
||||||
try {
|
|
||||||
in.close();
|
|
||||||
out.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
Log.d("SSLDroid", tunnelName+"/"+sessionid+": "+e.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Log.d("SSLDroid", tunnelName+"/"+sessionid+": Quitting "+side+"-side stream proxy...");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
@ -196,9 +139,9 @@ public class TcpProxyServerThread extends Thread {
|
|||||||
|
|
||||||
// relay the stuff through
|
// relay the stuff through
|
||||||
fromBrowserToServer = new Relay(
|
fromBrowserToServer = new Relay(
|
||||||
sc.getInputStream(), st.getOutputStream(), "client", sessionid);
|
this, sc.getInputStream(), st.getOutputStream(), "client", sessionid);
|
||||||
fromServerToBrowser = new Relay(
|
fromServerToBrowser = new Relay(
|
||||||
st.getInputStream(), sc.getOutputStream(), "server", sessionid);
|
this, st.getInputStream(), sc.getOutputStream(), "server", sessionid);
|
||||||
|
|
||||||
fromBrowserToServer.start();
|
fromBrowserToServer.start();
|
||||||
fromServerToBrowser.start();
|
fromServerToBrowser.start();
|
||||||
|
Loading…
Reference in New Issue
Block a user