Skip to content

Commit 8ee5304

Browse files
committed
Bug fix
1 parent 3beaa81 commit 8ee5304

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

v2rayN/v2rayN/Handler/CoreConfig/CoreConfigSingbox.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Net;
1+
using System.Data;
2+
using System.Net;
23
using System.Net.NetworkInformation;
34
using v2rayN.Enums;
45
using v2rayN.Models;
@@ -889,6 +890,10 @@ private int GenExperimental(SingboxConfig singboxConfig)
889890

890891
private int ConvertGeo2Ruleset(SingboxConfig singboxConfig)
891892
{
893+
static void AddRuleSets(List<string> ruleSets, List<string>? rule_set)
894+
{
895+
if (rule_set != null) ruleSets.AddRange(rule_set);
896+
}
892897
var geosite = "geosite";
893898
var geoip = "geoip";
894899
var ruleSets = new List<string>();
@@ -898,13 +903,13 @@ private int ConvertGeo2Ruleset(SingboxConfig singboxConfig)
898903
{
899904
rule.rule_set = rule?.geosite?.Select(t => $"{geosite}-{t}").ToList();
900905
rule.geosite = null;
901-
ruleSets.AddRange(rule.rule_set);
906+
AddRuleSets(ruleSets, rule.rule_set);
902907
}
903908
foreach (var rule in singboxConfig.route.rules.Where(t => t.geoip?.Count > 0).ToList() ?? [])
904909
{
905910
rule.rule_set = rule?.geoip?.Select(t => $"{geoip}-{t}").ToList();
906911
rule.geoip = null;
907-
ruleSets.AddRange(rule.rule_set);
912+
AddRuleSets(ruleSets, rule.rule_set);
908913
}
909914

910915
//convert dns geosite & geoip to ruleset
@@ -920,7 +925,15 @@ private int ConvertGeo2Ruleset(SingboxConfig singboxConfig)
920925
}
921926
foreach (var dnsRule in singboxConfig.dns?.rules.Where(t => t.rule_set?.Count > 0).ToList() ?? [])
922927
{
923-
ruleSets.AddRange(dnsRule.rule_set);
928+
AddRuleSets(ruleSets, dnsRule.rule_set);
929+
}
930+
//rules in rules
931+
foreach (var item in singboxConfig.dns?.rules.Where(t => t.rules?.Count > 0).Select(t => t.rules).ToList() ?? [])
932+
{
933+
foreach (var item2 in item ?? [])
934+
{
935+
AddRuleSets(ruleSets, item2.rule_set);
936+
}
924937
}
925938

926939
//load custom ruleset file
@@ -946,6 +959,7 @@ private int ConvertGeo2Ruleset(SingboxConfig singboxConfig)
946959
singboxConfig.route.rule_set = [];
947960
foreach (var item in new HashSet<string>(ruleSets))
948961
{
962+
if (Utils.IsNullOrEmpty(item)) { continue; }
949963
var customRuleset = customRulesets.FirstOrDefault(t => t.tag != null && t.tag.Equals(item));
950964
if (customRuleset != null)
951965
{

0 commit comments

Comments
 (0)