commit 933b2e9b4ec4dd3d683953d2c5a7caba93f3effc Author: Nathan Freitas nathan@freitas.net Date: Fri Apr 10 22:29:13 2015 -0400
Small VPN and socket monitoring related fixes --- src/org/torproject/android/service/TorService.java | 24 +++----- .../torproject/android/vpn/OrbotVpnService.java | 61 ++++++++++++++++++-- 2 files changed, 64 insertions(+), 21 deletions(-)
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java index 3e7edc6..e26dca2 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/src/org/torproject/android/service/TorService.java @@ -727,7 +727,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon extraLines.append("AutomapHostsOnResolve 1").append('\n');
extraLines.append("DisableNetwork 0").append('\n'); - + //.extraLines.append("CircuitStreamTimeout 60").append('\n');
processSettingsImpl(extraLines); @@ -974,7 +974,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon return true; }
- private boolean runTorShellCmd(Shell shell) throws Exception + private boolean runTorShellCmd(final Shell shell) throws Exception {
String torrcPath = new File(appBinHome, TORRC_ASSET_KEY).getCanonicalPath(); @@ -1005,18 +1005,16 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
shellTorCommand = new SimpleCommand(torCmdString); shell.add(shellTorCommand).waitForFinish(); - exitCode = shellTorCommand.getExitCode(); output = shellTorCommand.getOutput();
- if (exitCode != 0 && output != null && output.length() > 0) { logNotice("Tor (" + exitCode + "): " + output); //throw new Exception ("unable to start"); return false; } - + //now try to connect mLastProcessId = initControlConnection (100,false);
@@ -1031,7 +1029,6 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon {
logNotice("Tor started; process id=" + mLastProcessId); -
}
@@ -1749,7 +1746,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon Proxy proxy = null;
- if (mUseVPN) + if (!mUseVPN) //if not on the VPN then we should proxy { proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8118)); conn = new URL(ONIONOO_BASE_URL + mNode.id).openConnection(proxy); @@ -2211,13 +2208,14 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
if (mUseVPN) //set the proxy here if we aren't using a bridge { + /* if (!mIsLollipop) { String proxyType = "socks5"; String proxyHost = "127.0.0.1"; extraLines.append(proxyType + "Proxy" + ' ' + proxyHost + ':' + mVpnProxyPort).append('\n'); }; - + */ } else { @@ -2294,14 +2292,6 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon } - /** - extraLines.append("Bridge obfs3 192.36.31.74:35870 FEB63CA5EBD805C42DC0E5FBDDE82F3B1CDD80B4\n"); - extraLines.append("Bridge obfs3 131.72.136.85:52447 1AC601EA50397948DD5FB5B453922EB8A69A5EF6\n"); - extraLines.append("Bridge obfs3 192.36.31.76:33439 54C59DF0FCEE2D08F789CA04E5B57519071C232B\n"); - */ - - // extraLines.append("Bridge obfs4 54.66.226.196:18965 95151988DC29FCCB4F610A1C700A1DDF7D5FFBD4 cert=3wYo19iAMNbfO7snEeqVBmsIat+RMmMDV5BV4jDvXuz9BaACXt7XffC8Dz8J1MUvLKHKaQ iat-mode=0\n"); - } else { @@ -2617,5 +2607,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon // TODO Auto-generated method stub return null; } + +
} diff --git a/src/org/torproject/android/vpn/OrbotVpnService.java b/src/org/torproject/android/vpn/OrbotVpnService.java index bc06f43..4c214ed 100644 --- a/src/org/torproject/android/vpn/OrbotVpnService.java +++ b/src/org/torproject/android/vpn/OrbotVpnService.java @@ -16,7 +16,6 @@
package org.torproject.android.vpn;
-import java.io.IOException; import java.net.InetAddress; import java.util.Locale;
@@ -86,7 +85,9 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { } if (!isLollipop) + { startSocksBypass(); + } setupTun2Socks(); } @@ -114,8 +115,7 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
return START_STICKY; } - - + private void startSocksBypass() {
@@ -183,7 +183,7 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
Tun2Socks.Stop();
- stopSocksBypass (); + //stopSocksBypass ();
if (mInterface != null){ try @@ -203,6 +203,9 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { Log.d(TAG,"error stopping tun2socks",e); } } + + mThreadVPN = null; + }
@Override @@ -310,5 +313,53 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { super.onRevoke(); }
- + /* + private void monitorSocketsFD () + { + + final String fdPath = "/proc/self/fd/"; + + new Thread () + { + public void run () + { + while (mThreadVPN != null) + { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + try + { + + File fileDir = new File(fdPath); + File[] files = fileDir.listFiles(); + if (files != null) + for (File file : files) + { + String cPath = file.getCanonicalPath(); + + if (cPath.contains("socket")) + { + Log.d(TAG,"found FD for socket: " + file.getAbsolutePath()); + + protect(Integer.parseInt(file.getName())); + + } + + } + } + catch (Exception e) + { + Log.e(TAG,"error getting fd: " + fdPath,e); + } + } + } + }.start(); + + } + */ }
tor-commits@lists.torproject.org