[tbb-commits] [tor-browser/tor-browser-60.1.0esr-8.0-1] Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.
gk at torproject.org
gk at torproject.org
Fri Jul 27 08:37:27 UTC 2018
commit ebc4951c6b23a345c1cf6d99fd4be2b2a6a22e78
Author: Amogh Pradeep <amoghbl1 at gmail.com>
Date: Fri Jun 12 02:07:45 2015 -0400
Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.
See Bug 1357997 for partial uplift.
---
.../java/org/mozilla/gecko/util/ProxySelector.java | 25 +++++++++++++++++++++-
.../org/mozilla/gecko/sync/net/BaseResource.java | 7 ++++++
.../service/utils/AbstractCommunicator.java | 11 +++++++---
3 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java
index 35010242b22d..f05716fe1d09 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java
@@ -29,6 +29,10 @@ import java.net.URLConnection;
import java.util.List;
public class ProxySelector {
+ private static final String TOR_PROXY_ADDRESS = "127.0.0.1";
+ private static final int TOR_SOCKS_PROXY_PORT = 9050;
+ private static final int TOR_HTTP_PROXY_PORT = 8118;
+
public static URLConnection openConnectionWithProxy(URI uri) throws IOException {
java.net.ProxySelector ps = java.net.ProxySelector.getDefault();
Proxy proxy = Proxy.NO_PROXY;
@@ -39,7 +43,26 @@ public class ProxySelector {
}
}
- return uri.toURL().openConnection(proxy);
+ /* Ignore the proxy we found from the VM, only use Tor. We can probably
+ * safely use the logic in this class in the future. */
+ return uri.toURL().openConnection(getProxy());
+ }
+
+ public static Proxy getProxy() {
+ // TODO make configurable
+ return new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(TOR_PROXY_ADDRESS, TOR_SOCKS_PROXY_PORT));
+ }
+
+ public static String getProxyHostAddress() {
+ return TOR_PROXY_ADDRESS;
+ }
+
+ public static int getSocksProxyPort() {
+ return TOR_SOCKS_PROXY_PORT;
+ }
+
+ public static int getHttpProxyPort() {
+ return TOR_HTTP_PROXY_PORT;
}
public ProxySelector() {
diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java
index 6abe5efc9cb5..48d51be8b42d 100644
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java
+++ b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java
@@ -23,9 +23,11 @@ import org.json.simple.JSONObject;
import org.mozilla.gecko.background.common.GlobalConstants;
import org.mozilla.gecko.background.common.log.Logger;
import org.mozilla.gecko.sync.ExtendedJSONObject;
+import org.mozilla.gecko.util.ProxySelector;
import ch.boye.httpclientandroidlib.Header;
import ch.boye.httpclientandroidlib.HttpEntity;
+import ch.boye.httpclientandroidlib.HttpHost;
import ch.boye.httpclientandroidlib.HttpResponse;
import ch.boye.httpclientandroidlib.HttpVersion;
import ch.boye.httpclientandroidlib.client.AuthCache;
@@ -40,6 +42,7 @@ import ch.boye.httpclientandroidlib.client.methods.HttpRequestBase;
import ch.boye.httpclientandroidlib.client.methods.HttpUriRequest;
import ch.boye.httpclientandroidlib.client.protocol.ClientContext;
import ch.boye.httpclientandroidlib.conn.ClientConnectionManager;
+import ch.boye.httpclientandroidlib.conn.params.ConnRoutePNames;
import ch.boye.httpclientandroidlib.conn.scheme.PlainSocketFactory;
import ch.boye.httpclientandroidlib.conn.scheme.Scheme;
import ch.boye.httpclientandroidlib.conn.scheme.SchemeRegistry;
@@ -215,6 +218,10 @@ public class BaseResource implements Resource {
// We could reuse these client instances, except that we mess around
// with their parameters… so we'd need a pool of some kind.
client = new DefaultHttpClient(getConnectionManager());
+ /* TBA: We need a HTTP Proxy here */
+ HttpHost defaultProxy = new HttpHost(ProxySelector.getProxyHostAddress(),
+ ProxySelector.getHttpProxyPort());
+ client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, defaultProxy);
// TODO: Eventually we should use Apache HttpAsyncClient. It's not out of alpha yet.
// Until then, we synchronously make the request, then invoke our delegate's callback.
diff --git a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java
index 4e30cb7deeb7..9b3ee98f89db 100644
--- a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java
+++ b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java
@@ -7,6 +7,7 @@ package org.mozilla.mozstumbler.service.utils;
import android.os.Build;
import android.util.Log;
+import org.mozilla.gecko.util.ProxySelector;
import org.mozilla.mozstumbler.service.AppGlobals;
import org.mozilla.mozstumbler.service.Prefs;
@@ -16,7 +17,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
-import java.net.URL;
+import java.net.URI;
public abstract class AbstractCommunicator {
@@ -72,8 +73,12 @@ public abstract class AbstractCommunicator {
if (sMozApiKey == null || prefs != null) {
sMozApiKey = prefs.getMozApiKey();
}
- URL url = new URL(getUrlString() + "?key=" + sMozApiKey);
- mHttpURLConnection = (HttpURLConnection) url.openConnection();
+
+ /* TBA: This was a URL, but the connection logic would simply
+ * convert the URL into a URI, and then later convert the URI back
+ * into a URL. Creating a URL at the beginning is only wasteful. */
+ URI uri = new URI(getUrlString() + "?key=" + sMozApiKey);
+ mHttpURLConnection = (HttpURLConnection) ProxySelector.openConnectionWithProxy(uri);
mHttpURLConnection.setRequestMethod("POST");
} catch (MalformedURLException e) {
throw new IllegalArgumentException(e);
More information about the tbb-commits
mailing list