pull/4917/head
2dust 8 months ago
parent 1aef49ee11
commit dc3f07ee84

@ -653,22 +653,30 @@ namespace v2rayN.Handler
var hasDomainIp = false; var hasDomainIp = false;
if (item.domain?.Count > 0) if (item.domain?.Count > 0)
{ {
var countDomain = 0;
foreach (var it in item.domain) foreach (var it in item.domain)
{ {
ParseV2Domain(it, rule); if (ParseV2Domain(it, rule)) countDomain++;
}
if (countDomain > 0)
{
rules.Add(rule);
hasDomainIp = true;
} }
rules.Add(rule);
hasDomainIp = true;
} }
if (item.ip?.Count > 0) if (item.ip?.Count > 0)
{ {
var countIp = 0;
foreach (var it in item.ip) foreach (var it in item.ip)
{ {
ParseV2Address(it, rule2); if (ParseV2Address(it, rule2)) countIp++;
}
if (countIp > 0)
{
rules.Add(rule2);
hasDomainIp = true;
} }
rules.Add(rule2);
hasDomainIp = true;
} }
if (_config.tunModeItem.enableTun && item.process?.Count > 0) if (_config.tunModeItem.enableTun && item.process?.Count > 0)
@ -678,7 +686,8 @@ namespace v2rayN.Handler
hasDomainIp = true; hasDomainIp = true;
} }
if (!hasDomainIp) if (!hasDomainIp
&& (rule.port != null || rule.port_range != null || rule.protocol != null || rule.inbound != null))
{ {
rules.Add(rule); rules.Add(rule);
} }
@ -690,11 +699,11 @@ namespace v2rayN.Handler
return 0; return 0;
} }
private void ParseV2Domain(string domain, Rule4Sbox rule) private bool ParseV2Domain(string domain, Rule4Sbox rule)
{ {
if (domain.StartsWith("#") || domain.StartsWith("ext:") || domain.StartsWith("ext-domain:")) if (domain.StartsWith("#") || domain.StartsWith("ext:") || domain.StartsWith("ext-domain:"))
{ {
return; return false;
} }
else if (domain.StartsWith("geosite:")) else if (domain.StartsWith("geosite:"))
{ {
@ -728,17 +737,18 @@ namespace v2rayN.Handler
rule.domain_keyword ??= []; rule.domain_keyword ??= [];
rule.domain_keyword?.Add(domain); rule.domain_keyword?.Add(domain);
} }
return true;
} }
private void ParseV2Address(string address, Rule4Sbox rule) private bool ParseV2Address(string address, Rule4Sbox rule)
{ {
if (address.StartsWith("ext:") || address.StartsWith("ext-ip:")) if (address.StartsWith("ext:") || address.StartsWith("ext-ip:"))
{ {
return; return false;
} }
else if (address.StartsWith("geoip:!")) else if (address.StartsWith("geoip:!"))
{ {
return; return false;
} }
else if (address.StartsWith("geoip:")) else if (address.StartsWith("geoip:"))
{ {
@ -750,6 +760,7 @@ namespace v2rayN.Handler
if (rule.ip_cidr is null) { rule.ip_cidr = new(); } if (rule.ip_cidr is null) { rule.ip_cidr = new(); }
rule.ip_cidr?.Add(address); rule.ip_cidr?.Add(address);
} }
return true;
} }
private int GenDns(ProfileItem node, SingboxConfig singboxConfig) private int GenDns(ProfileItem node, SingboxConfig singboxConfig)

@ -389,19 +389,19 @@ namespace v2rayN.Models
[Serializable] [Serializable]
public class RulesItem4Ray public class RulesItem4Ray
{ {
public string type { get; set; } public string? type { get; set; }
public string port { get; set; } public string? port { get; set; }
public List<string> inboundTag { get; set; } public List<string>? inboundTag { get; set; }
public string outboundTag { get; set; } public string? outboundTag { get; set; }
public List<string> ip { get; set; } public List<string>? ip { get; set; }
public List<string> domain { get; set; } public List<string>? domain { get; set; }
public List<string> protocol { get; set; } public List<string>? protocol { get; set; }
} }
public class StreamSettings4Ray public class StreamSettings4Ray

Loading…
Cancel
Save