[tor-commits] [tor-browser-build/master] Bug 40188: Build and ship snowflake only if it is enabled

sysrqb at torproject.org sysrqb at torproject.org
Tue Jan 26 23:41:08 UTC 2021


commit a933946d441b87255de74271480a24332f5498c3
Author: Georg Koppen <gk at torproject.org>
Date:   Sat Jan 16 21:05:38 2021 +0000

    Bug 40188: Build and ship snowflake only if it is enabled
---
 ...01-Revert-Bug-30318-Add-snowflake-support.patch | 78 ++++++++++++++++++++++
 projects/tor-android-service/build                 |  4 +-
 projects/tor-android-service/config                |  2 +
 projects/tor-onion-proxy-library/build             | 29 +++++---
 projects/tor-onion-proxy-library/config            |  5 ++
 5 files changed, 108 insertions(+), 10 deletions(-)

diff --git a/projects/tor-android-service/0001-Revert-Bug-30318-Add-snowflake-support.patch b/projects/tor-android-service/0001-Revert-Bug-30318-Add-snowflake-support.patch
new file mode 100644
index 0000000..b7be2ae
--- /dev/null
+++ b/projects/tor-android-service/0001-Revert-Bug-30318-Add-snowflake-support.patch
@@ -0,0 +1,78 @@
+From f3cf622e537a1283b821b3f3ce8e396a01bcb84b Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk at torproject.org>
+Date: Sat, 16 Jan 2021 20:56:30 +0000
+Subject: [PATCH] Revert "Bug 30318: Add snowflake support"
+
+This reverts commit ecc251d0a73f7e2034a271efd28036a0108b8688.
+
+diff --git a/service/src/main/assets/common/bridges.txt b/service/src/main/assets/common/bridges.txt
+index 1525eba..fe37735 100644
+--- a/service/src/main/assets/common/bridges.txt
++++ b/service/src/main/assets/common/bridges.txt
+@@ -13,5 +13,3 @@ obfs4 45.145.95.6:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0
+ obfs4 [2a0c:4d80:42:702::1]:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
+ obfs4 51.222.13.177:80 5EDAC3B810E12B01F6FD8050D2FD3E277B289A08 cert=2uplIpLQ0q9+0qMFrK5pkaYRDOe460LL9WHBvatgkuRr/SL31wBOEupaMMJ6koRE6Ld0ew 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 52bc4fe..198c981 100644
+--- a/service/src/main/java/org/torproject/android/service/CustomTorInstaller.java
++++ b/service/src/main/java/org/torproject/android/service/CustomTorInstaller.java
+@@ -40,17 +40,14 @@ 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, 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
++            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
+          */
+         String userDefinedBridgeList = Prefs.getBridgesList();
+-        byte bridgeType = (byte) (userDefinedBridgeList.length() > 9 ? 1 : 0);
++        byte bridgeType = (byte) (userDefinedBridgeList.length() > 5 ? 1 : 0);
+         // Terrible hack. Must keep in sync with topl::addBridgesFromResources.
+         if (bridgeType == 0) {
+             switch (userDefinedBridgeList) {
+@@ -60,9 +57,6 @@ 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 f1ddcda..32d7f30 100644
+--- a/service/src/main/java/org/torproject/android/service/TorService.java
++++ b/service/src/main/java/org/torproject/android/service/TorService.java
+@@ -365,12 +365,10 @@ public final class TorService extends Service implements TorServiceConstants, Or
+ 
+             //Check bridges to see if we need this
+             File nativeDir = new File(getApplicationInfo().nativeLibraryDir);
+-            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);
++            File pluggableTransport = new File(nativeDir, "libObfs4proxy.so");
++            if(!pluggableTransport.canExecute()) pluggableTransport.setExecutable(true);
+ 
+-            builder.configurePluggableTransportsFromSettings(pluggableTransportObfs, pluggableTransportSnow);
++            builder.configurePluggableTransportsFromSettings(pluggableTransport);
+             mDataService.updateConfigBuilder(builder);
+             onionProxyManager.getTorInstaller().updateTorConfigCustom
+                     (builder.asString());
+-- 
+2.30.0
+
diff --git a/projects/tor-android-service/build b/projects/tor-android-service/build
index 3989001..7efd708 100644
--- a/projects/tor-android-service/build
+++ b/projects/tor-android-service/build
@@ -13,7 +13,9 @@ mkdir -p /var/tmp/build $output_dir
 tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
 
 cd /var/tmp/build/[% project %]-[% c('version') %]
-
+[% IF ! c("var/snowflake") %]
+  patch -p1 < $rootdir/0001-Revert-Bug-30318-Add-snowflake-support.patch
+[% END %]
 # Replace pre-packaged tor library with the latest build
 rm -fR service/src/main/jniLibs/*
 [% FOREACH arch = ['armv7', 'aarch64', 'x86', 'x86_64'] -%]
diff --git a/projects/tor-android-service/config b/projects/tor-android-service/config
index 81a4159..d6d2fed 100644
--- a/projects/tor-android-service/config
+++ b/projects/tor-android-service/config
@@ -22,6 +22,8 @@ input_files:
     exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
   - project: tor-onion-proxy-library
     name: topl
+  - filename: 0001-Revert-Bug-30318-Add-snowflake-support.patch
+    enable: '[% ! c("var/snowflake") %]'
   - project: tor
     name: tor-armv7
     target_prepend:
diff --git a/projects/tor-onion-proxy-library/build b/projects/tor-onion-proxy-library/build
index 7865aa7..c9b1e7a 100644
--- a/projects/tor-onion-proxy-library/build
+++ b/projects/tor-onion-proxy-library/build
@@ -20,31 +20,42 @@ cd /var/tmp/build/[% project %]-[% c('version') %]
 # build will pull down the correct android tool versions
 patch -p1 < $rootdir/gradle.patch
 patch -p1 < $rootdir/0001-Bug-33931-Filter-bridges-in-stream-by-type.patch
-patch -p1 < $rootdir/0001-Bug-30318-Add-snowflake-support.patch
+[% IF c("var/snowflake") %]
+  patch -p1 < $rootdir/0001-Bug-30318-Add-snowflake-support.patch
+[% END %]
 
 [% FOREACH arch = ['armv7', 'aarch64', 'x86', 'x86_64'] -%]
   # Extract obfs4proxy from TorBrowser/Tor/PluggableTransports/obfs4proxy
   tar --strip-components=4 -xf $rootdir/[% c('input_files_by_name/obfs4-' _ arch) %]
 
-  # Extract snowflake from TorBrowser/Tor/PluggableTransports/snowflake
-  tar --strip-components=4 -xf $rootdir/[% c('input_files_by_name/snowflake-' _ arch) %]
-
+  [% IF c("var/snowflake") %]
+    # Extract snowflake from TorBrowser/Tor/PluggableTransports/snowflake
+    tar --strip-components=4 -xf $rootdir/[% c('input_files_by_name/snowflake-' _ arch) %]
+  [% END %]
   # Overwrite the obfs4proxy binary provided by Pluto and add Snowflake
   [% IF arch == "armv7" -%]
     cp obfs4proxy external/pluto/bin/armeabi-v7a/
     cp obfs4proxy external/pluto/bin/armeabi/
-    cp snowflake-client external/pluto/bin/armeabi-v7a/
-    cp snowflake-client external/pluto/bin/armeabi/
+    [% IF c("var/snowflake") %]
+      cp snowflake-client external/pluto/bin/armeabi-v7a/
+      cp snowflake-client external/pluto/bin/armeabi/
+    [% END %]
   [% ELSIF arch == "aarch64" -%]
     cp obfs4proxy external/pluto/bin/arm64-v8a/
-    cp snowflake-client external/pluto/bin/arm64-v8a/
+    [% IF c("var/snowflake") %]
+      cp snowflake-client external/pluto/bin/arm64-v8a/
+    [% END %]
   [% ELSE -%]
     cp obfs4proxy external/pluto/bin/[% arch %]/
-    cp snowflake-client external/pluto/bin/[% arch %]/
+    [% IF c("var/snowflake") %]
+      cp snowflake-client external/pluto/bin/[% arch %]/
+    [% END %]
   [% END -%]
 
   rm obfs4proxy
-  rm snowflake-client
+  [% IF c("var/snowflake") %]
+    rm snowflake-client
+  [% END %]
 [% END -%]
 
 # Build Android Libraries and Apps
diff --git a/projects/tor-onion-proxy-library/config b/projects/tor-onion-proxy-library/config
index 401142c..d07c37b 100644
--- a/projects/tor-onion-proxy-library/config
+++ b/projects/tor-onion-proxy-library/config
@@ -39,21 +39,26 @@ input_files:
     name: snowflake-armv7
     target_prepend:
       - android-armv7
+    enable: '[% c("var/snowflake") %]'
   - project: snowflake
     name: snowflake-aarch64
     target_prepend:
       - android-aarch64
+    enable: '[% c("var/snowflake") %]'
   - project: snowflake
     name: snowflake-x86
     target_prepend:
       - android-x86
+    enable: '[% c("var/snowflake") %]'
   - project: snowflake
     name: snowflake-x86_64
     target_prepend:
       - android-x86_64
+    enable: '[% c("var/snowflake") %]'
   - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
     name: gradle-dependencies
     exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
   - filename: gradle.patch
   - filename: 0001-Bug-33931-Filter-bridges-in-stream-by-type.patch
   - filename: 0001-Bug-30318-Add-snowflake-support.patch
+    enable: '[% c("var/snowflake") %]'





More information about the tor-commits mailing list