feat: add DNSBunker to list of built-in DoH providers (as they meet criteria) - see https://codeberg.org/celenity/Phoenix/issues/367 for details (+ add IFDohProviders for specifying DoH provider constants, instead of hardcoding them at DohSettingsProvider)

Signed-off-by: celenity <celenity@celenity.dev>
This commit is contained in:
celenity committed 2026-09-09 04:10:46 +00:00
1 parent 0e8e6f4821
commit 1fcef91adc
4 files changed
+91 -43

No files matched your search

+48 -43
View File
@@ -8,16 +8,24 @@ Adds custom DoH providers.
Signed-off-by: celenity <celenity@celenity.dev>
---
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/doh/DohSettingsProvider.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/doh/DohSettingsProvider.kt
index 028be832d6d7..4cbee0999688 100644
index 028be832d6d7..70fc072aebf4 100644
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/doh/DohSettingsProvider.kt
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/doh/DohSettingsProvider.kt
@@ -37,17 +37,42 @@ internal class DefaultDohSettingsProvider(
@@ -7,6 +7,7 @@ package org.mozilla.fenix.settings.doh
import androidx.annotation.VisibleForTesting
import mozilla.components.concept.engine.Engine
import org.mozilla.fenix.utils.Settings
+import org.ironfoxoss.core.IFDohProviders
internal interface DohSettingsProvider {
fun getProtectionLevels(): List<ProtectionLevel>
@@ -37,17 +38,50 @@ internal class DefaultDohSettingsProvider(
private val cloudflare = Provider.BuiltIn(
url = cloudflareUri,
- name = "Cloudflare",
- default = dohDefaultProviderUrl.isBlank() || dohDefaultProviderUrl == cloudflareUri,
+ name = "Cloudflare 🇺🇸",
+ name = IFDohProviders.cloudflareName,
+ default = dohDefaultProviderUrl == cloudflareUri,
)
- private val nextDns = Provider.BuiltIn(
@@ -25,43 +33,51 @@ index 028be832d6d7..4cbee0999688 100644
- name = "NextDNS",
- default = dohDefaultProviderUrl == nextDnsUri,
+ private val mullvadBase = Provider.BuiltIn(
+ url = mullvadBaseUri,
+ name = "Mullvad (Base) 🇸🇪",
+ default = dohDefaultProviderUrl.isNullOrBlank() || dohDefaultProviderUrl == mullvadBaseUri,
+ url = IFDohProviders.mullvadBaseUri,
+ name = IFDohProviders.mullvadBaseName,
+ default = dohDefaultProviderUrl.isBlank() || dohDefaultProviderUrl == IFDohProviders.mullvadBaseUri,
+ )
+ private val cloudflareMalware = Provider.BuiltIn(
+ url = cloudflareMalwareUri,
+ name = "Cloudflare (Malware Protection) 🇺🇸",
+ default = dohDefaultProviderUrl == cloudflareMalwareUri,
+ url = IFDohProviders.cloudflareMalwareUri,
+ name = IFDohProviders.cloudflareMalwareName,
+ default = dohDefaultProviderUrl == IFDohProviders.cloudflareMalwareUri,
+ )
+ private val dns4EuAdBlocking = Provider.BuiltIn(
+ url = dns4EuAdBlockingUri,
+ name = "DNS4EU (Ad Blocking) 🇨🇿",
+ default = dohDefaultProviderUrl == dns4EuAdBlockingUri,
+ url = IFDohProviders.dns4EuAdBlockingUri,
+ name = IFDohProviders.dns4EuAdBlockingName,
+ default = dohDefaultProviderUrl == IFDohProviders.dns4EuAdBlockingUri,
+ )
+ private val dns4EuProtective = Provider.BuiltIn(
+ url = dns4EuProtectiveUri,
+ name = "DNS4EU (Protective) 🇨🇿",
+ default = dohDefaultProviderUrl == dns4EuProtectiveUri,
+ url = IFDohProviders.dns4EuProtectiveUri,
+ name = IFDohProviders.dns4EuProtectiveName,
+ default = dohDefaultProviderUrl == IFDohProviders.dns4EuProtectiveUri,
+ )
+ private val dns4EuUnfiltered = Provider.BuiltIn(
+ url = dns4EuUnfilteredUri,
+ name = "DNS4EU (Unfiltered) 🇨🇿",
+ default = dohDefaultProviderUrl == dns4EuUnfilteredUri,
+ url = IFDohProviders.dns4EuUnfilteredUri,
+ name = IFDohProviders.dns4EuUnfilteredName,
+ default = dohDefaultProviderUrl == IFDohProviders.dns4EuUnfilteredUri,
+ )
+ private val dnsBunker = Provider.BuiltIn(
+ url = IFDohProviders.dnsBunkerUri,
+ name = IFDohProviders.dnsBunkerName,
+ default = dohDefaultProviderUrl == IFDohProviders.dnsBunkerUri,
+ )
+ private val mullvadUnfiltered = Provider.BuiltIn(
+ url = mullvadUnfilteredUri,
+ name = "Mullvad (Unfiltered) 🇸🇪",
+ default = dohDefaultProviderUrl == mullvadUnfilteredUri,
+ url = IFDohProviders.mullvadUnfilteredUri,
+ name = IFDohProviders.mullvadUnfilteredName,
+ default = dohDefaultProviderUrl == IFDohProviders.mullvadUnfilteredUri,
)
private val providerUrl = settings.dohProviderUrl
private val custom = Provider.Custom(
- url = if (providerUrl != cloudflareUri && providerUrl != nextDnsUri) {
+ url = if (providerUrl != cloudflareUri && providerUrl != mullvadBaseUri && providerUrl != cloudflareMalwareUri && providerUrl != dns4EuAdBlockingUri && providerUrl != dns4EuProtectiveUri && providerUrl != dns4EuUnfilteredUri && providerUrl != mullvadUnfilteredUri) {
+ url = if (providerUrl != cloudflareUri && providerUrl != IFDohProviders.mullvadBaseUri &&
+ providerUrl != IFDohProviders.cloudflareMalwareUri && providerUrl != IFDohProviders.dns4EuAdBlockingUri &&
+ providerUrl != IFDohProviders.dns4EuProtectiveUri && providerUrl != IFDohProviders.dns4EuUnfilteredUri &&
+ providerUrl != IFDohProviders.dnsBunkerUri && providerUrl != IFDohProviders.mullvadUnfilteredUri) {
providerUrl
} else {
""
@@ -55,8 +80,13 @@ internal class DefaultDohSettingsProvider(
@@ -55,8 +89,14 @@ internal class DefaultDohSettingsProvider(
)
override fun getDefaultProviders(): List<Provider> = listOf(
@@ -72,35 +88,24 @@ index 028be832d6d7..4cbee0999688 100644
+ dns4EuAdBlocking,
+ dns4EuProtective,
+ dns4EuUnfiltered,
+ dnsBunker,
+ mullvadUnfiltered,
custom,
)
@@ -78,7 +108,12 @@ internal class DefaultDohSettingsProvider(
@@ -78,7 +118,13 @@ internal class DefaultDohSettingsProvider(
else -> {
when (settings.dohProviderUrl) {
cloudflareUri -> cloudflare
- nextDnsUri -> nextDns
+ mullvadBaseUri -> mullvadBase
+ cloudflareMalwareUri -> cloudflareMalware
+ dns4EuAdBlockingUri -> dns4EuAdBlocking
+ dns4EuProtectiveUri -> dns4EuProtective
+ dns4EuUnfilteredUri -> dns4EuUnfiltered
+ mullvadUnfilteredUri -> mullvadUnfiltered
+ IFDohProviders.mullvadBaseUri -> mullvadBase
+ IFDohProviders.cloudflareMalwareUri -> cloudflareMalware
+ IFDohProviders.dns4EuAdBlockingUri -> dns4EuAdBlocking
+ IFDohProviders.dns4EuProtectiveUri -> dns4EuProtective
+ IFDohProviders.dns4EuUnfilteredUri -> dns4EuUnfiltered
+ IFDohProviders.dnsBunkerUri -> dnsBunker
+ IFDohProviders.mullvadUnfilteredUri -> mullvadUnfiltered
"" -> getDefaultProviders().first()
else -> custom
}
@@ -121,6 +156,11 @@ internal class DefaultDohSettingsProvider(
val cloudflareUri = "https://mozilla.cloudflare-dns.com/dns-query"
@VisibleForTesting
- val nextDnsUri = "https://firefox.dns.nextdns.io/"
+ val mullvadBaseUri = "https://base.dns.mullvad.net/dns-query"
+ val cloudflareMalwareUri = "https://security.cloudflare-dns.com/dns-query"
+ val dns4EuAdBlockingUri = "https://noads.joindns4.eu/dns-query"
+ val dns4EuProtectiveUri = "https://protective.joindns4.eu/dns-query"
+ val dns4EuUnfilteredUri = "https://unfiltered.joindns4.eu/dns-query"
+ val mullvadUnfilteredUri = "https://dns.mullvad.net/dns-query"
}
}
--
@@ -0,0 +1,39 @@
package org.ironfoxoss.core
/**
* IronFox DNS over HTTPS providers
*
*/
object IFDohProviders {
// Mullvad (Base)
const val mullvadBaseName = "Mullvad (Base) 🇸🇪"
const val mullvadBaseUri = "https://base.dns.mullvad.net/dns-query"
// Cloudflare
/// (We don't provide the Uri variable here, as it's specified by `DohSettingsProvider.kt` directly)
const val cloudflareName = "Cloudflare 🇺🇸"
// Cloudflare (Malware Protection)
const val cloudflareMalwareName = "Cloudflare (Malware Protection) 🇺🇸"
const val cloudflareMalwareUri = "https://security.cloudflare-dns.com/dns-query"
// DNS4EU (Ad Blocking)
const val dns4EuAdBlockingName = "DNS4EU (Ad Blocking) 🇨🇿"
const val dns4EuAdBlockingUri = "https://noads.joindns4.eu/dns-query"
// DNS4EU (Protective)
const val dns4EuProtectiveName = "DNS4EU (Protective) 🇨🇿"
const val dns4EuProtectiveUri = "https://protective.joindns4.eu/dns-query"
// DNS4EU (Unfiltered)
const val dns4EuUnfilteredName = "DNS4EU (Unfiltered) 🇨🇿"
const val dns4EuUnfilteredUri = "https://unfiltered.joindns4.eu/dns-query"
// DNSBunker
const val dnsBunkerName = "DNSBunker 🇩🇪"
const val dnsBunkerUri = "https://dnsbunker.org/dns-query"
// Mullvad (Unfiltered)
const val mullvadUnfilteredName = "Mullvad (Unfiltered) 🇸🇪"
const val mullvadUnfilteredUri = "https://dns.mullvad.net/dns-query"
}
@@ -493,6 +493,9 @@ function setDohBootstrap(address) {
} else if (address === "https://unfiltered.joindns4.eu/dns-query" ||
address === "https://unfiltered.joindns4.eu:443/dns-query") {
bootstrapIP = '86.54.11.100';
} else if (address === "https://dnsbunker.org/dns-query" ||
address === "https://dnsbunker.org:443/dns-query") {
bootstrapIP = '185.250.250.61';
};
// Set our bootstrap IP
+1
View File
@@ -490,6 +490,7 @@ patches:
- DNS4EU (Ad Blocking)
- DNS4EU (Protective)
- DNS4EU (Unfiltered)
- DNSBunker
- Mullvad (Unfiltered)
reason: "To add support for multiple secure DNS providers in the UI settings."
effect: "Adds a selection of carefully selected DoH providers for the users to choose from."