Fix hosts matching (#8890)

* Fix hosts matching

* Fix hosts resolve rule

* Fix
This commit is contained in:
DHR60
2026-03-04 12:13:06 +00:00
committed by GitHub
parent 81da72bb39
commit b8f7cc0768
2 changed files with 123 additions and 33 deletions
@@ -84,11 +84,58 @@ public partial class CoreConfigSingboxService
}
if (hostsDomains.Count > 0)
{
_coreConfig.route.rules.Add(new()
var hostsResolveRule = new Rule4Sbox
{
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.Contains(':'))
{
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()
@@ -355,6 +402,11 @@ public partial class CoreConfigSingboxService
rule.domain_keyword ??= [];
rule.domain_keyword?.Add(domain.Substring(8));
}
else if (domain.StartsWith("dotless:"))
{
rule.domain_keyword ??= [];
rule.domain_keyword?.Add(domain.Substring(8));
}
else
{
rule.domain_keyword ??= [];