commit a933946d441b87255de74271480a24332f5498c3 Author: Georg Koppen gk@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@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") %]'