Commit ead852b9 authored by Amogh Pradeep's avatar Amogh Pradeep Committed by Matthew Finkel
Browse files

Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.

See Bug 1357997 for partial uplift.

Also:
Bug 28051 - Use our Orbot for proxying our connections

Bug 31144 - ESR68 Network Code Review
parent 6e8ec5f3
......@@ -1787,39 +1787,41 @@ public class GeckoAppShell {
@WrapForJNI
private static URLConnection getConnection(final String url) {
try {
String spec;
if (url.startsWith("android://")) {
spec = url.substring(10);
} else {
spec = url.substring(8);
}
// Check if we are loading a package icon.
try {
if (spec.startsWith("icon/")) {
String[] splits = spec.split("/");
if (splits.length != 2) {
return null;
}
final String pkg = splits[1];
final PackageManager pm = getApplicationContext().getPackageManager();
final Drawable d = pm.getApplicationIcon(pkg);
final Bitmap bitmap = getBitmapFromDrawable(d);
return new BitmapConnection(bitmap);
}
} catch (Exception ex) {
Log.e(LOGTAG, "error", ex);
}
// if the colon got stripped, put it back
int colon = spec.indexOf(':');
if (colon == -1 || colon > spec.indexOf('/')) {
spec = spec.replaceFirst("/", ":/");
}
} catch (Exception ex) {
return null;
}
// Bug 31144 - Prevent potential proxy-bypass
//try {
// String spec;
// if (url.startsWith("android://")) {
// spec = url.substring(10);
// } else {
// spec = url.substring(8);
// }
// // Check if we are loading a package icon.
// try {
// if (spec.startsWith("icon/")) {
// String[] splits = spec.split("/");
// if (splits.length != 2) {
// return null;
// }
// final String pkg = splits[1];
// final PackageManager pm = getApplicationContext().getPackageManager();
// final Drawable d = pm.getApplicationIcon(pkg);
// final Bitmap bitmap = getBitmapFromDrawable(d);
// return new BitmapConnection(bitmap);
// }
// } catch (Exception ex) {
// Log.e(LOGTAG, "error", ex);
// }
// // if the colon got stripped, put it back
// int colon = spec.indexOf(':');
// if (colon == -1 || colon > spec.indexOf('/')) {
// spec = spec.replaceFirst("/", ":/");
// }
//} catch (Exception ex) {
// return null;
//}
return null;
}
......
......@@ -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 = 9150;
private static final int TOR_HTTP_PROXY_PORT = 8218;
public static URLConnection openConnectionWithProxy(final 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() {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment