2024-05-18 12:50:02 -04:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Tavi <tavi@divested.dev>
|
|
|
|
Date: Sat, 18 May 2024 11:21:24 -0400
|
|
|
|
Subject: [PATCH] Add server choices
|
|
|
|
|
|
|
|
Change-Id: I43524f0567eabff163ce81c4a93cf145542a3d5d
|
|
|
|
Signed-off-by: Tavi <tavi@divested.dev>
|
|
|
|
---
|
|
|
|
app/src/main/AndroidManifest.xml | 3 ++-
|
2024-05-18 15:49:23 -04:00
|
|
|
.../lineageos/updater/UpdatesActivity.java | 4 +++
|
2024-05-18 12:50:02 -04:00
|
|
|
.../org/lineageos/updater/misc/Constants.java | 11 ++++++++
|
|
|
|
.../org/lineageos/updater/misc/Utils.java | 27 ++++++++++++++++---
|
|
|
|
.../main/res/layout/preferences_dialog.xml | 22 +++++++++++++++
|
|
|
|
app/src/main/res/values/arrays.xml | 7 +++++
|
|
|
|
app/src/main/res/values/strings.xml | 5 ++++
|
|
|
|
.../main/res/xml/network_security_config.xml | 8 ++++++
|
2024-05-18 15:49:23 -04:00
|
|
|
8 files changed, 82 insertions(+), 5 deletions(-)
|
2024-05-18 12:50:02 -04:00
|
|
|
create mode 100644 app/src/main/res/xml/network_security_config.xml
|
|
|
|
|
|
|
|
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
|
|
|
|
index 6041740..a4cdf95 100644
|
|
|
|
--- a/app/src/main/AndroidManifest.xml
|
|
|
|
+++ b/app/src/main/AndroidManifest.xml
|
|
|
|
@@ -29,7 +29,8 @@
|
|
|
|
android:requestLegacyExternalStorage="true"
|
|
|
|
android:supportsRtl="true"
|
|
|
|
android:theme="@style/AppTheme"
|
|
|
|
- android:usesCleartextTraffic="false">
|
|
|
|
+ android:usesCleartextTraffic="false"
|
|
|
|
+ android:networkSecurityConfig="@xml/network_security_config">
|
|
|
|
|
|
|
|
<activity
|
|
|
|
android:name=".UpdatesActivity"
|
|
|
|
diff --git a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java
|
2024-05-18 15:49:23 -04:00
|
|
|
index 387eea0..87adfbb 100644
|
2024-05-18 12:50:02 -04:00
|
|
|
--- a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java
|
|
|
|
+++ b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java
|
|
|
|
@@ -573,6 +573,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
|
|
|
private void showPreferencesDialog() {
|
|
|
|
View view = LayoutInflater.from(this).inflate(R.layout.preferences_dialog, null);
|
|
|
|
Spinner autoCheckInterval = view.findViewById(R.id.preferences_auto_updates_check_interval);
|
|
|
|
+ Spinner serverChoice = view.findViewById(R.id.preferences_server_choice);
|
|
|
|
SwitchCompat onionRouting = view.findViewById(R.id.preferences_onion_routing);
|
|
|
|
SwitchCompat autoDelete = view.findViewById(R.id.preferences_auto_delete_updates);
|
|
|
|
SwitchCompat meteredNetworkWarning = view.findViewById(
|
2024-05-18 15:49:23 -04:00
|
|
|
@@ -586,6 +587,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
|
|
|
|
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
|
|
|
autoCheckInterval.setSelection(Utils.getUpdateCheckSetting(this));
|
|
|
|
+ serverChoice.setSelection(Utils.getServerChoiceSetting(this));
|
|
|
|
onionRouting.setChecked(prefs.getBoolean(Constants.PREF_ONION_ROUTING, false));
|
|
|
|
autoDelete.setChecked(prefs.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, false));
|
|
|
|
meteredNetworkWarning.setChecked(prefs.getBoolean(Constants.PREF_METERED_NETWORK_WARNING,
|
|
|
|
@@ -627,6 +629,8 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
2024-05-18 12:50:02 -04:00
|
|
|
prefs.edit()
|
|
|
|
.putInt(Constants.PREF_AUTO_UPDATES_CHECK_INTERVAL,
|
|
|
|
autoCheckInterval.getSelectedItemPosition())
|
|
|
|
+ .putInt(Constants.PREF_SERVER_CHOICE,
|
|
|
|
+ serverChoice.getSelectedItemPosition())
|
|
|
|
.putBoolean(Constants.PREF_ONION_ROUTING,
|
|
|
|
onionRouting.isChecked() && Utils.isOrbotInstalled(getApplicationContext()))
|
|
|
|
.putBoolean(Constants.PREF_AUTO_DELETE_UPDATES, autoDelete.isChecked())
|
|
|
|
diff --git a/app/src/main/java/org/lineageos/updater/misc/Constants.java b/app/src/main/java/org/lineageos/updater/misc/Constants.java
|
|
|
|
index 825e1a0..eac5451 100644
|
|
|
|
--- a/app/src/main/java/org/lineageos/updater/misc/Constants.java
|
|
|
|
+++ b/app/src/main/java/org/lineageos/updater/misc/Constants.java
|
|
|
|
@@ -17,8 +17,19 @@ public final class Constants {
|
|
|
|
public static final int AUTO_UPDATES_CHECK_INTERVAL_WEEKLY = 2;
|
|
|
|
public static final int AUTO_UPDATES_CHECK_INTERVAL_MONTHLY = 3;
|
|
|
|
|
|
|
|
+ public static final int PREF_SERVER_CHOICE_PRIMARY = 0;
|
|
|
|
+ public static final int PREF_SERVER_CHOICE_SECONDARY = 1;
|
|
|
|
+ public static final int PREF_SERVER_CHOICE_ONION_PRIMARY = 2;
|
|
|
|
+ public static final int PREF_SERVER_CHOICE_ONION_SECONDARY = 3;
|
|
|
|
+
|
|
|
|
+ public static final String PREF_SERVER_CHOICE_PRIMARY_ACTUAL = "0OTA_SERVER_CLEARNET_PRIMARY0";
|
|
|
|
+ public static final String PREF_SERVER_CHOICE_SECONDARY_ACTUAL = "0OTA_SERVER_CLEARNET_SECONDARY0";
|
|
|
|
+ public static final String PREF_SERVER_CHOICE_ONION_PRIMARY_ACTUAL = "0OTA_SERVER_ONION_PRIMARY0";
|
|
|
|
+ public static final String PREF_SERVER_CHOICE_ONION_SECONDARY_ACTUAL = "0OTA_SERVER_ONION_SECONDARY0";
|
|
|
|
+
|
|
|
|
public static final String PREF_LAST_UPDATE_CHECK = "last_update_check";
|
|
|
|
public static final String PREF_AUTO_UPDATES_CHECK_INTERVAL = "auto_updates_check_interval";
|
|
|
|
+ public static final String PREF_SERVER_CHOICE = "server_choice";
|
|
|
|
public static final String PREF_ONION_ROUTING = "onion_routing";
|
|
|
|
public static final String PREF_AUTO_DELETE_UPDATES = "auto_delete_updates";
|
|
|
|
public static final String PREF_AB_PERF_MODE = "ab_perf_mode";
|
|
|
|
diff --git a/app/src/main/java/org/lineageos/updater/misc/Utils.java b/app/src/main/java/org/lineageos/updater/misc/Utils.java
|
2024-05-18 15:49:23 -04:00
|
|
|
index 3d4aab9..28c8fe5 100644
|
2024-05-18 12:50:02 -04:00
|
|
|
--- a/app/src/main/java/org/lineageos/updater/misc/Utils.java
|
|
|
|
+++ b/app/src/main/java/org/lineageos/updater/misc/Utils.java
|
|
|
|
@@ -201,14 +201,33 @@ public class Utils {
|
|
|
|
return listening;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ public static int getServerChoiceSetting(Context context) {
|
|
|
|
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
|
|
|
+ return preferences.getInt(Constants.PREF_SERVER_CHOICE,
|
|
|
|
+ Constants.PREF_SERVER_CHOICE_PRIMARY);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static String getServerBaseUrl(Context context) {
|
|
|
|
+ switch (Utils.getServerChoiceSetting(context)) {
|
|
|
|
+ case Constants.PREF_SERVER_CHOICE_PRIMARY:
|
|
|
|
+ default:
|
|
|
|
+ return Constants.PREF_SERVER_CHOICE_PRIMARY_ACTUAL;
|
2024-05-18 15:49:23 -04:00
|
|
|
+ case Constants.PREF_SERVER_CHOICE_SECONDARY:
|
2024-05-18 16:49:41 -04:00
|
|
|
+ return Constants.PREF_SERVER_CHOICE_SECONDARY_ACTUAL;
|
2024-05-18 12:50:02 -04:00
|
|
|
+ case Constants.PREF_SERVER_CHOICE_ONION_PRIMARY:
|
|
|
|
+ return Constants.PREF_SERVER_CHOICE_ONION_PRIMARY_ACTUAL;
|
|
|
|
+ case Constants.PREF_SERVER_CHOICE_ONION_SECONDARY:
|
|
|
|
+ return Constants.PREF_SERVER_CHOICE_ONION_SECONDARY_ACTUAL;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
public static String getServerURL(Context context) {
|
|
|
|
String incrementalVersion = SystemProperties.get(Constants.PROP_BUILD_VERSION_INCREMENTAL);
|
|
|
|
String device = SystemProperties.get(Constants.PROP_NEXT_DEVICE,
|
|
|
|
SystemProperties.get(Constants.PROP_DEVICE));
|
|
|
|
- String server = "0OTA_SERVER_CLEARNET0";
|
|
|
|
- String serverOnion = "0OTA_SERVER_ONION0";
|
|
|
|
- if(serverOnion.toLowerCase().startsWith("http") && isOnionRoutingEnabled(context)) {
|
|
|
|
- server = serverOnion;
|
|
|
|
+ String server = getServerBaseUrl(context);
|
2024-05-18 15:49:23 -04:00
|
|
|
+ if (!isOnionRoutingEnabled(context) && server.toLowerCase().startsWith("http://") && server.toLowerCase().contains(".onion/")) {
|
2024-05-18 12:50:02 -04:00
|
|
|
+ server = Constants.PREF_SERVER_CHOICE_PRIMARY_ACTUAL;
|
|
|
|
}
|
|
|
|
|
|
|
|
return server + "?base=LineageOS&device=" + device + "&inc=" + incrementalVersion;
|
|
|
|
diff --git a/app/src/main/res/layout/preferences_dialog.xml b/app/src/main/res/layout/preferences_dialog.xml
|
|
|
|
index 8a01e3d..495cb5c 100644
|
|
|
|
--- a/app/src/main/res/layout/preferences_dialog.xml
|
|
|
|
+++ b/app/src/main/res/layout/preferences_dialog.xml
|
|
|
|
@@ -33,6 +33,28 @@
|
|
|
|
android:entries="@array/menu_auto_updates_check_interval_entries" />
|
|
|
|
</LinearLayout>
|
|
|
|
|
|
|
|
+ <LinearLayout
|
|
|
|
+ android:layout_width="match_parent"
|
|
|
|
+ android:layout_height="wrap_content"
|
|
|
|
+ android:layout_marginBottom="16dp"
|
|
|
|
+ android:orientation="horizontal">
|
|
|
|
+
|
|
|
|
+ <TextView
|
|
|
|
+ android:layout_width="0dp"
|
|
|
|
+ android:layout_height="wrap_content"
|
|
|
|
+ android:layout_weight="1"
|
|
|
|
+ android:text="@string/menu_server_choice"
|
|
|
|
+ android:textColor="@color/inverted"
|
|
|
|
+ android:textSize="16sp" />
|
|
|
|
+
|
|
|
|
+ <Spinner
|
|
|
|
+ android:id="@+id/preferences_server_choice"
|
|
|
|
+ android:layout_width="0dp"
|
|
|
|
+ android:layout_height="wrap_content"
|
|
|
|
+ android:layout_weight="1"
|
|
|
|
+ android:entries="@array/menu_server_choice_entries" />
|
|
|
|
+ </LinearLayout>
|
|
|
|
+
|
|
|
|
<androidx.appcompat.widget.SwitchCompat
|
|
|
|
android:id="@+id/preferences_onion_routing"
|
|
|
|
android:layout_width="match_parent"
|
|
|
|
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
|
|
|
|
index cc90a3f..2940af9 100644
|
|
|
|
--- a/app/src/main/res/values/arrays.xml
|
|
|
|
+++ b/app/src/main/res/values/arrays.xml
|
|
|
|
@@ -10,4 +10,11 @@
|
|
|
|
<item>@string/menu_auto_updates_check_interval_weekly</item>
|
|
|
|
<item>@string/menu_auto_updates_check_interval_monthly</item>
|
|
|
|
</string-array>
|
|
|
|
+
|
|
|
|
+ <string-array name="menu_server_choice_entries" translatable="false">
|
|
|
|
+ <item>@string/menu_server_choice_primary</item>
|
|
|
|
+ <item>@string/menu_server_choice_secondary</item>
|
|
|
|
+ <item>@string/menu_server_choice_onion_primary</item>
|
|
|
|
+ <item>@string/menu_server_choice_onion_secondary</item>
|
|
|
|
+ </string-array>
|
|
|
|
</resources>
|
|
|
|
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
|
2024-05-18 15:49:23 -04:00
|
|
|
index ac159a8..5d97180 100644
|
2024-05-18 12:50:02 -04:00
|
|
|
--- a/app/src/main/res/values/strings.xml
|
|
|
|
+++ b/app/src/main/res/values/strings.xml
|
|
|
|
@@ -59,6 +59,11 @@
|
|
|
|
<string name="menu_auto_updates_check_interval_weekly">Once a week</string>
|
|
|
|
<string name="menu_auto_updates_check_interval_monthly">Once a month</string>
|
|
|
|
<string name="menu_auto_updates_check_interval_never">Never</string>
|
|
|
|
+ <string name="menu_server_choice">Server Choice</string>
|
|
|
|
+ <string name="menu_server_choice_primary">Primary</string>
|
|
|
|
+ <string name="menu_server_choice_secondary">0OTA_SERVER_CLEARNET_SECONDARY_NAME0</string>
|
|
|
|
+ <string name="menu_server_choice_onion_primary">Onion #1</string>
|
|
|
|
+ <string name="menu_server_choice_onion_secondary">Onion #2</string>
|
|
|
|
<string name="menu_onion_routing">Perform requests over Tor</string>
|
|
|
|
<string name="menu_auto_delete_updates">Delete updates when installed</string>
|
|
|
|
<string name="menu_delete_update">Delete</string>
|
|
|
|
diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml
|
|
|
|
new file mode 100644
|
|
|
|
index 0000000..09b655b
|
|
|
|
--- /dev/null
|
|
|
|
+++ b/app/src/main/res/xml/network_security_config.xml
|
|
|
|
@@ -0,0 +1,8 @@
|
|
|
|
+<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
+<network-security-config>
|
|
|
|
+ <domain-config cleartextTrafficPermitted="true">
|
|
|
|
+ <domain includeSubdomains="false">0OTA_SERVER_ONION_DOMAIN_PRIMARY0</domain>
|
|
|
|
+ <domain includeSubdomains="false">0OTA_SERVER_ONION_DOMAIN_SECONDARY0</domain>
|
|
|
|
+ </domain-config>
|
|
|
|
+</network-security-config>
|
|
|
|
+
|