Add domain field for WireGuard exit node

This commit is contained in:
DHR60 2025-04-12 17:03:12 +08:00
parent e07033e22c
commit 83a46c2873

View file

@ -1176,11 +1176,14 @@ public class CoreConfigV2rayService
private async Task<int> GenDnsDomains(ProfileItem? node, JsonNode dns, DNSItem? dNSItem)
{
if (node == null)
{ return 0; }
{
return 0;
}
var servers = dns["servers"];
if (servers != null)
{
var domainList = new List<string>();
string? wireguardEndpointDomain = null;
if (Utils.IsDomain(node.Address))
{
domainList.Add(node.Address);
@ -1206,10 +1209,17 @@ public class CoreConfigV2rayService
&& nextNode.ConfigType != EConfigType.Hysteria2
&& nextNode.ConfigType != EConfigType.TUIC
&& Utils.IsDomain(nextNode.Address))
{
if (nextNode.ConfigType == EConfigType.WireGuard)
{
wireguardEndpointDomain = nextNode.Address;
}
else
{
domainList.Add(nextNode.Address);
}
}
}
if (domainList.Count > 0)
{
var dnsServer = new DnsServer4Ray()
@ -1218,6 +1228,16 @@ public class CoreConfigV2rayService
skipFallback = true,
domains = domainList
};
servers.AsArray().Add(JsonUtils.SerializeToNode(dnsServer));
}
if (wireguardEndpointDomain is not null)
{
var dnsServer = new DnsServer4Ray()
{
address = string.IsNullOrEmpty(dNSItem?.DomainDNSAddress) ? Global.DomainDNSAddress.FirstOrDefault() : dNSItem?.DomainDNSAddress,
skipFallback = true,
domains = new() { wireguardEndpointDomain }
};
servers.AsArray().Insert(0, JsonUtils.SerializeToNode(dnsServer));
}
}