@@ -16,7 +16,6 @@ import com.v2ray.ang.dto.V2rayConfig.OutboundBean.StreamSettingsBean
1616import com.v2ray.ang.dto.V2rayConfig.RoutingBean.RulesBean
1717import com.v2ray.ang.extension.isNotNullEmpty
1818import com.v2ray.ang.fmt.HttpFmt
19- import com.v2ray.ang.fmt.Hysteria2Fmt
2019import com.v2ray.ang.fmt.ShadowsocksFmt
2120import com.v2ray.ang.fmt.SocksFmt
2221import com.v2ray.ang.fmt.TrojanFmt
@@ -479,20 +478,6 @@ object V2rayConfigManager {
479478 )
480479 }
481480
482- // User DNS hosts
483- try {
484- val userHosts = MmkvManager .decodeSettingsString(AppConfig .PREF_DNS_HOSTS )
485- if (userHosts.isNotNullEmpty()) {
486- var userHostsMap = userHosts?.split(" ," )
487- ?.filter { it.isNotEmpty() }
488- ?.filter { it.contains(" :" ) }
489- ?.associate { it.split(" :" ).let { (k, v) -> k to v } }
490- if (userHostsMap != null ) hosts.putAll(userHostsMap)
491- }
492- } catch (e: Exception ) {
493- Log .e(AppConfig .TAG , " Failed to configure user DNS hosts" , e)
494- }
495-
496481 // block dns
497482 val blkDomain = getUserRule2Domain(AppConfig .TAG_BLOCKED )
498483 if (blkDomain.isNotEmpty()) {
@@ -504,12 +489,35 @@ object V2rayConfigManager {
504489
505490 // hardcode popular Android Private DNS rule to fix localhost DNS problem
506491 hosts[AppConfig .DNS_ALIDNS_DOMAIN ] = AppConfig .DNS_ALIDNS_ADDRESSES
507- hosts[AppConfig .DNS_CLOUDFLARE_DOMAIN ] = AppConfig .DNS_CLOUDFLARE_ADDRESSES
492+ hosts[AppConfig .DNS_CLOUDFLARE_ONE_DOMAIN ] = AppConfig .DNS_CLOUDFLARE_ONE_ADDRESSES
508493 hosts[AppConfig .DNS_DNSPOD_DOMAIN ] = AppConfig .DNS_DNSPOD_ADDRESSES
509494 hosts[AppConfig .DNS_GOOGLE_DOMAIN ] = AppConfig .DNS_GOOGLE_ADDRESSES
510495 hosts[AppConfig .DNS_QUAD9_DOMAIN ] = AppConfig .DNS_QUAD9_ADDRESSES
511496 hosts[AppConfig .DNS_YANDEX_DOMAIN ] = AppConfig .DNS_YANDEX_ADDRESSES
512497
498+ // User DNS hosts
499+ try {
500+ val userHosts = MmkvManager .decodeSettingsString(AppConfig .PREF_DNS_HOSTS )
501+ if (userHosts.isNotNullEmpty()) {
502+ var userHostsMap = userHosts?.split(" ," )
503+ ?.filter { it.isNotEmpty() }
504+ ?.filter { it.contains(" :" ) }
505+ ?.associate { it.split(" :" ).let { (k, v) -> k to v } }
506+ if (userHostsMap != null ) hosts.putAll(userHostsMap)
507+ }
508+ } catch (e: Exception ) {
509+ Log .e(AppConfig .TAG , " Failed to configure user DNS hosts" , e)
510+ }
511+
512+ remoteDns.forEach { dns ->
513+ val matchDomain = AppConfig .DNS_CLOUDFLARE_DOMAIN_LIST .find { dns.contains(it) }
514+ if (matchDomain != null && ! hosts.containsKey(matchDomain)) {
515+ val ip = HttpUtil .resolveHostToIP(matchDomain)
516+ if (! ip.isNullOrEmpty()) {
517+ hosts[matchDomain] = ip
518+ }
519+ }
520+ }
513521
514522 // DNS dns
515523 v2rayConfig.dns = V2rayConfig .DnsBean (
0 commit comments