Add the rest of Cloudflare and Quad9 Private DNS options

This commit is contained in:
Cristhian Zeas
2024-12-06 20:50:37 -05:00
committed by Joey
parent 2c23d3060e
commit b868ac34e0
4 changed files with 153 additions and 9 deletions

View File

@@ -41,6 +41,14 @@
android:id="@+id/private_dns_mode_cloudflare"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_cloudflare_block_malware"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_cloudflare_block_malware_and_adult_content"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_adguard"
layout="@layout/preference_widget_dialog_radiobutton"/>
@@ -57,6 +65,18 @@
android:id="@+id/private_dns_mode_quad9"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_quad9_unsecured"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_quad9_ecs"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_quad9_unsecured_ecs"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_opportunistic"
layout="@layout/preference_widget_dialog_radiobutton"/>
@@ -91,4 +111,3 @@
</LinearLayout>
</ScrollView>

View File

@@ -28,6 +28,16 @@
<string name="force_lte_ca">Force LTE CA</string>
<string name="force_lte_ca_summary">Force LTE carrier aggregation to work</string>
<!-- Cloudflare Block Malware DNS Option -->
<string name="private_dns_mode_cloudflare_block_malware" translatable="false">Cloudflare Block Malware DNS</string>
<!-- Cloudflare Block Malware DNS hostname -->
<string name="private_dns_hostname_cloudflare_block_malware" translatable="false">security.cloudflare-dns.com</string>
<!-- Cloudflare Block Malware and Adult Content DNS Option -->
<string name="private_dns_mode_cloudflare_block_malware_and_adult_content" translatable="false">Cloudflare Block Malware and Adult Content DNS</string>
<!-- Cloudflare Block Malware and Adult Content DNS hostname -->
<string name="private_dns_hostname_cloudflare_block_malware_and_adult_content" translatable="false">family.cloudflare-dns.com</string>
<!-- AdGuard DNS Option -->
<string name="private_dns_mode_adguard" translatable="false">AdGuard DNS</string>
<!-- AdGuard DNS hostname -->
@@ -47,4 +57,19 @@
<string name="private_dns_mode_quad9" translatable="false">Quad9 DNS</string>
<!-- Quad9 DNS hostname -->
<string name="private_dns_hostname_quad9" translatable="false">dns.quad9.net</string>
<!-- Quad9 Unsecured DNS Option -->
<string name="private_dns_mode_quad9_unsecured" translatable="false">Quad9 Unsecured DNS</string>
<!-- Quad9 Unsecured DNS hostname -->
<string name="private_dns_hostname_quad9_unsecured" translatable="false">dns10.quad9.net</string>
<!-- Quad9 ECS DNS Option -->
<string name="private_dns_mode_quad9_ecs" translatable="false">Quad9 with ECS DNS</string>
<!-- Quad9 ECS DNS hostname -->
<string name="private_dns_hostname_quad9_ecs" translatable="false">dns11.quad9.net</string>
<!-- Quad9 Unsecured ECS DNS Option -->
<string name="private_dns_mode_quad9_unsecured_ecs" translatable="false">Quad9 Unsecured with ECS DNS</string>
<!-- Quad9 Unsecured ECS DNS hostname -->
<string name="private_dns_hostname_quad9_unsecured_ecs" translatable="false">dns12.quad9.net</string>
</resources>

View File

