3 Commits

Author SHA1 Message Date
zarazaex69 06579df2a4 feat(dns): add QUIC support and upgrade to DoH DNS servers 2026-04-10 11:07:20 +03:00
zarazaex69 56532f10d3 chore: add list of НИЩИЕ 2026-04-10 10:59:36 +03:00
zarazaex69 e843b92ef2 chore(build): update APK binary with latest changes 2026-04-09 12:28:34 +03:00
7 changed files with 27 additions and 22 deletions
@@ -30,7 +30,8 @@
"enabled": true,
"destOverride": [
"http",
"tls"
"tls",
"quic"
]
}
}
@@ -30,7 +30,8 @@
"enabled": true,
"destOverride": [
"http",
"tls"
"tls",
"quic"
]
}
},
@@ -47,7 +48,8 @@
"enabled": true,
"destOverride": [
"http",
"tls"
"tls",
"quic"
]
}
}
@@ -123,10 +123,9 @@ object AppConfig {
// const val IP_API_URL = "https://speed.cloudflare.com/meta"
const val IP_API_URL = "https://api.ip.sb/geoip"
/** DNS server addresses. */
const val DNS_PROXY = "1.1.1.1"
const val DNS_PROXY = "https://1.1.1.1/dns-query"
const val DNS_DIRECT = "223.5.5.5"
const val DNS_VPN = "1.1.1.1"
const val DNS_VPN = "https://1.1.1.1/dns-query"
const val GEOSITE_PRIVATE = "geosite:private"
const val GEOSITE_CN = "geosite:cn"
const val GEOIP_PRIVATE = "geoip:private"
@@ -438,7 +438,6 @@ object SettingsManager {
* Ensure default settings are present in MMKV.
*/
private fun ensureDefaultSettings() {
// Write defaults in the exact order requested by the user
ensureDefaultValue(AppConfig.PREF_MODE, AppConfig.VPN)
ensureDefaultValue(AppConfig.PREF_VPN_DNS, AppConfig.DNS_VPN)
ensureDefaultValue(AppConfig.PREF_VPN_MTU, AppConfig.VPN_MTU.toString())
@@ -453,6 +452,9 @@ object SettingsManager {
ensureDefaultValue(AppConfig.PREF_MUX_XUDP_CONCURRENCY, "8")
ensureDefaultValue(AppConfig.PREF_FRAGMENT_LENGTH, "50-100")
ensureDefaultValue(AppConfig.PREF_FRAGMENT_INTERVAL, "10-20")
ensureDefaultBoolValue(AppConfig.PREF_LOCAL_DNS_ENABLED, true)
ensureDefaultBoolValue(AppConfig.PREF_FAKE_DNS_ENABLED, true)
}
private fun ensureDefaultValue(key: String, default: String) {
@@ -461,6 +463,12 @@ object SettingsManager {
}
}
private fun ensureDefaultBoolValue(key: String, default: Boolean) {
if (MmkvManager.decodeSettingsBool(key) == null) {
MmkvManager.encodeSettings(key, default)
}
}
private fun migrateAutoSort() {
val migrationKey = "auto_sort_migrated_v2"
if (MmkvManager.decodeSettingsBool(migrationKey, false)) {
@@ -592,12 +592,13 @@ object V2rayConfigManager {
val hosts = mutableMapOf<String, Any>()
val servers = ArrayList<Any>()
//remote Dns
val remoteDns = SettingsManager.getRemoteDnsServers()
val domesticDns = SettingsManager.getDomesticDnsServers()
val proxyDomain = getUserRule2Domain(AppConfig.TAG_PROXY)
remoteDns.forEach {
servers.add(it)
}
val directDomain = getUserRule2Domain(AppConfig.TAG_DIRECT)
val isCnRoutingMode = directDomain.contains(AppConfig.GEOSITE_CN)
val geoipCn = arrayListOf(AppConfig.GEOIP_CN)
if (proxyDomain.isNotEmpty()) {
servers.add(
V2rayConfig.DnsBean.ServersBean(
@@ -607,11 +608,6 @@ object V2rayConfigManager {
)
}
// domestic DNS
val domesticDns = SettingsManager.getDomesticDnsServers()
val directDomain = getUserRule2Domain(AppConfig.TAG_DIRECT)
val isCnRoutingMode = directDomain.contains(AppConfig.GEOSITE_CN)
val geoipCn = arrayListOf(AppConfig.GEOIP_CN)
if (directDomain.isNotEmpty()) {
servers.add(
V2rayConfig.DnsBean.ServersBean(
@@ -624,16 +620,17 @@ object V2rayConfigManager {
)
}
//block dns
remoteDns.forEach {
servers.add(it)
}
val blkDomain = getUserRule2Domain(AppConfig.TAG_BLOCKED)
if (blkDomain.isNotEmpty()) {
hosts.putAll(blkDomain.map { it to AppConfig.LOOPBACK })
}
// hardcode googleapi rule to fix play store problems
hosts[AppConfig.GOOGLEAPIS_CN_DOMAIN] = AppConfig.GOOGLEAPIS_COM_DOMAIN
// hardcode popular Android Private DNS rule to fix localhost DNS problem
hosts[AppConfig.DNS_ALIDNS_DOMAIN] = AppConfig.DNS_ALIDNS_ADDRESSES
hosts[AppConfig.DNS_CLOUDFLARE_ONE_DOMAIN] = AppConfig.DNS_CLOUDFLARE_ONE_ADDRESSES
hosts[AppConfig.DNS_CLOUDFLARE_DNS_COM_DOMAIN] = AppConfig.DNS_CLOUDFLARE_DNS_COM_ADDRESSES
@@ -643,7 +640,6 @@ object V2rayConfigManager {
hosts[AppConfig.DNS_QUAD9_DOMAIN] = AppConfig.DNS_QUAD9_ADDRESSES
hosts[AppConfig.DNS_YANDEX_DOMAIN] = AppConfig.DNS_YANDEX_ADDRESSES
//User DNS hosts
try {
val userHosts = MmkvManager.decodeSettingsString(AppConfig.PREF_DNS_HOSTS)
if (userHosts.isNotNullEmpty()) {
@@ -657,14 +653,12 @@ object V2rayConfigManager {
Log.e(AppConfig.TAG, "Failed to configure user DNS hosts", e)
}
// DNS dns
v2rayConfig.dns = V2rayConfig.DnsBean(
servers = servers,
hosts = hosts,
tag = AppConfig.TAG_DNS
)
// DNS routing
v2rayConfig.routing.rules.add(
RulesBean(
outboundTag = AppConfig.TAG_DIRECT,
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
ТЫ