commit 814fbb31a58bbcfa4863376354366ac4f974fcd0 Author: n8fr8 nathan@guardianproject.info Date: Tue Jun 18 14:48:59 2019 -0400
reset default ports to 9050, 8118 but make them dynamic if needed - ports will be checked and if not available, increment +1 - new setting add to allow static setting of http port value --- app/src/main/res/values/strings.xml | 4 ++ app/src/main/res/xml/preferences.xml | 10 ++++- .../torproject/android/service/OrbotConstants.java | 50 +++++++++++----------- .../org/torproject/android/service/TorService.java | 30 ++++++++++--- .../android/service/TorServiceConstants.java | 4 +- 5 files changed, 63 insertions(+), 35 deletions(-)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d1b28772..1e0b85c5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -136,6 +136,10 @@ <string name="pref_socks_summary">Port that Tor offers its SOCKS proxy on (default: 9050 or 0 to disable)</string> <string name="pref_socks_dialog">SOCKS Port Config</string>
+ <string name="pref_http_title">Tor HTTP</string> + <string name="pref_http_summary">Port that Tor offers its HTTP proxy on (default: 8118 or 0 to disable)</string> + <string name="pref_http_dialog">HTTP Port Config</string> + <string name="pref_transport_title">Tor TransProxy Port</string> <string name="pref_transport_summary">Port that Tor offers its Transparent Proxy on (default: 9040 or 0 to disable)</string> <string name="pref_transport_dialog">TransProxy Port Config</string> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 53aa5ecd..ac596cf3 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -244,7 +244,7 @@ <PreferenceCategory android:title="Debug">
<EditTextPreference - android:defaultValue="auto" + android:defaultValue="9050" android:dialogTitle="@string/pref_socks_dialog" android:inputType="number" android:key="pref_socks" @@ -252,6 +252,14 @@ android:title="@string/pref_socks_title" />
<EditTextPreference + android:defaultValue="8118" + android:dialogTitle="@string/pref_http_dialog" + android:inputType="number" + android:key="pref_http" + android:summary="@string/pref_http_summary" + android:title="@string/pref_http_title" /> + + <EditTextPreference android:defaultValue="auto" android:dialogTitle="@string/pref_transport_dialog" android:inputType="number" diff --git a/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java b/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java index e7f09a77..0ad83f77 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java +++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java @@ -5,41 +5,41 @@ package org.torproject.android.service;
public interface OrbotConstants {
- public final static String TAG = "Orbot"; + String TAG = "Orbot";
- public final static String PREFS_KEY = "OrbotPrefs"; - public final static String PREFS_KEY_TORIFIED = "PrefTord"; + String PREFS_KEY = "OrbotPrefs"; + String PREFS_KEY_TORIFIED = "PrefTord";
- public final static int FILE_WRITE_BUFFER_SIZE = 2048; + int FILE_WRITE_BUFFER_SIZE = 2048; //path to check Tor against - public final static String URL_TOR_CHECK = "https://check.torproject.org"; + String URL_TOR_CHECK = "https://check.torproject.org"; - public final static String URL_TOR_BRIDGES = "https://bridges.torproject.org/bridges?transport="; - - public final static String PREF_BRIDGES_UPDATED = "pref_bridges_enabled"; - //public final static String PREF_BRIDGES_OBFUSCATED = "pref_bridges_obfuscated"; - public final static String PREF_OR = "pref_or"; - public final static String PREF_OR_PORT = "pref_or_port"; - public final static String PREF_OR_NICKNAME = "pref_or_nickname"; - public final static String PREF_REACHABLE_ADDRESSES = "pref_reachable_addresses"; - public final static String PREF_REACHABLE_ADDRESSES_PORTS = "pref_reachable_addresses_ports"; - public final static int RESULT_CLOSE_ALL = 0; + String URL_TOR_BRIDGES = "https://bridges.torproject.org/bridges?transport="; + + String PREF_BRIDGES_UPDATED = "pref_bridges_enabled"; + //String PREF_BRIDGES_OBFUSCATED = "pref_bridges_obfuscated"; + String PREF_OR = "pref_or"; + String PREF_OR_PORT = "pref_or_port"; + String PREF_OR_NICKNAME = "pref_or_nickname"; + String PREF_REACHABLE_ADDRESSES = "pref_reachable_addresses"; + String PREF_REACHABLE_ADDRESSES_PORTS = "pref_reachable_addresses_ports"; + int RESULT_CLOSE_ALL = 0; - public final static String PREF_DISABLE_NETWORK = "pref_disable_network"; + String PREF_DISABLE_NETWORK = "pref_disable_network"; - public final static String PREF_TOR_SHARED_PREFS = "org.torproject.android_preferences"; + String PREF_TOR_SHARED_PREFS = "org.torproject.android_preferences"; - public final static int MAX_LOG_LENGTH = 10000; - - public final static String PREF_SOCKS = "pref_socks"; + String PREF_SOCKS = "pref_socks"; + + String PREF_HTTP = "pref_http";
- public final static String PREF_ISOLATE_DEST = "pref_isolate_dest"; + String PREF_ISOLATE_DEST = "pref_isolate_dest";
- public final static String PREF_CONNECTION_PADDING = "pref_connection_padding"; - public final static String PREF_REDUCED_CONNECTION_PADDING = "pref_reduced_connection_padding"; + String PREF_CONNECTION_PADDING = "pref_connection_padding"; + String PREF_REDUCED_CONNECTION_PADDING = "pref_reduced_connection_padding";
- public final static String PREF_PREFER_IPV6 = "pref_prefer_ipv6"; - public final static String PREF_DISABLE_IPV4 = "pref_disable_ipv4"; + String PREF_PREFER_IPV6 = "pref_prefer_ipv6"; + String PREF_DISABLE_IPV4 = "pref_disable_ipv4";
} diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorService.java b/orbotservice/src/main/java/org/torproject/android/service/TorService.java index f4785a0f..cbd06301 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/TorService.java +++ b/orbotservice/src/main/java/org/torproject/android/service/TorService.java @@ -656,13 +656,20 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon // extraLines.append("RunAsDaemon 1").append('\n'); // extraLines.append("AvoidDiskWrites 1").append('\n');
- String socksPortPref = prefs.getString(OrbotConstants.PREF_SOCKS, String.valueOf(TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT)); + String socksPortPref = prefs.getString(OrbotConstants.PREF_SOCKS, (TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT));
if (socksPortPref.indexOf(':')!=-1) socksPortPref = socksPortPref.split(":")[1];
socksPortPref = checkPortOrAuto(socksPortPref);
+ String httpPortPref = prefs.getString(OrbotConstants.PREF_HTTP, (TorServiceConstants.HTTP_PROXY_PORT_DEFAULT)); + + if (httpPortPref.indexOf(':')!=-1) + httpPortPref = httpPortPref.split(":")[1]; + + httpPortPref = checkPortOrAuto(httpPortPref); + String isolate = ""; if(prefs.getBoolean(OrbotConstants.PREF_ISOLATE_DEST, false)) { @@ -745,17 +752,26 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
}
- private String checkPortOrAuto (String port) + private String checkPortOrAuto (String portString) { - if (!port.equalsIgnoreCase("auto")) + if (!portString.equalsIgnoreCase("auto")) { - boolean isPortUsed = TorServiceUtils.isPortOpen("127.0.0.1",Integer.parseInt(port),500); + boolean isPortUsed = true; + int port = Integer.parseInt(portString); + + while (isPortUsed) { + isPortUsed = TorServiceUtils.isPortOpen("127.0.0.1", port, 500);
- if (isPortUsed) //the specified port is not available, so let Tor find one instead - port = "auto"; + if (isPortUsed) //the specified port is not available, so let Tor find one instead + port++; + } + + + return port + ""; }
- return port; + return portString; + }
public boolean updateTorConfigCustom(File fileTorRcCustom, String extraLines) throws IOException, FileNotFoundException, TimeoutException { diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java index dcbb824a..8898439e 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java +++ b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java @@ -61,8 +61,8 @@ public interface TorServiceConstants { // String TOR_VPN_DNS_LISTEN_ADDRESS = "127.0.0.1"; // int CONTROL_PORT_DEFAULT = 9051; - String HTTP_PROXY_PORT_DEFAULT = "auto"; // like Privoxy! - String SOCKS_PROXY_PORT_DEFAULT = "auto"; + String HTTP_PROXY_PORT_DEFAULT = "8118"; // like Privoxy! + String SOCKS_PROXY_PORT_DEFAULT = "9050";
//path to check Tor against String URL_TOR_CHECK = "https://check.torproject.org";
tor-commits@lists.torproject.org