diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt index a7c2251e..60614886 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt @@ -139,7 +139,7 @@ object Utils { */ fun getRemoteDnsServers(): List { val remoteDns = settingsStorage?.decodeString(AppConfig.PREF_REMOTE_DNS) ?: AppConfig.DNS_AGENT - val ret = remoteDns.split(",").filter { isPureIpAddress(it) || it.startsWith("https") } + val ret = remoteDns.split(",").filter { isPureIpAddress(it) || isCoreDNSAddress(it) } if (ret.isEmpty()) { return listOf(AppConfig.DNS_AGENT) } @@ -159,7 +159,7 @@ object Utils { */ fun getDomesticDnsServers(): List { val domesticDns = settingsStorage?.decodeString(AppConfig.PREF_DOMESTIC_DNS) ?: AppConfig.DNS_DIRECT - val ret = domesticDns.split(",").filter { isPureIpAddress(it) || it.startsWith("https") } + val ret = domesticDns.split(",").filter { isPureIpAddress(it) || isCoreDNSAddress(it) } if (ret.isEmpty()) { return listOf(AppConfig.DNS_DIRECT) } @@ -257,6 +257,10 @@ object Utils { return regV6.matches(addr) } + private fun isCoreDNSAddress(s: String): Boolean { + return s.startsWith("https") || s.startsWith("tcp") || s.startsWith("quic") + } + /** * is valid url */ diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt index 8b101310..689ec475 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt @@ -277,7 +277,7 @@ object V2rayConfigUtil { val remoteDns = Utils.getRemoteDnsServers() if (v2rayConfig.inbounds.none { e -> e.protocol == "dokodemo-door" && e.tag == "dns-in" }) { val dnsInboundSettings = V2rayConfig.InboundBean.InSettingsBean( - address = if (remoteDns.first().startsWith("https")) "1.1.1.1" else remoteDns.first(), + address = if (Utils.isPureIpAddress(remoteDns.first())) remoteDns.first() else "1.1.1.1", port = 53, network = "tcp,udp") @@ -346,7 +346,7 @@ object V2rayConfigUtil { if (routingMode == "2" || routingMode == "3") { servers.add(V2rayConfig.DnsBean.ServersBean(domesticDns.first(), 53, geositeCn, geoipCn)) } - if (!domesticDns.first().startsWith("https")) { + if (Utils.isPureIpAddress(domesticDns.first())) { v2rayConfig.routing.rules.add(0, V2rayConfig.RoutingBean.RulesBean( type = "field", outboundTag = AppConfig.TAG_DIRECT, @@ -372,7 +372,7 @@ object V2rayConfigUtil { hosts = hosts) // DNS routing - if (!remoteDns.first().startsWith("https")) { + if (Utils.isPureIpAddress(remoteDns.first())) { v2rayConfig.routing.rules.add(0, V2rayConfig.RoutingBean.RulesBean( type = "field", outboundTag = AppConfig.TAG_AGENT,