From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tad Date: Thu, 21 Oct 2021 21:09:38 -0400 Subject: [PATCH] Add more 'Private DNS' options This adds thirteen DNS providers as available presets. Credit: CalyxOS - Chirayu Desai https://review.calyxos.org/c/CalyxOS/platform_packages_apps_Settings/+/458 - Pavel Shirshov https://review.calyxos.org/c/CalyxOS/platform_packages_apps_Settings/+/5357 Signed-off-by: Tad Change-Id: I423ad5a3c360a687a226e61df3f75b5550f851c0 --- res/layout/private_dns_mode_dialog.xml | 104 ++++++++++++++++++ res/values/cm_strings.xml | 15 +++ .../PrivateDnsModeDialogPreference.java | 65 +++++++++++ .../PrivateDnsPreferenceController.java | 65 +++++++++++ 4 files changed, 249 insertions(+) diff --git a/res/layout/private_dns_mode_dialog.xml b/res/layout/private_dns_mode_dialog.xml index 641905dc01..3614dd7cd8 100644 --- a/res/layout/private_dns_mode_dialog.xml +++ b/res/layout/private_dns_mode_dialog.xml @@ -38,6 +38,110 @@ android:layout_marginStart="8dp" android:minHeight="48dp"/> + + + + + + + + + + + + + + + + + + + + + + + + + + Scramble layout Scramble PIN layout when unlocking device + + AdGuard (CY) + AppliedPrivacy (AT) + CIRA (CA) + CleanBrowsing (US) + Cloudflare (US) + CZ.NIC (CZ) + Google (US) + Mullvad (SE) + Quad9 (CH) + Restena (LU) + SWITCH (CH) + TW.NIC (TW) + UncensoredDNS (DK) + Link ring & notification volumes diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java index 1655c69cea..0beef5fc13 100644 --- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java +++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java @@ -17,6 +17,19 @@ package com.android.settings.network; import static android.net.ConnectivityManager.PRIVATE_DNS_DEFAULT_MODE_FALLBACK; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_ADGUARD; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_APPLIEDPRIVACY; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CIRA; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CLEANBROWSING; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CLOUDFLARE; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CZNIC; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_GOOGLE; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_MULLVAD; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_QUADNINE; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_RESTENA; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_SWITCH; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_TWNIC; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_UNCENSOREDDNS; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; @@ -73,6 +86,19 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat static { PRIVATE_DNS_MAP = new HashMap<>(); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OFF, R.id.private_dns_mode_off); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_ADGUARD, R.id.private_dns_mode_adguard); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_APPLIEDPRIVACY, R.id.private_dns_mode_appliedprivacy); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CIRA, R.id.private_dns_mode_cira); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLEANBROWSING, R.id.private_dns_mode_cleanbrowsing); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLOUDFLARE, R.id.private_dns_mode_cloudflare); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CZNIC, R.id.private_dns_mode_cznic); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_GOOGLE, R.id.private_dns_mode_google); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_MULLVAD, R.id.private_dns_mode_mullvad); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_QUADNINE, R.id.private_dns_mode_quadnine); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_RESTENA, R.id.private_dns_mode_restena); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_SWITCH, R.id.private_dns_mode_switch); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_TWNIC, R.id.private_dns_mode_twnic); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_UNCENSOREDDNS, R.id.private_dns_mode_uncensoreddns); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OPPORTUNISTIC, R.id.private_dns_mode_opportunistic); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME, R.id.private_dns_mode_provider); } @@ -211,6 +237,45 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat case R.id.private_dns_mode_off: mMode = PRIVATE_DNS_MODE_OFF; break; + case R.id.private_dns_mode_adguard: + mMode = PRIVATE_DNS_MODE_ADGUARD; + break; + case R.id.private_dns_mode_appliedprivacy: + mMode = PRIVATE_DNS_MODE_APPLIEDPRIVACY; + break; + case R.id.private_dns_mode_cira: + mMode = PRIVATE_DNS_MODE_CIRA; + break; + case R.id.private_dns_mode_cleanbrowsing: + mMode = PRIVATE_DNS_MODE_CLEANBROWSING; + break; + case R.id.private_dns_mode_cloudflare: + mMode = PRIVATE_DNS_MODE_CLOUDFLARE; + break; + case R.id.private_dns_mode_cznic: + mMode = PRIVATE_DNS_MODE_CZNIC; + break; + case R.id.private_dns_mode_google: + mMode = PRIVATE_DNS_MODE_GOOGLE; + break; + case R.id.private_dns_mode_mullvad: + mMode = PRIVATE_DNS_MODE_MULLVAD; + break; + case R.id.private_dns_mode_quadnine: + mMode = PRIVATE_DNS_MODE_QUADNINE; + break; + case R.id.private_dns_mode_restena: + mMode = PRIVATE_DNS_MODE_RESTENA; + break; + case R.id.private_dns_mode_switch: + mMode = PRIVATE_DNS_MODE_SWITCH; + break; + case R.id.private_dns_mode_twnic: + mMode = PRIVATE_DNS_MODE_TWNIC; + break; + case R.id.private_dns_mode_uncensoreddns: + mMode = PRIVATE_DNS_MODE_UNCENSOREDDNS; + break; case R.id.private_dns_mode_opportunistic: mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; break; diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java index 47c3a95c9f..5f4e0937c2 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -17,6 +17,19 @@ package com.android.settings.network; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_ADGUARD; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_APPLIEDPRIVACY; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CIRA; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CLEANBROWSING; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CLOUDFLARE; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_CZNIC; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_GOOGLE; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_MULLVAD; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_QUADNINE; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_RESTENA; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_SWITCH; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_TWNIC; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_UNCENSOREDDNS; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE; @@ -125,6 +138,58 @@ public class PrivateDnsPreferenceController extends BasePreferenceController switch (mode) { case PRIVATE_DNS_MODE_OFF: return res.getString(R.string.private_dns_mode_off); + case PRIVATE_DNS_MODE_ADGUARD: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_adguard) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_APPLIEDPRIVACY: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_appliedprivacy) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_CIRA: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_cira) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_CLEANBROWSING: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_cleanbrowsing) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_CLOUDFLARE: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_cloudflare) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_CZNIC: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_cznic) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_GOOGLE: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_google) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_MULLVAD: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_mullvad) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_QUADNINE: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_quadnine) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_RESTENA: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_restena) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_SWITCH: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_switch) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_TWNIC: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_twnic) + : res.getString(R.string.private_dns_mode_provider_failure); + case PRIVATE_DNS_MODE_UNCENSOREDDNS: + return dnsesResolved + ? res.getString(R.string.private_dns_mode_uncensoreddns) + : res.getString(R.string.private_dns_mode_provider_failure); case PRIVATE_DNS_MODE_OPPORTUNISTIC: // TODO (b/79122154) : create a string specifically for this, instead of // hijacking a string from notifications. This is necessary at this time