Unverified Commit ecc251d0 authored by Georg Koppen's avatar Georg Koppen
Browse files

Bug 30318: Add snowflake support

parent ed2e1479
......@@ -13,3 +13,5 @@ obfs4 146.57.248.225:22 10A6CD36A537FCE513A322361547444B393989F0 cert=K1gDtDAIcU
obfs4 45.145.95.6:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
obfs4 [2a0c:4d80:42:702::1]:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
meek_lite 0.0.2.0:2 97700DFE9F483596DDA6264C4D7DF7641E1E39CE url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com
snowflake 0.0.3.0:1 2B280B23E1107BB62ABFC40DDCC8824814F80A72
......@@ -40,14 +40,17 @@ public class CustomTorInstaller extends TorInstaller {
@Override
public InputStream openBridgesStream() throws IOException {
/*
BridgesList is an overloaded field, which can cause some confusion. The list can be:
1) a filter like obfs4 or meek OR 2) it can be a custom bridge
For (1), we just pass back all bridges, the filter will occur elsewhere in the library.
For (2) we return the bridge list as a raw stream
If length is greater than 5, then we know this is a custom bridge
BridgesList is an overloaded field, which can cause some confusion.
The list can be:
1) a filter like obfs4, meek, or snowflake OR
2) it can be a custom bridge
For (1), we just pass back all bridges, the filter will occur
elsewhere in the library.
For (2) we return the bridge list as a raw stream.
If length is greater than 9, then we know this is a custom bridge
*/
String userDefinedBridgeList = Prefs.getBridgesList();
byte bridgeType = (byte) (userDefinedBridgeList.length() > 5 ? 1 : 0);
byte bridgeType = (byte) (userDefinedBridgeList.length() > 9 ? 1 : 0);
// Terrible hack. Must keep in sync with topl::addBridgesFromResources.
if (bridgeType == 0) {
switch (userDefinedBridgeList) {
......@@ -57,6 +60,9 @@ public class CustomTorInstaller extends TorInstaller {
case "meek":
bridgeType = 3;
break;
case "snowflake":
bridgeType = 4;
break;
}
}
......
......@@ -368,10 +368,12 @@ public final class TorService extends Service implements TorServiceConstants, Or
//Check bridges to see if we need this
File nativeDir = new File(getApplicationInfo().nativeLibraryDir);
File pluggableTransport = new File(nativeDir, "libObfs4proxy.so");
if(!pluggableTransport.canExecute()) pluggableTransport.setExecutable(true);
File pluggableTransportObfs = new File(nativeDir, "libObfs4proxy.so");
if(!pluggableTransportObfs.canExecute()) pluggableTransportObfs.setExecutable(true);
File pluggableTransportSnow = new File(nativeDir, "libSnowflake.so");
if(!pluggableTransportSnow.canExecute()) pluggableTransportSnow.setExecutable(true);
builder.configurePluggableTransportsFromSettings(pluggableTransport);
builder.configurePluggableTransportsFromSettings(pluggableTransportObfs, pluggableTransportSnow);
mDataService.updateConfigBuilder(builder);
onionProxyManager.getTorInstaller().updateTorConfigCustom
(builder.asString());
......
Supports Markdown
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