[tor-commits] [tor-android-service/master] Bug 30318: Add snowflake support

sysrqb at torproject.org sysrqb at torproject.org
Fri May 29 17:55:47 UTC 2020


commit ecc251d0a73f7e2034a271efd28036a0108b8688
Author: Georg Koppen <gk at torproject.org>
Date:   Sat May 9 19:33:18 2020 +0000

    Bug 30318: Add snowflake support
---
 service/src/main/assets/common/bridges.txt             |  2 ++
 .../torproject/android/service/CustomTorInstaller.java | 18 ++++++++++++------
 .../org/torproject/android/service/TorService.java     |  8 +++++---
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/service/src/main/assets/common/bridges.txt b/service/src/main/assets/common/bridges.txt
index 9ab9098..a913c11 100644
--- a/service/src/main/assets/common/bridges.txt
+++ b/service/src/main/assets/common/bridges.txt
@@ -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
diff --git a/service/src/main/java/org/torproject/android/service/CustomTorInstaller.java b/service/src/main/java/org/torproject/android/service/CustomTorInstaller.java
index 198c981..52bc4fe 100644
--- a/service/src/main/java/org/torproject/android/service/CustomTorInstaller.java
+++ b/service/src/main/java/org/torproject/android/service/CustomTorInstaller.java
@@ -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;
             }
         }
 
diff --git a/service/src/main/java/org/torproject/android/service/TorService.java b/service/src/main/java/org/torproject/android/service/TorService.java
index 16d2537..971c2e9 100644
--- a/service/src/main/java/org/torproject/android/service/TorService.java
+++ b/service/src/main/java/org/torproject/android/service/TorService.java
@@ -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());



More information about the tor-commits mailing list