massive cleanup of merged code from Ony fork
removal/comment out of LoggerFactory log system
This commit is contained in:
parent
a78e458a43
commit
d63d10d8ae
|
@ -13,3 +13,4 @@ target=android-21
|
||||||
android.library.reference.1=external/appcompat
|
android.library.reference.1=external/appcompat
|
||||||
android.library.reference.2=external/superuser-commands/RootCommands-Library
|
android.library.reference.2=external/superuser-commands/RootCommands-Library
|
||||||
android.library.reference.3=../Orweb
|
android.library.reference.3=../Orweb
|
||||||
|
android.library.reference.4=../OnionKit/libnetcipher
|
||||||
|
|
|
@ -9,9 +9,6 @@ import java.util.Hashtable;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import com.runjva.sourceforge.jsocks.protocol.InetRange;
|
import com.runjva.sourceforge.jsocks.protocol.InetRange;
|
||||||
import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
|
import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
|
||||||
import com.runjva.sourceforge.jsocks.protocol.SocksProxyBase;
|
import com.runjva.sourceforge.jsocks.protocol.SocksProxyBase;
|
||||||
|
@ -20,7 +17,6 @@ import com.runjva.sourceforge.jsocks.server.IdentAuthenticator;
|
||||||
public class SOCKS {
|
public class SOCKS {
|
||||||
|
|
||||||
private static final int DEFAULT_LISTENING_PORT = 1080;
|
private static final int DEFAULT_LISTENING_PORT = 1080;
|
||||||
final private static Logger log = LoggerFactory.getLogger(SOCKS.class);
|
|
||||||
|
|
||||||
static public void usage() {
|
static public void usage() {
|
||||||
System.out.println("Usage: java SOCKS [inifile1 inifile2 ...]\n"
|
System.out.println("Usage: java SOCKS [inifile1 inifile2 ...]\n"
|
||||||
|
@ -258,7 +254,7 @@ public class SOCKS {
|
||||||
// /////////////////
|
// /////////////////
|
||||||
|
|
||||||
static void inform(String s) {
|
static void inform(String s) {
|
||||||
log.info(s);
|
// log.info(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void exit(String msg) {
|
static void exit(String msg) {
|
||||||
|
|
|
@ -15,9 +15,7 @@ import java.net.Socket;
|
||||||
import java.net.SocketAddress;
|
import java.net.SocketAddress;
|
||||||
import java.nio.channels.SocketChannel;
|
import java.nio.channels.SocketChannel;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import android.annotation.SuppressLint;
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import android.net.VpnService;
|
import android.net.VpnService;
|
||||||
|
|
||||||
import com.runjva.sourceforge.jsocks.server.ServerAuthenticator;
|
import com.runjva.sourceforge.jsocks.server.ServerAuthenticator;
|
||||||
|
@ -60,7 +58,6 @@ public class ProxyServer implements Runnable {
|
||||||
static int iddleTimeout = 180000; // 3 minutes
|
static int iddleTimeout = 180000; // 3 minutes
|
||||||
static int acceptTimeout = 180000; // 3 minutes
|
static int acceptTimeout = 180000; // 3 minutes
|
||||||
|
|
||||||
static Logger log = LoggerFactory.getLogger(ProxyServer.class);
|
|
||||||
static SocksProxyBase proxy;
|
static SocksProxyBase proxy;
|
||||||
|
|
||||||
static VpnService vpnService;
|
static VpnService vpnService;
|
||||||
|
@ -181,13 +178,13 @@ public class ProxyServer implements Runnable {
|
||||||
ss = new ServerSocket(port, backlog, localIP);
|
ss = new ServerSocket(port, backlog, localIP);
|
||||||
final String address = ss.getInetAddress().getHostAddress();
|
final String address = ss.getInetAddress().getHostAddress();
|
||||||
final int localPort = ss.getLocalPort();
|
final int localPort = ss.getLocalPort();
|
||||||
log.info("Starting SOCKS Proxy on: {}:{}", address, localPort);
|
debug("Starting SOCKS Proxy on: {}:{}", address, localPort);
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
final Socket s = ss.accept();
|
final Socket s = ss.accept();
|
||||||
final String hostName = s.getInetAddress().getHostName();
|
final String hostName = s.getInetAddress().getHostName();
|
||||||
final int port2 = s.getPort();
|
final int port2 = s.getPort();
|
||||||
log.info("Accepted from:{}:{}", hostName, port2);
|
debug("Accepted from:{}:{}", hostName, port2);
|
||||||
|
|
||||||
final ProxyServer ps = new ProxyServer(auth, s);
|
final ProxyServer ps = new ProxyServer(auth, s);
|
||||||
(new Thread(ps)).start();
|
(new Thread(ps)).start();
|
||||||
|
@ -226,7 +223,7 @@ public class ProxyServer implements Runnable {
|
||||||
if (auth != null) {
|
if (auth != null) {
|
||||||
auth.endSession();
|
auth.endSession();
|
||||||
}
|
}
|
||||||
log.info("Main thread(client->remote)stopped.");
|
debug("Main thread(client->remote)stopped.");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ACCEPT_MODE:
|
case ACCEPT_MODE:
|
||||||
|
@ -242,7 +239,7 @@ public class ProxyServer implements Runnable {
|
||||||
handleException(ioe);
|
handleException(ioe);
|
||||||
} finally {
|
} finally {
|
||||||
abort();
|
abort();
|
||||||
log.info("Accept thread(remote->client) stopped");
|
debug("Accept thread(remote->client) stopped");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PIPE_MODE:
|
case PIPE_MODE:
|
||||||
|
@ -251,13 +248,13 @@ public class ProxyServer implements Runnable {
|
||||||
} catch (final IOException ioe) {
|
} catch (final IOException ioe) {
|
||||||
} finally {
|
} finally {
|
||||||
abort();
|
abort();
|
||||||
log.info("Support thread(remote->client) stopped");
|
debug("Support thread(remote->client) stopped");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ABORT_MODE:
|
case ABORT_MODE:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
log.warn("Unexpected MODE " + mode);
|
debug("Unexpected MODE " + mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,13 +266,13 @@ public class ProxyServer implements Runnable {
|
||||||
try {
|
try {
|
||||||
auth = auth.startSession(sock);
|
auth = auth.startSession(sock);
|
||||||
} catch (final IOException ioe) {
|
} catch (final IOException ioe) {
|
||||||
log.warn("Auth throwed exception:", ioe);
|
debug("Auth throwed exception:", ioe);
|
||||||
auth = null;
|
auth = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auth == null) { // Authentication failed
|
if (auth == null) { // Authentication failed
|
||||||
log.info("Authentication failed");
|
debug("Authentication failed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,6 +347,7 @@ public class ProxyServer implements Runnable {
|
||||||
sendErrorMessage(error_code);
|
sendErrorMessage(error_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
private void onConnect(final ProxyMessage msg) throws IOException {
|
private void onConnect(final ProxyMessage msg) throws IOException {
|
||||||
Socket s;
|
Socket s;
|
||||||
|
|
||||||
|
@ -370,7 +368,7 @@ public class ProxyServer implements Runnable {
|
||||||
if (vpnService != null)
|
if (vpnService != null)
|
||||||
vpnService.protect(s);
|
vpnService.protect(s);
|
||||||
|
|
||||||
log.info("Connected to " + s.getInetAddress() + ":" + s.getPort());
|
debug("Connected to " + s.getInetAddress() + ":" + s.getPort());
|
||||||
|
|
||||||
ProxyMessage response = null;
|
ProxyMessage response = null;
|
||||||
final InetAddress localAddress = s.getLocalAddress();
|
final InetAddress localAddress = s.getLocalAddress();
|
||||||
|
@ -401,7 +399,7 @@ public class ProxyServer implements Runnable {
|
||||||
|
|
||||||
final InetAddress inetAddress = ss.getInetAddress();
|
final InetAddress inetAddress = ss.getInetAddress();
|
||||||
final int localPort = ss.getLocalPort();
|
final int localPort = ss.getLocalPort();
|
||||||
log.info("Trying accept on {}:{}", inetAddress, localPort);
|
debug("Trying accept on {}:{}", inetAddress, localPort);
|
||||||
|
|
||||||
if (msg.version == 5) {
|
if (msg.version == 5) {
|
||||||
final int cmd = SocksProxyBase.SOCKS_SUCCESS;
|
final int cmd = SocksProxyBase.SOCKS_SUCCESS;
|
||||||
|
@ -434,10 +432,10 @@ public class ProxyServer implements Runnable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (final EOFException e) {
|
} catch (final EOFException e) {
|
||||||
log.debug("Connection closed while we were trying to accept", e);
|
debug("Connection closed while we were trying to accept", e);
|
||||||
return;
|
return;
|
||||||
} catch (final InterruptedIOException e) {
|
} catch (final InterruptedIOException e) {
|
||||||
log.debug("Interrupted by unsucessful accept thread", e);
|
debug("Interrupted by unsucessful accept thread", e);
|
||||||
if (mode != PIPE_MODE) {
|
if (mode != PIPE_MODE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -459,7 +457,7 @@ public class ProxyServer implements Runnable {
|
||||||
if (msg.ip.getHostAddress().equals("0.0.0.0")) {
|
if (msg.ip.getHostAddress().equals("0.0.0.0")) {
|
||||||
msg.ip = sock.getInetAddress();
|
msg.ip = sock.getInetAddress();
|
||||||
}
|
}
|
||||||
log.info("Creating UDP relay server for {}:{}", msg.ip, msg.port);
|
debug("Creating UDP relay server for {}:{}", msg.ip, msg.port);
|
||||||
|
|
||||||
relayServer = new UDPRelayServer(msg.ip, msg.port,
|
relayServer = new UDPRelayServer(msg.ip, msg.port,
|
||||||
Thread.currentThread(), sock, auth);
|
Thread.currentThread(), sock, auth);
|
||||||
|
@ -527,7 +525,7 @@ public class ProxyServer implements Runnable {
|
||||||
|
|
||||||
final InetAddress inetAddress = s.getInetAddress();
|
final InetAddress inetAddress = s.getInetAddress();
|
||||||
final int port = s.getPort();
|
final int port = s.getPort();
|
||||||
log.info("Accepted from {}:{}", s.getInetAddress(), port);
|
debug("Accepted from {}:{}", s.getInetAddress(), port);
|
||||||
|
|
||||||
ProxyMessage response;
|
ProxyMessage response;
|
||||||
|
|
||||||
|
@ -597,7 +595,7 @@ public class ProxyServer implements Runnable {
|
||||||
}
|
}
|
||||||
mode = ABORT_MODE;
|
mode = ABORT_MODE;
|
||||||
try {
|
try {
|
||||||
log.info("Aborting operation");
|
debug("Aborting operation");
|
||||||
if (remote_sock != null) {
|
if (remote_sock != null) {
|
||||||
remote_sock.close();
|
remote_sock.close();
|
||||||
}
|
}
|
||||||
|
@ -621,11 +619,11 @@ public class ProxyServer implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
static final void log(final ProxyMessage msg) {
|
static final void log(final ProxyMessage msg) {
|
||||||
log.debug("Request version: {}, Command: ", msg.version,
|
debug("Request version: {}, Command: ", msg.version,
|
||||||
command2String(msg.command));
|
command2String(msg.command));
|
||||||
|
|
||||||
final String user = msg.version == 4 ? ", User:" + msg.user : "";
|
final String user = msg.version == 4 ? ", User:" + msg.user : "";
|
||||||
log.debug("IP:" + msg.ip + ", Port:" + msg.port + user);
|
debug("IP:" + msg.ip + ", Port:" + msg.port + user);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pipe(final InputStream in, final OutputStream out)
|
private void pipe(final InputStream in, final OutputStream out)
|
||||||
|
@ -666,4 +664,29 @@ public class ProxyServer implements Runnable {
|
||||||
return "Unknown Command " + cmd;
|
return "Unknown Command " + cmd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void debug (String msg)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug (String msg, String host, int port)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug (String msg, Exception e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug (String msg, InetAddress addr, int port)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug (String msg, int type, String log)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,6 @@ import java.net.DatagramPacket;
|
||||||
import java.net.DatagramSocket;
|
import java.net.DatagramSocket;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Datagram socket to interract through the firewall.<BR>
|
* Datagram socket to interract through the firewall.<BR>
|
||||||
* Can be used same way as the normal DatagramSocket. One should be carefull
|
* Can be used same way as the normal DatagramSocket. One should be carefull
|
||||||
|
@ -44,8 +41,6 @@ public class Socks5DatagramSocket extends DatagramSocket {
|
||||||
private boolean server_mode = false;
|
private boolean server_mode = false;
|
||||||
UDPEncapsulation encapsulation;
|
UDPEncapsulation encapsulation;
|
||||||
|
|
||||||
private Logger log = LoggerFactory.getLogger(Socks5DatagramSocket.class);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct Datagram socket for communication over SOCKS5 proxy server.
|
* Construct Datagram socket for communication over SOCKS5 proxy server.
|
||||||
* This constructor uses default proxy, the one set with
|
* This constructor uses default proxy, the one set with
|
||||||
|
@ -126,8 +121,8 @@ public class Socks5DatagramSocket extends DatagramSocket {
|
||||||
|
|
||||||
encapsulation = proxy.udp_encapsulation;
|
encapsulation = proxy.udp_encapsulation;
|
||||||
|
|
||||||
log.debug("Datagram Socket:{}:{}", getLocalAddress(), getLocalPort());
|
// log.debug("Datagram Socket:{}:{}", getLocalAddress(), getLocalPort());
|
||||||
log.debug("Socks5Datagram: {}:{}", relayIP, relayPort);
|
// log.debug("Socks5Datagram: {}:{}", relayIP, relayPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -163,7 +158,7 @@ public class Socks5DatagramSocket extends DatagramSocket {
|
||||||
// If the host should be accessed directly, send it as is.
|
// If the host should be accessed directly, send it as is.
|
||||||
if (!server_mode && proxy.isDirect(dp.getAddress())) {
|
if (!server_mode && proxy.isDirect(dp.getAddress())) {
|
||||||
super.send(dp);
|
super.send(dp);
|
||||||
log.debug("Sending datagram packet directly:");
|
// log.debug("Sending datagram packet directly:");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,7 +381,7 @@ public class Socks5DatagramSocket extends DatagramSocket {
|
||||||
if (eof < 0) {
|
if (eof < 0) {
|
||||||
return false; // EOF encountered.
|
return false; // EOF encountered.
|
||||||
} else {
|
} else {
|
||||||
log.warn("This really should not happen");
|
//log.warn("This really should not happen");
|
||||||
return true; // This really should not happen
|
return true; // This really should not happen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,6 @@ import java.io.OutputStream;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SOCKS5 request/response message.
|
* SOCKS5 request/response message.
|
||||||
*/
|
*/
|
||||||
|
@ -20,7 +17,6 @@ class Socks5Message extends ProxyMessage {
|
||||||
|
|
||||||
byte[] data;
|
byte[] data;
|
||||||
|
|
||||||
private Logger log = LoggerFactory.getLogger(Socks5Message.class);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Server error response.
|
* Server error response.
|
||||||
|
@ -98,8 +94,6 @@ class Socks5Message extends ProxyMessage {
|
||||||
this.host = hostName;
|
this.host = hostName;
|
||||||
this.version = SOCKS_VERSION;
|
this.version = SOCKS_VERSION;
|
||||||
|
|
||||||
log.debug("Doing ATYP_DOMAINNAME");
|
|
||||||
|
|
||||||
addrType = SOCKS_ATYP_DOMAINNAME;
|
addrType = SOCKS_ATYP_DOMAINNAME;
|
||||||
final byte addr[] = hostName.getBytes();
|
final byte addr[] = hostName.getBytes();
|
||||||
|
|
||||||
|
@ -215,7 +209,7 @@ class Socks5Message extends ProxyMessage {
|
||||||
host = bytes2IPV6(addr, 0);
|
host = bytes2IPV6(addr, 0);
|
||||||
break;
|
break;
|
||||||
case SOCKS_ATYP_DOMAINNAME:
|
case SOCKS_ATYP_DOMAINNAME:
|
||||||
log.debug("Reading ATYP_DOMAINNAME");
|
// log.debug("Reading ATYP_DOMAINNAME");
|
||||||
addr = new byte[di.readUnsignedByte()];// Next byte shows the length
|
addr = new byte[di.readUnsignedByte()];// Next byte shows the length
|
||||||
di.readFully(addr);
|
di.readFully(addr);
|
||||||
host = new String(addr);
|
host = new String(addr);
|
||||||
|
|
|
@ -8,9 +8,6 @@ import java.net.Socket;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SocksSocket tryies to look very similar to normal Socket, while allowing
|
* SocksSocket tryies to look very similar to normal Socket, while allowing
|
||||||
* connections through the SOCKS4 or 5 proxy. To use this class you will have to
|
* connections through the SOCKS4 or 5 proxy. To use this class you will have to
|
||||||
|
@ -57,7 +54,7 @@ public class SocksSocket extends Socket {
|
||||||
protected int localPort, remotePort;
|
protected int localPort, remotePort;
|
||||||
|
|
||||||
private Socket directSock = null;
|
private Socket directSock = null;
|
||||||
private Logger log = LoggerFactory.getLogger(SocksSocket.class);
|
//private Logger log = LoggerFactory.getLogger(SocksSocket.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tryies to connect to given host and port using default proxy. If no
|
* Tryies to connect to given host and port using default proxy. If no
|
||||||
|
@ -373,7 +370,7 @@ public class SocksSocket extends Socket {
|
||||||
|
|
||||||
private void doDirect() throws SocksException {
|
private void doDirect() throws SocksException {
|
||||||
try {
|
try {
|
||||||
log.debug("IP: {}_{}", remoteIP, remotePort);
|
// log.debug("IP: {}_{}", remoteIP, remotePort);
|
||||||
directSock = new Socket(remoteIP, remotePort);
|
directSock = new Socket(remoteIP, remotePort);
|
||||||
proxy.out = directSock.getOutputStream();
|
proxy.out = directSock.getOutputStream();
|
||||||
proxy.in = directSock.getInputStream();
|
proxy.in = directSock.getInputStream();
|
||||||
|
|
|
@ -8,9 +8,6 @@ import java.net.InetAddress;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import com.runjva.sourceforge.jsocks.server.ServerAuthenticator;
|
import com.runjva.sourceforge.jsocks.server.ServerAuthenticator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,7 +30,7 @@ class UDPRelayServer implements Runnable {
|
||||||
|
|
||||||
long lastReadTime;
|
long lastReadTime;
|
||||||
|
|
||||||
static Logger log = LoggerFactory.getLogger(UDPRelayServer.class);
|
// static Logger log = LoggerFactory.getLogger(UDPRelayServer.class);
|
||||||
static SocksProxyBase proxy = null;
|
static SocksProxyBase proxy = null;
|
||||||
static int datagramSize = 0xFFFF;// 64K, a bit more than max udp size
|
static int datagramSize = 0xFFFF;// 64K, a bit more than max udp size
|
||||||
static int iddleTimeout = 180000;// 3 minutes
|
static int iddleTimeout = 180000;// 3 minutes
|
||||||
|
@ -124,9 +121,9 @@ class UDPRelayServer implements Runnable {
|
||||||
remote_sock.setSoTimeout(iddleTimeout);
|
remote_sock.setSoTimeout(iddleTimeout);
|
||||||
client_sock.setSoTimeout(iddleTimeout);
|
client_sock.setSoTimeout(iddleTimeout);
|
||||||
|
|
||||||
log.info("Starting UDP relay server on {}:{}", relayIP, relayPort);
|
//log.info("Starting UDP relay server on {}:{}", relayIP, relayPort);
|
||||||
log.info("Remote socket {}:{}", remote_sock.getLocalAddress(),
|
// log.info("Remote socket {}:{}", remote_sock.getLocalAddress(),
|
||||||
remote_sock.getLocalPort());
|
// remote_sock.getLocalPort());
|
||||||
|
|
||||||
pipe_thread1 = new Thread(this, "pipe1");
|
pipe_thread1 = new Thread(this, "pipe1");
|
||||||
pipe_thread2 = new Thread(this, "pipe2");
|
pipe_thread2 = new Thread(this, "pipe2");
|
||||||
|
@ -160,8 +157,8 @@ class UDPRelayServer implements Runnable {
|
||||||
} catch (final IOException ioe) {
|
} catch (final IOException ioe) {
|
||||||
} finally {
|
} finally {
|
||||||
abort();
|
abort();
|
||||||
log.info("UDP Pipe thread " + Thread.currentThread().getName()
|
// log.info("UDP Pipe thread " + Thread.currentThread().getName()
|
||||||
+ " stopped.");
|
// + " stopped.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -173,7 +170,7 @@ class UDPRelayServer implements Runnable {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("Aborting UDP Relay Server");
|
// log.info("Aborting UDP Relay Server");
|
||||||
|
|
||||||
remote_sock.close();
|
remote_sock.close();
|
||||||
client_sock.close();
|
client_sock.close();
|
||||||
|
@ -210,7 +207,7 @@ class UDPRelayServer implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (final UnknownHostException uhe) {
|
} catch (final UnknownHostException uhe) {
|
||||||
log.info("Dropping datagram for unknown host");
|
// log.info("Dropping datagram for unknown host");
|
||||||
} catch (final InterruptedIOException iioe) {
|
} catch (final InterruptedIOException iioe) {
|
||||||
// log("Interrupted: "+iioe);
|
// log("Interrupted: "+iioe);
|
||||||
// If we were interrupted by other thread.
|
// If we were interrupted by other thread.
|
||||||
|
|
|
@ -8,9 +8,6 @@ import java.net.ConnectException;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Ident provides means to obtain user name of the owner of the socket on
|
* Class Ident provides means to obtain user name of the owner of the socket on
|
||||||
* remote machine, providing remote machine runs identd daemon.
|
* remote machine, providing remote machine runs identd daemon.
|
||||||
|
@ -24,7 +21,7 @@ import org.slf4j.LoggerFactory;
|
||||||
*/
|
*/
|
||||||
public class Ident {
|
public class Ident {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(Ident.class);
|
// Logger log = LoggerFactory.getLogger(Ident.class);
|
||||||
|
|
||||||
/** Error Message can be null. */
|
/** Error Message can be null. */
|
||||||
public String errorMessage;
|
public String errorMessage;
|
||||||
|
@ -118,7 +115,7 @@ public class Ident {
|
||||||
sock.close();
|
sock.close();
|
||||||
}
|
}
|
||||||
} catch (final IOException ioe) {
|
} catch (final IOException ioe) {
|
||||||
log.warn("Could not close socket", ioe);
|
// log.warn("Could not close socket", ioe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ import info.guardianproject.browser.Browser;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
|
||||||
import org.torproject.android.service.TorService;
|
import org.torproject.android.service.TorService;
|
||||||
import org.torproject.android.service.TorServiceConstants;
|
import org.torproject.android.service.TorServiceConstants;
|
||||||
import org.torproject.android.service.TorServiceUtils;
|
import org.torproject.android.service.TorServiceUtils;
|
||||||
|
@ -74,6 +73,11 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
private Button mBtnBrowser = null;
|
private Button mBtnBrowser = null;
|
||||||
private Button mBtnVPN = null;
|
private Button mBtnVPN = null;
|
||||||
|
|
||||||
|
private DrawerLayout mDrawer;
|
||||||
|
private ActionBarDrawerToggle mDrawerToggle;
|
||||||
|
private Toolbar mToolbar;
|
||||||
|
|
||||||
|
|
||||||
/* Some tracking bits */
|
/* Some tracking bits */
|
||||||
private int torStatus = TorServiceConstants.STATUS_OFF; //latest status reported from the tor service
|
private int torStatus = TorServiceConstants.STATUS_OFF; //latest status reported from the tor service
|
||||||
|
|
||||||
|
@ -92,7 +96,6 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
|
|
||||||
setLocale();
|
setLocale();
|
||||||
|
|
||||||
<<<<<<< HEAD:src/org/torproject/android/OrbotMainActivity.java
|
|
||||||
doLayout();
|
doLayout();
|
||||||
|
|
||||||
// appConflictChecker ();
|
// appConflictChecker ();
|
||||||
|
@ -118,44 +121,7 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Our handler for received Intents. This will be called whenever an Intent
|
|
||||||
// with an action named "custom-event-name" is broadcasted.
|
|
||||||
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
|
||||||
// Get extra data included in the Intent
|
|
||||||
|
|
||||||
if (intent.hasExtra("log"))
|
|
||||||
{
|
|
||||||
String log = intent.getStringExtra("log");
|
|
||||||
updateStatus(log);
|
|
||||||
}
|
|
||||||
else if (intent.hasExtra("up"))
|
|
||||||
{
|
|
||||||
long upload = intent.getLongExtra("up",0);
|
|
||||||
long download = intent.getLongExtra("down",0);
|
|
||||||
long written = intent.getLongExtra("written",0);
|
|
||||||
long read = intent.getLongExtra("read",0);
|
|
||||||
|
|
||||||
Message msg = mHandler.obtainMessage(TorServiceConstants.MESSAGE_TRAFFIC_COUNT);
|
|
||||||
msg.getData().putLong("download", download);
|
|
||||||
msg.getData().putLong("upload", upload);
|
|
||||||
msg.getData().putLong("readTotal", read);
|
|
||||||
msg.getData().putLong("writeTotal", written);
|
|
||||||
mHandler.sendMessage(msg);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (intent.hasExtra("status"))
|
|
||||||
{
|
|
||||||
torStatus = intent.getIntExtra("status", TorServiceConstants.STATUS_OFF);
|
|
||||||
updateStatus("");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private void startService (String action)
|
private void startService (String action)
|
||||||
{
|
{
|
||||||
|
@ -174,72 +140,6 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DrawerLayout mDrawer;
|
|
||||||
private ActionBarDrawerToggle mDrawerToggle;
|
|
||||||
private Toolbar mToolbar;
|
|
||||||
|
|
||||||
private void doLayout ()
|
|
||||||
{
|
|
||||||
setContentView(R.layout.layout_main);
|
|
||||||
|
|
||||||
mToolbar = (Toolbar) findViewById(R.id.toolbar);
|
|
||||||
mToolbar.inflateMenu(R.menu.orbot_main);
|
|
||||||
mToolbar.setTitle(R.string.app_name);
|
|
||||||
|
|
||||||
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
|
||||||
mDrawerToggle = new ActionBarDrawerToggle(
|
|
||||||
this, mDrawer, mToolbar,
|
|
||||||
android.R.string.ok, android.R.string.cancel
|
|
||||||
);
|
|
||||||
|
|
||||||
mDrawer.setDrawerListener(mDrawerToggle);
|
|
||||||
mDrawerToggle.setDrawerIndicatorEnabled(true);
|
|
||||||
mDrawerToggle.syncState();
|
|
||||||
mDrawerToggle.setToolbarNavigationClickListener(new OnClickListener ()
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
lblStatus = (TextView)findViewById(R.id.lblStatus);
|
|
||||||
imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
|
|
||||||
imgStatus.setOnLongClickListener(this);
|
|
||||||
|
|
||||||
downloadText = (TextView)findViewById(R.id.trafficDown);
|
|
||||||
uploadText = (TextView)findViewById(R.id.trafficUp);
|
|
||||||
=======
|
|
||||||
doLayout();
|
|
||||||
|
|
||||||
appConflictChecker ();
|
|
||||||
|
|
||||||
|
|
||||||
// Register to receive messages.
|
|
||||||
// We are registering an observer (mMessageReceiver) to receive Intents
|
|
||||||
// with actions named "custom-event-name".
|
|
||||||
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
|
|
||||||
new IntentFilter("status"));
|
|
||||||
|
|
||||||
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
|
|
||||||
new IntentFilter("log"));
|
|
||||||
|
|
||||||
mHandler.postDelayed(new Runnable ()
|
|
||||||
{
|
|
||||||
|
|
||||||
public void run ()
|
|
||||||
{
|
|
||||||
startService(TorServiceConstants.CMD_INIT);
|
|
||||||
}
|
|
||||||
},INIT_DELAY);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Our handler for received Intents. This will be called whenever an Intent
|
// Our handler for received Intents. This will be called whenever an Intent
|
||||||
// with an action named "custom-event-name" is broadcasted.
|
// with an action named "custom-event-name" is broadcasted.
|
||||||
|
@ -280,30 +180,12 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ProgressDialog mProgressDialog;
|
|
||||||
|
|
||||||
private void startService (String action)
|
|
||||||
{
|
|
||||||
|
|
||||||
Intent torService = new Intent(this, TorService.class);
|
|
||||||
torService.setAction(action);
|
|
||||||
startService(torService);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void stopService ()
|
|
||||||
{
|
|
||||||
|
|
||||||
Intent torService = new Intent(this, TorService.class);
|
|
||||||
stopService(torService);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doLayout ()
|
private void doLayout ()
|
||||||
{
|
{
|
||||||
setContentView(R.layout.layout_main);
|
setContentView(R.layout.layout_main);
|
||||||
|
|
||||||
mViewMain = findViewById(R.id.viewMain);
|
|
||||||
lblStatus = (TextView)findViewById(R.id.lblStatus);
|
lblStatus = (TextView)findViewById(R.id.lblStatus);
|
||||||
lblStatus.setOnLongClickListener(this);
|
lblStatus.setOnLongClickListener(this);
|
||||||
imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
|
imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
|
||||||
|
@ -314,42 +196,7 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
|
|
||||||
downloadText = (TextView)findViewById(R.id.trafficDown);
|
downloadText = (TextView)findViewById(R.id.trafficDown);
|
||||||
uploadText = (TextView)findViewById(R.id.trafficUp);
|
uploadText = (TextView)findViewById(R.id.trafficUp);
|
||||||
mTxtOrbotLog = (TextView)findViewById(R.id.orbotLog);
|
|
||||||
|
|
||||||
mDrawer = ((SlidingDrawer)findViewById(R.id.SlidingDrawer));
|
|
||||||
Button slideButton = (Button)findViewById(R.id.slideButton);
|
|
||||||
if (slideButton != null)
|
|
||||||
{
|
|
||||||
slideButton.setOnTouchListener(new OnTouchListener (){
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
|
||||||
|
|
||||||
if (event.equals(MotionEvent.ACTION_DOWN))
|
|
||||||
{
|
|
||||||
mDrawerOpen = !mDrawerOpen;
|
|
||||||
mTxtOrbotLog.setEnabled(mDrawerOpen);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
ScrollingMovementMethod smm = new ScrollingMovementMethod();
|
|
||||||
|
|
||||||
mTxtOrbotLog.setMovementMethod(smm);
|
|
||||||
mTxtOrbotLog.setOnLongClickListener(new View.OnLongClickListener() {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onLongClick(View v) {
|
|
||||||
ClipboardManager cm = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
|
|
||||||
cm.setText(mTxtOrbotLog.getText());
|
|
||||||
Toast.makeText(Orbot.this, "LOG COPIED TO CLIPBOARD", Toast.LENGTH_SHORT).show();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
downloadText.setText(formatCount(0) + " / " + formatTotal(0));
|
downloadText.setText(formatCount(0) + " / " + formatTotal(0));
|
||||||
uploadText.setText(formatCount(0) + " / " + formatTotal(0));
|
uploadText.setText(formatCount(0) + " / " + formatTotal(0));
|
||||||
|
@ -396,23 +243,7 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void appendLogTextAndScroll(String text)
|
|
||||||
{
|
|
||||||
if(mTxtOrbotLog != null && text != null && text.length() > 0){
|
|
||||||
|
|
||||||
if (mTxtOrbotLog.getText().length() > MAX_LOG_LENGTH)
|
|
||||||
mTxtOrbotLog.setText("");
|
|
||||||
|
|
||||||
mTxtOrbotLog.append(text + "\n");
|
|
||||||
final Layout layout = mTxtOrbotLog.getLayout();
|
|
||||||
if(layout != null){
|
|
||||||
int scrollDelta = layout.getLineBottom(mTxtOrbotLog.getLineCount() - 1)
|
|
||||||
- mTxtOrbotLog.getScrollY() - mTxtOrbotLog.getHeight();
|
|
||||||
if(scrollDelta > 0)
|
|
||||||
mTxtOrbotLog.scrollBy(0, scrollDelta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the UI Options Menu (non-Javadoc)
|
* Create the UI Options Menu (non-Javadoc)
|
||||||
|
@ -839,308 +670,9 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startIntent (String pkg, String action, Uri data)
|
|
||||||
{
|
|
||||||
Intent i;
|
|
||||||
PackageManager manager = getPackageManager();
|
|
||||||
try {
|
|
||||||
i = manager.getLaunchIntentForPackage(pkg);
|
|
||||||
if (i == null)
|
|
||||||
throw new PackageManager.NameNotFoundException();
|
|
||||||
i.setAction(action);
|
|
||||||
i.setData(data);
|
|
||||||
startActivity(i);
|
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean appInstalledOrNot(String uri)
|
|
||||||
=======
|
|
||||||
* @see android.app.Activity#onPause()
|
|
||||||
*/
|
|
||||||
protected void onPause() {
|
|
||||||
try
|
|
||||||
{
|
|
||||||
super.onPause();
|
|
||||||
|
|
||||||
if (aDialog != null)
|
|
||||||
aDialog.dismiss();
|
|
||||||
}
|
|
||||||
catch (IllegalStateException ise)
|
|
||||||
{
|
|
||||||
//can happen on exit/shutdown
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doTorCheck ()
|
|
||||||
{
|
|
||||||
|
|
||||||
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
switch (which){
|
|
||||||
case DialogInterface.BUTTON_POSITIVE:
|
|
||||||
|
|
||||||
openBrowser(URL_TOR_CHECK);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DialogInterface.BUTTON_NEGATIVE:
|
|
||||||
|
|
||||||
//do nothing
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
||||||
builder.setMessage(R.string.tor_check).setPositiveButton(R.string.btn_okay, dialogClickListener)
|
|
||||||
.setNegativeButton(R.string.btn_cancel, dialogClickListener).show();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void enableHiddenServicePort (int hsPort)
|
|
||||||
{
|
|
||||||
|
|
||||||
Editor pEdit = mPrefs.edit();
|
|
||||||
|
|
||||||
String hsPortString = mPrefs.getString("pref_hs_ports", "");
|
|
||||||
|
|
||||||
if (hsPortString.length() > 0 && hsPortString.indexOf(hsPort+"")==-1)
|
|
||||||
hsPortString += ',' + hsPort;
|
|
||||||
else
|
|
||||||
hsPortString = hsPort + "";
|
|
||||||
|
|
||||||
pEdit.putString("pref_hs_ports", hsPortString);
|
|
||||||
pEdit.putBoolean("pref_hs_enable", true);
|
|
||||||
|
|
||||||
pEdit.commit();
|
|
||||||
|
|
||||||
String onionHostname = mPrefs.getString("pref_hs_hostname","");
|
|
||||||
|
|
||||||
while (onionHostname.length() == 0)
|
|
||||||
{
|
|
||||||
//we need to stop and start Tor
|
|
||||||
try {
|
|
||||||
stopTor();
|
|
||||||
|
|
||||||
Thread.sleep(3000); //wait three seconds
|
|
||||||
|
|
||||||
startTor();
|
|
||||||
} catch (Exception e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
onionHostname = mPrefs.getString("pref_hs_hostname","");
|
|
||||||
}
|
|
||||||
|
|
||||||
Intent nResult = new Intent();
|
|
||||||
nResult.putExtra("hs_host", onionHostname);
|
|
||||||
setResult(RESULT_OK, nResult);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private synchronized void handleIntents ()
|
|
||||||
{
|
|
||||||
if (getIntent() == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Get intent, action and MIME type
|
|
||||||
Intent intent = getIntent();
|
|
||||||
String action = intent.getAction();
|
|
||||||
String type = intent.getType();
|
|
||||||
|
|
||||||
if (action == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (action.equals("org.torproject.android.REQUEST_HS_PORT"))
|
|
||||||
{
|
|
||||||
|
|
||||||
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
switch (which){
|
|
||||||
case DialogInterface.BUTTON_POSITIVE:
|
|
||||||
|
|
||||||
int hsPort = getIntent().getIntExtra("hs_port", -1);
|
|
||||||
|
|
||||||
enableHiddenServicePort (hsPort);
|
|
||||||
|
|
||||||
finish();
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DialogInterface.BUTTON_NEGATIVE:
|
|
||||||
//No button clicked
|
|
||||||
finish();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int hsPort = getIntent().getIntExtra("hs_port", -1);
|
|
||||||
|
|
||||||
String requestMsg = getString(R.string.hidden_service_request, hsPort);
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
||||||
builder.setMessage(requestMsg).setPositiveButton("Allow", dialogClickListener)
|
|
||||||
.setNegativeButton("Deny", dialogClickListener).show();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (action.equals("org.torproject.android.START_TOR"))
|
|
||||||
{
|
|
||||||
autoStartFromIntent = true;
|
|
||||||
|
|
||||||
try {
|
|
||||||
startTor();
|
|
||||||
|
|
||||||
Intent nResult = new Intent();
|
|
||||||
|
|
||||||
//nResult.putExtra("socks", ); //TODO respond with socks, transport, dns, etc
|
|
||||||
|
|
||||||
setResult(RESULT_OK,nResult);
|
|
||||||
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (action.equals(Intent.ACTION_VIEW))
|
|
||||||
{
|
|
||||||
String urlString = intent.getDataString();
|
|
||||||
|
|
||||||
if (urlString != null)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (urlString.toLowerCase().startsWith("bridge://"))
|
|
||||||
|
|
||||||
{
|
|
||||||
String newBridgeValue = urlString.substring(9); //remove the bridge protocol piece
|
|
||||||
newBridgeValue = URLDecoder.decode(newBridgeValue); //decode the value here
|
|
||||||
|
|
||||||
showAlert("Bridges Updated","Restart Orbot to use this bridge: " + newBridgeValue,false);
|
|
||||||
|
|
||||||
String bridges = mPrefs.getString(TorConstants.PREF_BRIDGES_LIST, null);
|
|
||||||
|
|
||||||
Editor pEdit = mPrefs.edit();
|
|
||||||
|
|
||||||
if (bridges != null && bridges.trim().length() > 0)
|
|
||||||
{
|
|
||||||
if (bridges.indexOf('\n')!=-1)
|
|
||||||
bridges += '\n' + newBridgeValue;
|
|
||||||
else
|
|
||||||
bridges += ',' + newBridgeValue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
bridges = newBridgeValue;
|
|
||||||
|
|
||||||
pEdit.putString(TorConstants.PREF_BRIDGES_LIST,bridges); //set the string to a preference
|
|
||||||
pEdit.putBoolean(TorConstants.PREF_BRIDGES_ENABLED,true);
|
|
||||||
|
|
||||||
pEdit.commit();
|
|
||||||
|
|
||||||
setResult(RESULT_OK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
showWizard = mPrefs.getBoolean("show_wizard",showWizard);
|
|
||||||
|
|
||||||
if (showWizard)
|
|
||||||
{
|
|
||||||
Editor pEdit = mPrefs.edit();
|
|
||||||
pEdit.putBoolean("show_wizard",false);
|
|
||||||
pEdit.commit();
|
|
||||||
showWizard = false;
|
|
||||||
|
|
||||||
startActivity(new Intent(this, ChooseLocaleWizardActivity.class));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
setIntent(null);
|
|
||||||
|
|
||||||
updateStatus ("");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean showWizard = true;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
|
||||||
super.onConfigurationChanged(newConfig);
|
|
||||||
|
|
||||||
doLayout();
|
|
||||||
updateStatus("");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Launch the system activity for Uri viewing with the provided url
|
|
||||||
*/
|
|
||||||
private void openBrowser(final String browserLaunchUrl)
|
|
||||||
{
|
|
||||||
boolean isOrwebInstalled = appInstalledOrNot("info.guardianproject.browser");
|
|
||||||
boolean isTransProxy = mPrefs.getBoolean("pref_transparent", false);
|
|
||||||
|
|
||||||
if (isOrwebInstalled)
|
|
||||||
{
|
|
||||||
startIntent("info.guardianproject.browser",Intent.ACTION_VIEW,Uri.parse(browserLaunchUrl));
|
|
||||||
}
|
|
||||||
else if (isTransProxy)
|
|
||||||
{
|
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
startActivity(intent);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AlertDialog aDialog = new AlertDialog.Builder(Orbot.this)
|
|
||||||
.setIcon(R.drawable.onion32)
|
|
||||||
.setTitle(R.string.install_apps_)
|
|
||||||
.setMessage(R.string.it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_)
|
|
||||||
.setPositiveButton(android.R.string.ok, new OnClickListener ()
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
|
|
||||||
//prompt to install Orweb
|
|
||||||
Intent intent = new Intent(Orbot.this,TipsAndTricks.class);
|
|
||||||
startActivity(intent);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
.setNegativeButton(android.R.string.no, new OnClickListener ()
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
startActivity(intent);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
.show();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startIntent (String pkg, String action, Uri data)
|
private void startIntent (String pkg, String action, Uri data)
|
||||||
{
|
{
|
||||||
Intent i;
|
Intent i;
|
||||||
|
@ -1448,7 +980,6 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<<<<<<< HEAD:src/org/torproject/android/OrbotMainActivity.java
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1456,35 +987,6 @@ public class OrbotMainActivity extends Activity implements TorConstants, OnLongC
|
||||||
{
|
{
|
||||||
Log.d(TAG,"error onclick",e);
|
Log.d(TAG,"error onclick",e);
|
||||||
}
|
}
|
||||||
|
|
||||||
=======
|
|
||||||
if (!mDrawerOpen)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
if (torStatus == TorServiceConstants.STATUS_OFF)
|
|
||||||
{
|
|
||||||
|
|
||||||
startTor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
stopTor();
|
|
||||||
stopService ();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Log.d(TAG,"error onclick",e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
|
@ -17,13 +17,12 @@ import java.util.concurrent.TimeoutException;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
|
||||||
import org.sufficientlysecure.rootcommands.Shell;
|
import org.sufficientlysecure.rootcommands.Shell;
|
||||||
import org.sufficientlysecure.rootcommands.command.SimpleCommand;
|
import org.sufficientlysecure.rootcommands.command.SimpleCommand;
|
||||||
|
import org.torproject.android.R;
|
||||||
import org.torproject.android.TorConstants;
|
import org.torproject.android.TorConstants;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
public class TorResourceInstaller implements TorServiceConstants {
|
public class TorResourceInstaller implements TorServiceConstants {
|
||||||
|
|
|
@ -45,7 +45,6 @@ import net.freehaven.tor.control.TorControlConnection;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.sandroproxy.ony.R;
|
|
||||||
import org.sufficientlysecure.rootcommands.Shell;
|
import org.sufficientlysecure.rootcommands.Shell;
|
||||||
import org.sufficientlysecure.rootcommands.command.SimpleCommand;
|
import org.sufficientlysecure.rootcommands.command.SimpleCommand;
|
||||||
import org.torproject.android.OrbotMainActivity;
|
import org.torproject.android.OrbotMainActivity;
|
||||||
|
@ -58,7 +57,6 @@ import org.torproject.android.vpn.OrbotVpnService;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.app.IntentService;
|
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
|
@ -235,33 +233,13 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
||||||
mNotificationShowing = false;
|
mNotificationShowing = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
<<<<<<< HEAD
|
|
||||||
|
|
||||||
private void clearNotifications ()
|
|
||||||
{
|
|
||||||
if (mNotificationManager != null)
|
|
||||||
mNotificationManager.cancelAll();
|
|
||||||
|
|
||||||
|
|
||||||
hmBuiltNodes.clear();
|
|
||||||
mNotificationShowing = false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressLint("NewApi")
|
|
||||||
private void showToolbarNotification (String notifyMsg, int notifyType, int icon)
|
|
||||||
{
|
|
||||||
|
|
||||||
//Reusable code.
|
|
||||||
Intent intent = new Intent(TorService.this, OrbotMainActivity.class);
|
|
||||||
PendingIntent pendIntent = PendingIntent.getActivity(TorService.this, 0, intent, 0);
|
|
||||||
|
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
private void showToolbarNotification (String notifyMsg, int notifyType, int icon)
|
private void showToolbarNotification (String notifyMsg, int notifyType, int icon)
|
||||||
{
|
{
|
||||||
|
|
||||||
//Reusable code.
|
//Reusable code.
|
||||||
Intent intent = new Intent(TorService.this, Orbot.class);
|
Intent intent = new Intent(TorService.this, OrbotMainActivity.class);
|
||||||
PendingIntent pendIntent = PendingIntent.getActivity(TorService.this, 0, intent, 0);
|
PendingIntent pendIntent = PendingIntent.getActivity(TorService.this, 0, intent, 0);
|
||||||
|
|
||||||
if (mNotifyBuilder == null)
|
if (mNotifyBuilder == null)
|
||||||
|
|
|
@ -6,18 +6,14 @@ package org.torproject.android.settings;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
import org.torproject.android.R;
|
||||||
import org.torproject.android.TorConstants;
|
import org.torproject.android.TorConstants;
|
||||||
import org.torproject.android.service.TorService;
|
|
||||||
import org.torproject.android.service.TorServiceUtils;
|
import org.torproject.android.service.TorServiceUtils;
|
||||||
|
|
||||||
|
|
||||||
//import android.R;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
@ -25,15 +21,10 @@ import android.content.SharedPreferences.Editor;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem.OnMenuItemClickListener;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
@ -45,6 +36,7 @@ import android.widget.ImageView;
|
||||||
import android.widget.ListAdapter;
|
import android.widget.ListAdapter;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
//import android.R;
|
||||||
|
|
||||||
public class AppManager extends Activity implements OnCheckedChangeListener, OnClickListener, TorConstants {
|
public class AppManager extends Activity implements OnCheckedChangeListener, OnClickListener, TorConstants {
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ package org.torproject.android.settings;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
|
||||||
import org.sufficientlysecure.rootcommands.RootCommands;
|
import org.sufficientlysecure.rootcommands.RootCommands;
|
||||||
|
import org.torproject.android.R;
|
||||||
import org.torproject.android.service.TorServiceUtils;
|
import org.torproject.android.service.TorServiceUtils;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -19,7 +19,6 @@ import android.preference.Preference;
|
||||||
import android.preference.Preference.OnPreferenceClickListener;
|
import android.preference.Preference.OnPreferenceClickListener;
|
||||||
import android.preference.PreferenceActivity;
|
import android.preference.PreferenceActivity;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ package org.torproject.android.ui;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
import org.torproject.android.R;
|
||||||
import org.torproject.android.TorConstants;
|
import org.torproject.android.TorConstants;
|
||||||
import org.torproject.android.service.TorServiceUtils;
|
import org.torproject.android.service.TorServiceUtils;
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ import android.content.SharedPreferences;
|
||||||
import android.content.SharedPreferences.Editor;
|
import android.content.SharedPreferences.Editor;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.torproject.android.ui;
|
package org.torproject.android.ui;
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
import org.torproject.android.R;
|
||||||
import org.torproject.android.TorConstants;
|
import org.torproject.android.TorConstants;
|
||||||
import org.torproject.android.service.TorServiceUtils;
|
import org.torproject.android.service.TorServiceUtils;
|
||||||
|
|
||||||
|
|
|
@ -7,14 +7,9 @@ import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
|
||||||
import org.sufficientlysecure.rootcommands.Shell;
|
import org.sufficientlysecure.rootcommands.Shell;
|
||||||
import org.sufficientlysecure.rootcommands.command.SimpleCommand;
|
import org.sufficientlysecure.rootcommands.command.SimpleCommand;
|
||||||
import org.torproject.android.R;
|
import org.torproject.android.R;
|
||||||
import org.torproject.android.R.id;
|
|
||||||
import org.torproject.android.R.layout;
|
|
||||||
import org.torproject.android.R.menu;
|
|
||||||
import org.torproject.android.R.raw;
|
|
||||||
import org.torproject.android.service.TorResourceInstaller;
|
import org.torproject.android.service.TorResourceInstaller;
|
||||||
import org.torproject.android.service.TorServiceConstants;
|
import org.torproject.android.service.TorServiceConstants;
|
||||||
|
|
||||||
|
|
|
@ -18,35 +18,26 @@ package org.torproject.android.vpn;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.sandroproxy.ony.R;
|
|
||||||
import org.torproject.android.Orbot;
|
|
||||||
import org.torproject.android.service.TorService;
|
|
||||||
import org.torproject.android.service.TorServiceConstants;
|
import org.torproject.android.service.TorServiceConstants;
|
||||||
|
|
||||||
import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
|
|
||||||
import com.runjva.sourceforge.jsocks.server.ServerAuthenticatorNone;
|
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.VpnService;
|
import android.net.VpnService;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.support.v4.app.NotificationCompat;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.RemoteViews;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
|
||||||
|
import com.runjva.sourceforge.jsocks.server.ServerAuthenticatorNone;
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
||||||
public class OrbotVpnService extends VpnService implements Handler.Callback {
|
public class OrbotVpnService extends VpnService implements Handler.Callback {
|
||||||
private static final String TAG = "DrobotVpnService";
|
private static final String TAG = "DrobotVpnService";
|
||||||
|
@ -61,6 +52,7 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
|
||||||
|
|
||||||
private int mSocksProxyPort = 9999;
|
private int mSocksProxyPort = 9999;
|
||||||
private ProxyServer mProxyServer;
|
private ProxyServer mProxyServer;
|
||||||
|
private Thread mThreadProxy;
|
||||||
|
|
||||||
private final static int VPN_MTU = 1500;
|
private final static int VPN_MTU = 1500;
|
||||||
|
|
||||||
|
@ -229,7 +221,6 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.start();
|
}.start();
|
||||||
clearNotifications();
|
|
||||||
super.onRevoke();
|
super.onRevoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue