Fix hosts resolve rule

This commit is contained in:
DHR60 2026-03-04 17:44:29 +08:00
parent dd801a3e55
commit 54c525fbf2

View file

@ -84,11 +84,58 @@ public partial class CoreConfigSingboxService
} }
if (hostsDomains.Count > 0) if (hostsDomains.Count > 0)
{ {
_coreConfig.route.rules.Add(new() var hostsResolveRule = new Rule4Sbox
{ {
action = "resolve", action = "resolve",
domain = hostsDomains, };
}); var hostsCounter = 0;
foreach (var host in hostsDomains)
{
var domainRule = new Rule4Sbox();
if (!ParseV2Domain(host, domainRule))
{
continue;
}
if (domainRule.domain_keyword?.Count > 0 && !host.StartsWith("keyword:"))
{
domainRule.domain = domainRule.domain_keyword;
domainRule.domain_keyword = null;
}
if (domainRule.domain?.Count > 0)
{
hostsResolveRule.domain ??= [];
hostsResolveRule.domain.AddRange(domainRule.domain);
hostsCounter++;
}
else if (domainRule.domain_keyword?.Count > 0)
{
hostsResolveRule.domain_keyword ??= [];
hostsResolveRule.domain_keyword.AddRange(domainRule.domain_keyword);
hostsCounter++;
}
else if (domainRule.domain_suffix?.Count > 0)
{
hostsResolveRule.domain_suffix ??= [];
hostsResolveRule.domain_suffix.AddRange(domainRule.domain_suffix);
hostsCounter++;
}
else if (domainRule.domain_regex?.Count > 0)
{
hostsResolveRule.domain_regex ??= [];
hostsResolveRule.domain_regex.AddRange(domainRule.domain_regex);
hostsCounter++;
}
else if (domainRule.geosite?.Count > 0)
{
hostsResolveRule.geosite ??= [];
hostsResolveRule.geosite.AddRange(domainRule.geosite);
hostsCounter++;
}
}
if (hostsCounter > 0)
{
_coreConfig.route.rules.Add(hostsResolveRule);
}
} }
_coreConfig.route.rules.Add(new() _coreConfig.route.rules.Add(new()