From 6dec4d058b2befcec72051ac3108a4921df2ee56 Mon Sep 17 00:00:00 2001 From: arm64v8a <48624112+arm64v8a@users.noreply.github.com> Date: Wed, 12 Apr 2023 10:21:50 +0900 Subject: [PATCH] fix --- .../nekohasekai/sagernet/fmt/ConfigBuilder.kt | 56 +++++-------------- .../sagernet/fmt/v2ray/StandardV2RayBean.java | 9 ++- .../nekohasekai/sagernet/ui/BackupFragment.kt | 4 +- .../profile/StandardV2RaySettingsActivity.kt | 6 +- .../ui/profile/VMessSettingsActivity.kt | 6 +- 5 files changed, 31 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt b/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt index fe983a6..e0f5e3b 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt @@ -612,11 +612,7 @@ fun buildConfig( tag = TAG_DNS_IN listen = bind listen_port = DataStore.localDNSPort - override_address = if (!remoteDns.first().isIpAddress()) { - "8.8.8.8" - } else { - remoteDns.first() - } + override_address = "8.8.8.8" override_port = 53 }) @@ -631,23 +627,6 @@ fun buildConfig( directDNS = listOf(LOCAL_DNS_SERVER) } - // routing for DNS server - for (dns in remoteDns) { - if (!dns.isIpAddress()) continue - route.rules.add(Rule_DefaultOptions().apply { - outbound = TAG_PROXY - ip_cidr = listOf(dns) - }) - } - - for (dns in directDNS) { - if (!dns.isIpAddress()) continue - route.rules.add(Rule_DefaultOptions().apply { - outbound = TAG_DIRECT - ip_cidr = listOf(dns) - }) - } - // Bypass Lookup for the first profile bypassDNSBeans.forEach { var serverAddr = it.serverAddress @@ -680,10 +659,9 @@ fun buildConfig( } // remote dns obj - remoteDns.firstOrNull()?.apply { - val d = this + remoteDns.firstOrNull().let { dns.servers.add(DNSServerOptions().apply { - address = d + address = it ?: throw Exception("No remote DNS, check your settings!") tag = "dns-remote" address_resolver = "dns-direct" applyDNSNetworkSettings(false) @@ -691,10 +669,9 @@ fun buildConfig( } // add directDNS objects here - directDNS.firstOrNull()?.apply { - val d = this + directDNS.firstOrNull().let { dns.servers.add(DNSServerOptions().apply { - address = d + address = it ?: throw Exception("No direct DNS, check your settings!") tag = "dns-direct" detour = "direct" address_resolver = "dns-local" @@ -774,13 +751,11 @@ fun buildConfig( } } - // Disable DNS for test if (forTest) { - dns.servers.clear() + // Disable DNS for test dns.rules.clear() - } - - if (!forTest) { + } else { + // built-in DNS rules route.rules.add(0, Rule_DefaultOptions().apply { inbound = listOf(TAG_DNS_IN) outbound = TAG_DNS_OUT @@ -806,6 +781,13 @@ fun buildConfig( server = "dns-block" disable_cache = true }) + // force bypass + if (domainListDNSDirectForce.isNotEmpty()) { + dns.rules.add(0, DNSRule_DefaultOptions().apply { + makeSingBoxRule(domainListDNSDirectForce.toHashSet().toList()) + server = "dns-direct" + }) + } } // fakedns obj @@ -825,14 +807,6 @@ fun buildConfig( disable_cache = true }) } - - // force bypass - if (domainListDNSDirectForce.isNotEmpty()) { - dns.rules.add(0, DNSRule_DefaultOptions().apply { - makeSingBoxRule(domainListDNSDirectForce.toHashSet().toList()) - server = "dns-direct" - }) - } }.let { ConfigBuildResult( gson.toJson(it.asMap().apply { diff --git a/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java b/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java index d236b20..808c90e 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java +++ b/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java @@ -4,6 +4,7 @@ import com.esotericsoftware.kryo.io.ByteBufferInput; import com.esotericsoftware.kryo.io.ByteBufferOutput; import io.nekohasekai.sagernet.fmt.AbstractBean; +import io.nekohasekai.sagernet.fmt.trojan.TrojanBean; import moe.matsuri.nb4a.utils.JavaUtil; public abstract class StandardV2RayBean extends AbstractBean { @@ -63,7 +64,13 @@ public abstract class StandardV2RayBean extends AbstractBean { if (JavaUtil.isNullOrBlank(host)) host = ""; if (JavaUtil.isNullOrBlank(path)) path = ""; - if (JavaUtil.isNullOrBlank(security)) security = "none"; + if (JavaUtil.isNullOrBlank(security)) { + if (this instanceof TrojanBean || isVLESS()) { + security = "tls"; + } else { + security = "none"; + } + } if (JavaUtil.isNullOrBlank(sni)) sni = ""; if (JavaUtil.isNullOrBlank(alpn)) alpn = ""; diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/BackupFragment.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/BackupFragment.kt index 4205b69..46ac0ec 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/BackupFragment.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/BackupFragment.kt @@ -70,7 +70,7 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) { ) onMainDispatcher { startFilesForResult( - exportSettings, "matsuri_backup_${Date().toLocaleString()}.json" + exportSettings, "nekobox_backup_${Date().toLocaleString()}.json" ) } } @@ -85,7 +85,7 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) { ) app.cacheDir.mkdirs() val cacheFile = File( - app.cacheDir, "matsuri_backup_${Date().toLocaleString()}.json" + app.cacheDir, "nekobox_backup_${Date().toLocaleString()}.json" ) cacheFile.writeText(content) onMainDispatcher { diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/profile/StandardV2RaySettingsActivity.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/profile/StandardV2RaySettingsActivity.kt index 36ab623..9c242e7 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/profile/StandardV2RaySettingsActivity.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/profile/StandardV2RaySettingsActivity.kt @@ -45,11 +45,7 @@ abstract class StandardV2RaySettingsActivity : ProfileSettingsActivity