[tor-commits] [orbot/master] add experimental snowflake proxy support

n8fr8 at torproject.org n8fr8 at torproject.org
Wed Dec 22 21:55:06 UTC 2021


commit 63ea5b12f3b24bab739515de1eac87caae7a9090
Author: n8fr8 <nathan at guardianproject.info>
Date:   Mon Feb 22 15:07:04 2021 -0500

    add experimental snowflake proxy support
---
 app/src/main/res/values/strings.xml                              | 2 ++
 app/src/main/res/xml/preferences.xml                             | 9 +++++++++
 .../main/java/org/torproject/android/service/OrbotService.java   | 9 ++++++---
 .../src/main/java/org/torproject/android/service/util/Prefs.java | 9 +++++++++
 4 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a624ccc4..71e5b004 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -263,4 +263,6 @@
     <string name="paste_bridges">Paste Bridges</string>
     <string name="use_qr_code">Use QR Code</string>
     <string name="bridge_snowflake">Connect through other Tor peers (experimental)</string>
+    <string name="be_a_snowflake_title">Run Snowflake Proxy</string>
+    <string name="be_a_snowflake_desc">Allow other Tor users to connect to Tor through your device</string>
 </resources>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 506e9d9b..f273f318 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -291,4 +291,13 @@
             android:title="@string/pref_disable_network_title" />
 
     </PreferenceCategory>
+    <PreferenceCategory android:title="Experimental">
+        <CheckBoxPreference
+            android:defaultValue="false"
+            android:key="pref_be_a_snowflake"
+            android:summary="@string/be_a_snowflake_title"
+            android:title="@string/be_a_snowflake_desc" />
+
+    </PreferenceCategory>
+
 </PreferenceScreen>
diff --git a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
index 4aae0cef..2807a2c0 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
@@ -351,7 +351,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
         return bridgeList.contains("snowflake");
     }
 
-    private void startSnowflakeProxy() {
+    private void startSnowflakeClient() {
         //this is using the current, default Tor snowflake infrastructure
         IPtProxy.startSnowflake("stun:stun.l.google.com:19302", "https://snowflake-broker.azureedge.net/",
                 "ajax.aspnetcdn.com", null, true, false, true, 3);
@@ -361,7 +361,8 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
     This is to host a snowflake entrance node / bridge
      */
     private void runSnowflakeProxy () {
-        
+
+
         // @param capacity Maximum concurrent clients. OPTIONAL. Defaults to 10, if 0.
 // @param broker Broker URL. OPTIONAL. Defaults to https://snowflake-broker.bamsoftware.com/, if empty.
 // @param relay WebSocket relay URL. OPTIONAL. Defaults to wss://snowflake.bamsoftware.com/, if empty.
@@ -1659,8 +1660,10 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
                         IPtProxy.startObfs4Proxy("DEBUG", false, false);
 
                     if (useIPtSnowflakeProxy())
-                        startSnowflakeProxy();
+                        startSnowflakeClient();
 
+                    if (Prefs.beSnowflakeProxy())
+                        runSnowflakeProxy();
 
                     startTor();
                     replyWithStatus(mIntent);
diff --git a/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java b/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java
index cc4c9b98..1b2922a7 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java
@@ -20,6 +20,7 @@ public class Prefs {
     private final static String PREF_OPEN_PROXY_ON_ALL_INTERFACES = "pref_open_proxy_on_all_interfaces";
     private final static String PREF_USE_VPN = "pref_vpn";
     private final static String PREF_EXIT_NODES = "pref_exit_nodes";
+    private final static String PREF_BE_A_SNOWFLAKE = "pref_be_a_snowflake";
 
     private static SharedPreferences prefs;
 
@@ -61,6 +62,14 @@ public class Prefs {
         return prefs.getString(PREF_DEFAULT_LOCALE, Locale.getDefault().getLanguage());
     }
 
+    public static boolean beSnowflakeProxy () {
+        return prefs.getBoolean(PREF_BE_A_SNOWFLAKE,false);
+    }
+
+    public static void setBeSnowflakeProxy (boolean beSnowflakeProxy) {
+        putBoolean(PREF_BE_A_SNOWFLAKE,beSnowflakeProxy);
+    }
+
     public static void setDefaultLocale(String value) {
         putString(PREF_DEFAULT_LOCALE, value);
     }





More information about the tor-commits mailing list