@@ -73,19 +73,29 @@ 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;
private static final int PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE = 5;
private static final int PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE_AND_ADULT_CONTENT = 6;
private static final int PRIVATE_DNS_MODE_ADGUARD = 7;
private static final int PRIVATE_DNS_MODE_OPEN_DNS = 8;
private static final int PRIVATE_DNS_MODE_CLEANBROWSING = 9;
private static final int PRIVATE_DNS_MODE_QUAD9 = 10;
private static final int PRIVATE_DNS_MODE_QUAD9_UNSECURED = 11;
private static final int PRIVATE_DNS_MODE_QUAD9_ECS = 12;
private static final int PRIVATE_DNS_MODE_QUAD9_UNSECURED_ECS = 13;
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_CLOUDFLARE_BLOCK_MALWARE, R.id.private_dns_mode_cloudflare_block_malware);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE_AND_ADULT_CONTENT, R.id.private_dns_mode_cloudflare_block_malware_and_adult_content);
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_QUAD9_UNSECURED, R.id.private_dns_mode_quad9_unsecured);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_QUAD9_ECS, R.id.private_dns_mode_quad9_ecs);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_QUAD9_UNSECURED_ECS, R.id.private_dns_mode_quad9_unsecured_ecs);
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);
}
@@ -153,6 +163,10 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
ConnectivitySettingsManager.getPrivateDnsHostname(context);
final String cloudflareHostname =
context.getString(R.string.private_dns_hostname_cloudflare);
final String cloudflareblockmalwareHostname =
context.getString(R.string.private_dns_hostname_cloudflare_block_malware);
final String cloudflareblockmalwareandadultcontentHostname =
context.getString(R.string.private_dns_hostname_cloudflare_block_malware_and_adult_content);
final String adguardHostname =
context.getString(R.string.private_dns_hostname_adguard);
final String opendnsHostname =
@@ -161,8 +175,18 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
context.getString(R.string.private_dns_hostname_cleanbrowsing);
final String quad9Hostname =
context.getString(R.string.private_dns_hostname_quad9);
final String quad9unsecuredHostname =
context.getString(R.string.private_dns_hostname_quad9_unsecured);
final String quad9ecsHostname =
context.getString(R.string.private_dns_hostname_quad9_ecs);
final String quad9unsecuredecsHostname =
context.getString(R.string.private_dns_hostname_quad9_unsecured_ecs);
if (privateDnsHostname.equals(cloudflareHostname)) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE;
} else if (privateDnsHostname.equals(cloudflareblockmalwareHostname)) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE;
} else if (privateDnsHostname.equals(cloudflareblockmalwareandadultcontentHostname)) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE_AND_ADULT_CONTENT;
} else if (privateDnsHostname.equals(adguardHostname)) {
mMode = PRIVATE_DNS_MODE_ADGUARD;
} else if (privateDnsHostname.equals(opendnsHostname)) {
@@ -171,6 +195,12 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
mMode = PRIVATE_DNS_MODE_CLEANBROWSING;
} else if (privateDnsHostname.equals(quad9Hostname)) {
mMode = PRIVATE_DNS_MODE_QUAD9;
} else if (privateDnsHostname.equals(quad9unsecuredHostname)) {
mMode = PRIVATE_DNS_MODE_QUAD9_UNSECURED;
} else if (privateDnsHostname.equals(quad9ecsHostname)) {
mMode = PRIVATE_DNS_MODE_QUAD9_ECS;
} else if (privateDnsHostname.equals(quad9unsecuredecsHostname)) {
mMode = PRIVATE_DNS_MODE_QUAD9_UNSECURED_ECS;
}
}
mRadioGroup = view.findViewById(R.id.private_dns_radio_group);
@@ -183,6 +213,12 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
final RadioButton cloudflareRadioButton =
view.findViewById(R.id.private_dns_mode_cloudflare);
cloudflareRadioButton.setText(R.string.private_dns_mode_cloudflare);
final RadioButton cloudflareblockmalwareRadioButton =
view.findViewById(R.id.private_dns_mode_cloudflare_block_malware);
cloudflareblockmalwareRadioButton.setText(R.string.private_dns_mode_cloudflare_block_malware);
final RadioButton cloudflareblockmalwareandadultcontentRadioButton =
view.findViewById(R.id.private_dns_mode_cloudflare_block_malware_and_adult_content);
cloudflareblockmalwareandadultcontentRadioButton.setText(R.string.private_dns_mode_cloudflare_block_malware_and_adult_content);
final RadioButton adguardRadioButton =
view.findViewById(R.id.private_dns_mode_adguard);
adguardRadioButton.setText(R.string.private_dns_mode_adguard);
@@ -195,6 +231,15 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
final RadioButton quad9RadioButton =
view.findViewById(R.id.private_dns_mode_quad9);
quad9RadioButton.setText(R.string.private_dns_mode_quad9);
final RadioButton quad9unsecuredRadioButton =
view.findViewById(R.id.private_dns_mode_quad9_unsecured);
quad9unsecuredRadioButton.setText(R.string.private_dns_mode_quad9_unsecured);
final RadioButton quad9ecsRadioButton =
view.findViewById(R.id.private_dns_mode_quad9_ecs);
quad9ecsRadioButton.setText(R.string.private_dns_mode_quad9_ecs);
final RadioButton quad9unsecuredecsRadioButton =
view.findViewById(R.id.private_dns_mode_quad9_unsecured_ecs);
quad9unsecuredecsRadioButton.setText(R.string.private_dns_mode_quad9_unsecured_ecs);
final RadioButton opportunisticRadioButton =
view.findViewById(R.id.private_dns_mode_opportunistic);
opportunisticRadioButton.setText(
@@ -232,6 +277,10 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
mMode = PRIVATE_DNS_MODE_OFF;
} else if (checkedId == R.id.private_dns_mode_cloudflare) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE;
} else if (checkedId == R.id.private_dns_mode_cloudflare_block_malware) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE;
} else if (checkedId == R.id.private_dns_mode_cloudflare_block_malware_and_adult_content) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE_AND_ADULT_CONTENT;
} else if (checkedId == R.id.private_dns_mode_adguard) {
mMode = PRIVATE_DNS_MODE_ADGUARD;
} else if (checkedId == R.id.private_dns_mode_open_dns) {
@@ -240,6 +289,12 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
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_quad9_unsecured) {
mMode = PRIVATE_DNS_MODE_QUAD9_UNSECURED;
} else if (checkedId == R.id.private_dns_mode_quad9_ecs) {
mMode = PRIVATE_DNS_MODE_QUAD9_ECS;
} else if (checkedId == R.id.private_dns_mode_quad9_unsecured_ecs) {
mMode = PRIVATE_DNS_MODE_QUAD9_UNSECURED_ECS;
} else if (checkedId == R.id.private_dns_mode_opportunistic) {
mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
} else if (checkedId == R.id.private_dns_mode_provider) {
@@ -335,6 +390,16 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
context.getString(R.string.private_dns_hostname_cloudflare);
ConnectivitySettingsManager.setPrivateDnsHostname(context, cloudflareHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE) {
final String cloudflareblockmalwareHostname =
context.getString(R.string.private_dns_hostname_cloudflare_block_malware);
ConnectivitySettingsManager.setPrivateDnsHostname(context, cloudflareblockmalwareHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE_AND_ADULT_CONTENT) {
final String cloudflareblockmalwareandadultcontentHostname =
context.getString(R.string.private_dns_hostname_cloudflare_block_malware_and_adult_content);
ConnectivitySettingsManager.setPrivateDnsHostname(context, cloudflareblockmalwareandadultcontentHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_ADGUARD) {
final String adguardHostname =
context.getString(R.string.private_dns_hostname_adguard);
@@ -355,6 +420,21 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
context.getString(R.string.private_dns_hostname_quad9);
ConnectivitySettingsManager.setPrivateDnsHostname(context, quad9Hostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_QUAD9_UNSECURED) {
final String quad9unsecuredHostname =
context.getString(R.string.private_dns_hostname_quad9_unsecured);
ConnectivitySettingsManager.setPrivateDnsHostname(context, quad9unsecuredHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_QUAD9_ECS) {
final String quad9ecsHostname =
context.getString(R.string.private_dns_hostname_quad9_ecs);
ConnectivitySettingsManager.setPrivateDnsHostname(context, quad9ecsHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_QUAD9_UNSECURED_ECS) {
final String quad9unsecuredecsHostname =
context.getString(R.string.private_dns_hostname_quad9_unsecured_ecs);
ConnectivitySettingsManager.setPrivateDnsHostname(context, quad9unsecuredecsHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
}
ConnectivitySettingsManager.setPrivateDnsMode(context, modeToSet);

View File

@@ -67,10 +67,15 @@ 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 static final int PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE = 5;
private static final int PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE_AND_ADULT_CONTENT = 6;
private static final int PRIVATE_DNS_MODE_ADGUARD = 7;
private static final int PRIVATE_DNS_MODE_OPEN_DNS = 8;
private static final int PRIVATE_DNS_MODE_CLEANBROWSING = 9;
private static final int PRIVATE_DNS_MODE_QUAD9 = 10;
private static final int PRIVATE_DNS_MODE_QUAD9_UNSECURED = 11;
private static final int PRIVATE_DNS_MODE_QUAD9_ECS = 12;
private static final int PRIVATE_DNS_MODE_QUAD9_UNSECURED_ECS = 13;
private final Handler mHandler;
private final ContentObserver mSettingsObserver;
@@ -137,10 +142,15 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
case PRIVATE_DNS_MODE_OFF:
return res.getString(com.android.settingslib.R.string.private_dns_mode_off);
case PRIVATE_DNS_MODE_CLOUDFLARE:
case PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE:
case PRIVATE_DNS_MODE_CLOUDFLARE_BLOCK_MALWARE_AND_ADULT_CONTENT:
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_QUAD9_UNSECURED:
case PRIVATE_DNS_MODE_QUAD9_ECS:
case PRIVATE_DNS_MODE_QUAD9_UNSECURED_ECS:
case PRIVATE_DNS_MODE_OPPORTUNISTIC:
return dnsesResolved ? res.getString(R.string.private_dns_mode_on)
: res.getString(
@@ -154,6 +164,10 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
ConnectivitySettingsManager.getPrivateDnsHostname(mContext);
final String cloudflareHostname =
res.getString(R.string.private_dns_hostname_cloudflare);
final String cloudflareblockmalwareHostname =
res.getString(R.string.private_dns_hostname_cloudflare_block_malware);
final String cloudflareblockmalwaresndsdultcontentHostname =
res.getString(R.string.private_dns_hostname_cloudflare_block_malware_and_adult_content);
final String adguardHostname =
res.getString(R.string.private_dns_hostname_adguard);
final String opendnsHostname =
@@ -162,6 +176,12 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
res.getString(R.string.private_dns_hostname_cleanbrowsing);
final String quad9Hostname =
res.getString(R.string.private_dns_hostname_quad9);
final String quad9unsecuredHostname =
res.getString(R.string.private_dns_hostname_quad9_unsecured);
final String quad9ecsHostname =
res.getString(R.string.private_dns_hostname_quad9_ecs);
final String quad9unsecuredecsHostname =
res.getString(R.string.private_dns_hostname_quad9_unsecured_ecs);
if (privateDnsHostname.equals(cloudflareHostname)) {
return res.getString(R.string.private_dns_mode_cloudflare);
} else if (privateDnsHostname.equals(adguardHostname)) {