diff --git a/src/org/torproject/android/OrbotApp.java b/src/org/torproject/android/OrbotApp.java index 021336d6..7bbb6496 100644 --- a/src/org/torproject/android/OrbotApp.java +++ b/src/org/torproject/android/OrbotApp.java @@ -28,7 +28,7 @@ public class OrbotApp extends Application implements OrbotConstants public static File fileTor; public static File filePolipo; public static File fileObfsclient; - public static File fileMeekclient; + // public static File fileMeekclient; public static File fileXtables; public static File fileTorRc; public static File filePdnsd; @@ -48,13 +48,10 @@ public class OrbotApp extends Application implements OrbotConstants fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY); filePolipo = new File(appBinHome, TorServiceConstants.POLIPO_ASSET_KEY); fileObfsclient = new File(appBinHome, TorServiceConstants.OBFSCLIENT_ASSET_KEY); - fileMeekclient = new File(appBinHome, TorServiceConstants.MEEK_ASSET_KEY); fileXtables = new File(appBinHome, TorServiceConstants.IPTABLES_ASSET_KEY); fileTorRc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY); filePdnsd = new File(appBinHome, TorServiceConstants.PDNSD_ASSET_KEY); - - } @Override diff --git a/src/org/torproject/android/service/TorResourceInstaller.java b/src/org/torproject/android/service/TorResourceInstaller.java index 1fad9914..67dc32df 100644 --- a/src/org/torproject/android/service/TorResourceInstaller.java +++ b/src/org/torproject/android/service/TorResourceInstaller.java @@ -100,12 +100,13 @@ public class TorResourceInstaller implements TorServiceConstants { shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish(); streamToFile(is,outFile, false, true); setExecutable(outFile); - + /** is = context.getAssets().open(cpuPath + "/" + MEEK_ASSET_KEY + MP3_EXT); outFile = new File(installFolder, MEEK_ASSET_KEY); shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish(); streamToFile(is,outFile, false, true); setExecutable(outFile); + */ } diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java index 12da0092..627f2e9f 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/src/org/torproject/android/service/TorService.java @@ -61,6 +61,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.PrintWriter; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.Socket; @@ -482,25 +483,30 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon try { TorServiceUtils.killProcess(OrbotApp.fileObfsclient); } catch (IOException e) { - e.printStackTrace(); + // e.printStackTrace(); + Log.w(TAG,"could not kill obfsclient",e); cannotKillFile = OrbotApp.fileObfsclient; } + + /** try { TorServiceUtils.killProcess(OrbotApp.fileMeekclient); } catch (IOException e) { e.printStackTrace(); cannotKillFile = OrbotApp.fileMeekclient; } + */ + try { TorServiceUtils.killProcess(OrbotApp.filePolipo); } catch (IOException e) { - e.printStackTrace(); + Log.w(TAG,"could not kill polipo",e); cannotKillFile = OrbotApp.filePolipo; } try { TorServiceUtils.killProcess(OrbotApp.fileTor); } catch (IOException e) { - e.printStackTrace(); + Log.w(TAG,"could not kill tor",e); cannotKillFile = OrbotApp.fileTor; } } @@ -743,7 +749,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon if (Prefs.bridgesEnabled()) if (Prefs.useVpn() && !mIsLollipop) - customEnv.add("TOR_PT_PROXY=socks5://127.0.0.1:" + OrbotVpnService.sSocksProxyServerPort); + { + customEnv.add("TOR_PT_PROXY=socks5://" + OrbotVpnService.sSocksProxyLocalhost + ":" + OrbotVpnService.sSocksProxyServerPort); + } String baseDirectory = OrbotApp.fileTor.getParent(); Shell shellUser = Shell.startShell(customEnv, baseDirectory); @@ -1658,7 +1666,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon } catch (Exception ioe){ - debug("error requesting newnym: " + ioe.getLocalizedMessage()); + + debug("error requesting newnym: " + ioe.getLocalizedMessage()); + } } }.start(); @@ -1885,8 +1895,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon if (!mIsLollipop) { String proxyType = "socks5"; - String proxyHost = "127.0.0.1"; - extraLines.append(proxyType + "Proxy" + ' ' + proxyHost + ':' + OrbotVpnService.sSocksProxyServerPort).append('\n'); + extraLines.append(proxyType + "Proxy" + ' ' + OrbotVpnService.sSocksProxyLocalhost + ':' + OrbotVpnService.sSocksProxyServerPort).append('\n'); }; } @@ -1936,7 +1945,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon { //check if any PT bridges are needed - boolean obfsBridges = bridgeList.contains("obfs3")||bridgeList.contains("obfs4")||bridgeList.contains("scramblesuit"); + boolean obfsBridges = bridgeList.contains("obfs3")||bridgeList.contains("obfs4")||bridgeList.contains("scramblesuit")||bridgeList.contains("meek"); if (obfsBridges) { @@ -1972,7 +1981,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon debug ("Using meek bridges"); - String bridgeConfig = "meek exec " + OrbotApp.fileMeekclient.getCanonicalPath(); + // String bridgeConfig = "meek exec " + OrbotApp.fileMeekclient.getCanonicalPath(); + String bridgeConfig = "meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath(); + extraLines.append("ClientTransportPlugin" + ' ' + bridgeConfig).append('\n'); int meekIdx = 2; //let's use Azure by default diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java index 54213d93..e2f09641 100644 --- a/src/org/torproject/android/service/TorServiceConstants.java +++ b/src/org/torproject/android/service/TorServiceConstants.java @@ -141,7 +141,7 @@ public interface TorServiceConstants { //obfsproxy public static final String OBFSCLIENT_ASSET_KEY = "obfs4proxy"; - public static final String MEEK_ASSET_KEY = "meek-client"; + // public static final String MEEK_ASSET_KEY = "meek-client"; //name of the iptables binary public final static String IPTABLES_ASSET_KEY = "xtables"; @@ -155,9 +155,9 @@ public interface TorServiceConstants { //MEEK BRIDGEs public final static String[] BRIDGES_MEEK = { - "meek 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com", - "meek 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com", - "meek 0.0.2.0:3 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com" + "meek_lite 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com", + "meek_lite 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com", + "meek_lite 0.0.2.0:3 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com" }; } diff --git a/src/org/torproject/android/service/TorServiceUtils.java b/src/org/torproject/android/service/TorServiceUtils.java index b8ae024b..8549eda0 100644 --- a/src/org/torproject/android/service/TorServiceUtils.java +++ b/src/org/torproject/android/service/TorServiceUtils.java @@ -178,12 +178,12 @@ public class TorServiceUtils implements TorServiceConstants { } catch(ConnectException ce){ - ce.printStackTrace(); + //ce.printStackTrace(); return false; } catch (Exception ex) { - ex.printStackTrace(); + //ex.printStackTrace(); return false; } } diff --git a/src/org/torproject/android/vpn/OrbotVpnService.java b/src/org/torproject/android/vpn/OrbotVpnService.java index 92d868c1..c9247c29 100644 --- a/src/org/torproject/android/vpn/OrbotVpnService.java +++ b/src/org/torproject/android/vpn/OrbotVpnService.java @@ -22,6 +22,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Locale; import java.util.concurrent.TimeoutException; @@ -68,6 +69,7 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { private int mTorSocks = TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT; public static int sSocksProxyServerPort = -1; + public static String sSocksProxyLocalhost = null; private ProxyServer mSocksProxyServer; @@ -108,11 +110,7 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { if (!mIsLollipop) { - - //generate the proxy port that the - if (sSocksProxyServerPort == -1) - sSocksProxyServerPort = (int)((Math.random()*1000)+10000); - + startSocksBypass(); } @@ -151,6 +149,24 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { public void run () { + + //generate the proxy port that the + if (sSocksProxyServerPort == -1) + { + try { + + sSocksProxyLocalhost = "127.0.0.1";// InetAddress.getLocalHost().getHostAddress(); + sSocksProxyServerPort = (int)((Math.random()*1000)+10000); + + } catch (Exception e) { + Log.e(TAG,"Unable to access localhost",e); + throw new RuntimeException("Unable to access localhost: " + e); + + } + + } + + if (mSocksProxyServer != null) { stopSocksBypass (); @@ -274,7 +290,6 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { //start PDNSD daemon pointing to OpenDNS startDNS(DEFAULT_ACTUAL_DNS,53); - final String vpnName = "OrbotVPN"; final String localhost = "127.0.0.1"; @@ -392,8 +407,10 @@ public class OrbotVpnService extends VpnService implements Handler.Callback { " -c " + baseDirectory + "/pdnsd.conf"; SimpleCommand shellCommand = new SimpleCommand(cmdString); + shell.add(shellCommand).waitForFinish(); + Log.i(TAG,"PDNSD: " + shellCommand.getExitCode() + ": " + shellCommand.getOutput()); }