From 85c24e4ceadbc5afc53ee40a76e3246b005bfad4 Mon Sep 17 00:00:00 2001 From: minaripenguin37 Date: Sun, 16 Oct 2022 17:28:33 +0800 Subject: [PATCH] Settings: Add more DNS providers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Hưng Phan Co-authored-by: Pranav Vashi Signed-off-by: Pranav Vashi --- res/layout/private_dns_mode_dialog.xml | 12 +++++ res/values/evolution_strings.xml | 15 ++++++ .../PrivateDnsModeDialogPreference.java | 48 +++++++++++++++++++ .../PrivateDnsPreferenceController.java | 18 +++++++ 4 files changed, 93 insertions(+) diff --git a/res/layout/private_dns_mode_dialog.xml b/res/layout/private_dns_mode_dialog.xml index 315bb63ffd2..1774ec376ea 100644 --- a/res/layout/private_dns_mode_dialog.xml +++ b/res/layout/private_dns_mode_dialog.xml @@ -45,6 +45,18 @@ android:id="@+id/private_dns_mode_adguard" layout="@layout/preference_widget_dialog_radiobutton"/> + + + + + + diff --git a/res/values/evolution_strings.xml b/res/values/evolution_strings.xml index 202a96310cf..e6d61246b0a 100644 --- a/res/values/evolution_strings.xml +++ b/res/values/evolution_strings.xml @@ -32,4 +32,19 @@ AdGuard DNS dns.adguard.com + + + Open DNS + + dns.opendns.com + + + Cleanbrowsing DNS + + security-filter-dns.cleanbrowsing.org + + + Quad9 DNS + + dns.quad9.net diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java index 1caeb7de8ba..1dc814e0ccb 100644 --- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java +++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java @@ -74,12 +74,18 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat // Only used in Settings, update on additions to ConnectivitySettingsUtils private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4; private static final int PRIVATE_DNS_MODE_ADGUARD = 5; + private static final int PRIVATE_DNS_MODE_OPEN_DNS = 6; + private static final int PRIVATE_DNS_MODE_CLEANBROWSING = 7; + private static final int PRIVATE_DNS_MODE_QUAD9 = 8; 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_CLOUDFLARE, R.id.private_dns_mode_cloudflare); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_ADGUARD, R.id.private_dns_mode_adguard); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OPEN_DNS, R.id.private_dns_mode_open_dns); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLEANBROWSING, R.id.private_dns_mode_cleanbrowsing); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_QUAD9, R.id.private_dns_mode_quad9); 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); } @@ -149,10 +155,22 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat context.getString(R.string.private_dns_hostname_cloudflare); final String adguardHostname = context.getString(R.string.private_dns_hostname_adguard); + final String opendnsHostname = + context.getString(R.string.private_dns_hostname_open_dns); + final String cleanbrowsingHostname = + context.getString(R.string.private_dns_hostname_cleanbrowsing); + final String quad9Hostname = + context.getString(R.string.private_dns_hostname_quad9); if (privateDnsHostname.equals(cloudflareHostname)) { mMode = PRIVATE_DNS_MODE_CLOUDFLARE; } else if (privateDnsHostname.equals(adguardHostname)) { mMode = PRIVATE_DNS_MODE_ADGUARD; + } else if (privateDnsHostname.equals(opendnsHostname)) { + mMode = PRIVATE_DNS_MODE_OPEN_DNS; + } else if (privateDnsHostname.equals(cleanbrowsingHostname)) { + mMode = PRIVATE_DNS_MODE_CLEANBROWSING; + } else if (privateDnsHostname.equals(quad9Hostname)) { + mMode = PRIVATE_DNS_MODE_QUAD9; } } mRadioGroup = view.findViewById(R.id.private_dns_radio_group); @@ -168,6 +186,15 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat final RadioButton adguardRadioButton = view.findViewById(R.id.private_dns_mode_adguard); adguardRadioButton.setText(R.string.private_dns_mode_adguard); + final RadioButton opendnsRadioButton = + view.findViewById(R.id.private_dns_mode_open_dns); + opendnsRadioButton.setText(R.string.private_dns_mode_open_dns); + final RadioButton cleanbrowsingRadioButton = + view.findViewById(R.id.private_dns_mode_cleanbrowsing); + cleanbrowsingRadioButton.setText(R.string.private_dns_mode_cleanbrowsing); + final RadioButton quad9RadioButton = + view.findViewById(R.id.private_dns_mode_quad9); + quad9RadioButton.setText(R.string.private_dns_mode_quad9); final RadioButton opportunisticRadioButton = view.findViewById(R.id.private_dns_mode_opportunistic); opportunisticRadioButton.setText( @@ -207,6 +234,12 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat mMode = PRIVATE_DNS_MODE_CLOUDFLARE; } else if (checkedId == R.id.private_dns_mode_adguard) { mMode = PRIVATE_DNS_MODE_ADGUARD; + } else if (checkedId == R.id.private_dns_mode_open_dns) { + mMode = PRIVATE_DNS_MODE_OPEN_DNS; + } else if (checkedId == R.id.private_dns_mode_cleanbrowsing) { + mMode = PRIVATE_DNS_MODE_CLEANBROWSING; + } else if (checkedId == R.id.private_dns_mode_quad9) { + mMode = PRIVATE_DNS_MODE_QUAD9; } else if (checkedId == R.id.private_dns_mode_opportunistic) { mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; } else if (checkedId == R.id.private_dns_mode_provider) { @@ -307,6 +340,21 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat context.getString(R.string.private_dns_hostname_adguard); ConnectivitySettingsManager.setPrivateDnsHostname(context, adguardHostname); modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; + } else if (mMode == PRIVATE_DNS_MODE_OPEN_DNS) { + final String opendnsHostname = + context.getString(R.string.private_dns_hostname_open_dns); + ConnectivitySettingsManager.setPrivateDnsHostname(context, opendnsHostname); + modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; + } else if (mMode == PRIVATE_DNS_MODE_CLEANBROWSING) { + final String cleanbrowsingHostname = + context.getString(R.string.private_dns_hostname_cleanbrowsing); + ConnectivitySettingsManager.setPrivateDnsHostname(context, cleanbrowsingHostname); + modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; + } else if (mMode == PRIVATE_DNS_MODE_QUAD9) { + final String quad9Hostname = + context.getString(R.string.private_dns_hostname_quad9); + ConnectivitySettingsManager.setPrivateDnsHostname(context, quad9Hostname); + modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; } ConnectivitySettingsManager.setPrivateDnsMode(context, modeToSet); diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java index 9c0b9bdf00a..179079dcc38 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -68,6 +68,9 @@ public class PrivateDnsPreferenceController extends BasePreferenceController // Only used in Settings, update on additions to ConnectivitySettingsUtils private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4; private static final int PRIVATE_DNS_MODE_ADGUARD = 5; + private static final int PRIVATE_DNS_MODE_OPEN_DNS = 6; + private static final int PRIVATE_DNS_MODE_CLEANBROWSING = 7; + private static final int PRIVATE_DNS_MODE_QUAD9 = 8; private final Handler mHandler; private final ContentObserver mSettingsObserver; @@ -135,6 +138,9 @@ public class PrivateDnsPreferenceController extends BasePreferenceController return res.getString(com.android.settingslib.R.string.private_dns_mode_off); case PRIVATE_DNS_MODE_CLOUDFLARE: case PRIVATE_DNS_MODE_ADGUARD: + case PRIVATE_DNS_MODE_OPEN_DNS: + case PRIVATE_DNS_MODE_CLEANBROWSING: + case PRIVATE_DNS_MODE_QUAD9: case PRIVATE_DNS_MODE_OPPORTUNISTIC: return dnsesResolved ? res.getString(R.string.private_dns_mode_on) : res.getString( @@ -150,10 +156,22 @@ public class PrivateDnsPreferenceController extends BasePreferenceController res.getString(R.string.private_dns_hostname_cloudflare); final String adguardHostname = res.getString(R.string.private_dns_hostname_adguard); + final String opendnsHostname = + res.getString(R.string.private_dns_hostname_open_dns); + final String cleanbrowsingHostname = + res.getString(R.string.private_dns_hostname_cleanbrowsing); + final String quad9Hostname = + res.getString(R.string.private_dns_hostname_quad9); if (privateDnsHostname.equals(cloudflareHostname)) { return res.getString(R.string.private_dns_mode_cloudflare); } else if (privateDnsHostname.equals(adguardHostname)) { return res.getString(R.string.private_dns_mode_adguard); + } else if (privateDnsHostname.equals(opendnsHostname)) { + return res.getString(R.string.private_dns_mode_open_dns); + } else if (privateDnsHostname.equals(cleanbrowsingHostname)) { + return res.getString(R.string.private_dns_mode_cleanbrowsing); + } else if (privateDnsHostname.equals(quad9Hostname)) { + return res.getString(R.string.private_dns_mode_quad9); } return privateDnsHostname; }