commit 798ef6eb5d00007f8d0b7b147841061821d8a091
Author: b <dsnake(a)protonmail.com>
Date: Tue Dec 14 18:39:18 2021 -0500
Experimental show snowflake toast when client connects to proxy...
---
app/src/main/res/values/strings.xml | 3 +++
app/src/main/res/xml/preferences.xml | 7 +++++++
.../android/core/ui/SettingsPreferencesActivity.kt | 1 +
.../java/org/torproject/android/service/OrbotService.java | 13 ++++++++++---
.../java/org/torproject/android/service/util/Prefs.java | 5 +++++
orbotservice/src/main/res/values/strings.xml | 3 +++
6 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c3a43f01..9ba83a26 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -259,6 +259,9 @@
<string name="be_a_snowflake_title_limit">Snowflake Proxy Limits</string>
<string name="be_a_snowflake_desc_limit">Only when device is plugged in and on wifi</string>
<string name="snowflake_proxy_enabled">SNOWFLAKE PROXY MODE ENABLED</string>
+ <string name="snowflake_proxy_msg_title">Show Connection Notification</string>
+ <string name="snowflake_proxy_msg_description">Show a message when your snowflake helps someone circumvent censorship</string>
+
</resources>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index a05bce87..60619894 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -297,6 +297,13 @@
android:key="pref_be_a_snowflake"
android:title="@string/be_a_snowflake_title"
android:summary="@string/be_a_snowflake_desc" />
+
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="pref_show_snowflake_proxy_msg"
+ android:title="@string/snowflake_proxy_msg_title"
+ android:summary="@string/snowflake_proxy_msg_description"/>
+
<!-- <CheckBoxPreference-->
<!-- android:defaultValue="false"-->
<!-- android:key="pref_be_a_snowflake_limit"-->
diff --git a/appcore/src/main/java/org/torproject/android/core/ui/SettingsPreferencesActivity.kt b/appcore/src/main/java/org/torproject/android/core/ui/SettingsPreferencesActivity.kt
index 79f00544..5fe575ad 100644
--- a/appcore/src/main/java/org/torproject/android/core/ui/SettingsPreferencesActivity.kt
+++ b/appcore/src/main/java/org/torproject/android/core/ui/SettingsPreferencesActivity.kt
@@ -35,6 +35,7 @@ class SettingsPreferencesActivity : PreferenceActivity() {
val bridgesEnabled = getSharedPreferences("org.torproject.android_preferences", MODE_MULTI_PROCESS).getBoolean("pref_bridges_enabled", false)
findPreference("pref_be_a_snowflake")?.isEnabled = !bridgesEnabled
findPreference("pref_be_a_snowflake_limit")?.isEnabled = !bridgesEnabled
+ findPreference("pref_show_snowflake_proxy_msg")?.isEnabled = !bridgesEnabled
}
override fun attachBaseContext(newBase: Context) = super.attachBaseContext(LocaleHelper.onAttach(newBase))
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 495e2739..8520a815 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
@@ -36,6 +36,7 @@ import android.os.IBinder;
import android.provider.BaseColumns;
import android.text.TextUtils;
import android.util.Log;
+import android.widget.Toast;
import net.freehaven.tor.control.TorControlCommands;
import net.freehaven.tor.control.TorControlConnection;
@@ -74,7 +75,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
import IPtProxy.IPtProxy;
-
+import IPtProxy.SnowflakeClientConnected;
import androidx.annotation.ChecksSdkIntAtLeast;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
@@ -372,8 +373,14 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
String logFile = null;
boolean keepLocalAddresses = true;
boolean unsafeLogging = false;
- IPtProxy.startSnowflakeProxy(capacity, broker, relay, stun, natProbe, logFile, keepLocalAddresses, unsafeLogging, null);
-
+ SnowflakeClientConnected callback = null;
+ if (Prefs.showSnowflakeProxyMessage()) {
+ callback = (SnowflakeClientConnected) () -> {
+ String message = String.format(getString(R.string.snowflake_proxy_client_connected_msg), "❄️", "❄️");
+ Toast.makeText(this, message, Toast.LENGTH_LONG).show();
+ };
+ }
+ IPtProxy.startSnowflakeProxy(capacity, broker, relay, stun, natProbe, logFile, keepLocalAddresses, unsafeLogging, callback);
logNotice("Snowflake Proxy mode ENABLED");
}
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 eaec24e5..d12cc6a6 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
@@ -21,6 +21,7 @@ public class Prefs {
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 final static String PREF_SHOW_SNOWFLAKE_MSG = "pref_show_snowflake_proxy_msg";
private final static String PREF_BE_A_SNOWFLAKE_LIMIT = "pref_be_a_snowflake_limit";
private final static String PREF_HOST_ONION_SERVICES = "pref_host_onionservices";
@@ -78,6 +79,10 @@ public class Prefs {
return prefs.getBoolean(PREF_BE_A_SNOWFLAKE,false);
}
+ public static boolean showSnowflakeProxyMessage() {
+ return prefs.getBoolean(PREF_SHOW_SNOWFLAKE_MSG, false);
+ }
+
public static void setBeSnowflakeProxy (boolean beSnowflakeProxy) {
putBoolean(PREF_BE_A_SNOWFLAKE,beSnowflakeProxy);
}
diff --git a/orbotservice/src/main/res/values/strings.xml b/orbotservice/src/main/res/values/strings.xml
index 80f80ca3..78e527d4 100644
--- a/orbotservice/src/main/res/values/strings.xml
+++ b/orbotservice/src/main/res/values/strings.xml
@@ -25,5 +25,8 @@
<string name="kibibyte_per_second">KiB/s</string>
<string name="mebibyte_per_second">MiB/s</string>
+ <string name="snowflake_proxy_client_connected_msg">%s Your snowflake proxy helped someone circumvent censorship %s</string>
+
+
</resources>