diff --git a/db/ConfigBuilder.cpp b/db/ConfigBuilder.cpp index c05588f..b789b90 100644 --- a/db/ConfigBuilder.cpp +++ b/db/ConfigBuilder.cpp @@ -323,11 +323,16 @@ namespace NekoGui { {"outboundTag", "direct"}, }); } - dnsServers += QJsonObject{ + QJsonObject directObj{ {"address", directDnsAddress.replace("https://", "https+local://")}, {"queryStrategy", dataStore->routing->direct_dns_strategy}, {"domains", QList2QJsonArray(status->domainListDNSDirect)}, }; + if (dataStore->routing->def_outbound == "bypass") { + dnsServers.prepend(directObj); + } else { + dnsServers.append(directObj); + } dns["disableFallback"] = true; dns["servers"] = dnsServers; @@ -854,14 +859,20 @@ namespace NekoGui { // Direct auto directDNSAddress = dataStore->routing->direct_dns; if (directDNSAddress == "localhost") directDNSAddress = BOX_UNDERLYING_DNS_EXPORT; - if (!status->forTest) - dnsServers += QJsonObject{ + if (!status->forTest) { + QJsonObject directObj{ {"tag", "dns-direct"}, {"address_resolver", "dns-local"}, {"strategy", dataStore->routing->direct_dns_strategy}, {"address", directDNSAddress.replace("+local://", "://")}, {"detour", "direct"}, }; + if (dataStore->routing->def_outbound == "bypass") { + dnsServers.prepend(directObj); + } else { + dnsServers.append(directObj); + } + } // block if (!status->forTest)