From 49c910f70b5148f534578120eddf463b075dd2f2 Mon Sep 17 00:00:00 2001 From: DHR60 Date: Tue, 22 Jul 2025 18:36:57 +0800 Subject: [PATCH] Fixes geoip overrides rule_set when geosite is also set --- .../Services/CoreConfig/CoreConfigSingboxService.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs index 684cc3bc..05a1fee9 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs @@ -1955,13 +1955,15 @@ public class CoreConfigSingboxService //convert route geosite & geoip to ruleset foreach (var rule in singboxConfig.route.rules.Where(t => t.geosite?.Count > 0).ToList() ?? []) { - rule.rule_set = rule?.geosite?.Select(t => $"{geosite}-{t}").ToList(); + rule.rule_set ??= new List(); + rule.rule_set.AddRange(rule?.geosite?.Select(t => $"{geosite}-{t}").ToList()); rule.geosite = null; AddRuleSets(ruleSets, rule.rule_set); } foreach (var rule in singboxConfig.route.rules.Where(t => t.geoip?.Count > 0).ToList() ?? []) { - rule.rule_set = rule?.geoip?.Select(t => $"{geoip}-{t}").ToList(); + rule.rule_set ??= new List(); + rule.rule_set.AddRange(rule?.geoip?.Select(t => $"{geoip}-{t}").ToList()); rule.geoip = null; AddRuleSets(ruleSets, rule.rule_set); } @@ -1969,12 +1971,14 @@ public class CoreConfigSingboxService //convert dns geosite & geoip to ruleset foreach (var rule in singboxConfig.dns?.rules.Where(t => t.geosite?.Count > 0).ToList() ?? []) { - rule.rule_set = rule?.geosite?.Select(t => $"{geosite}-{t}").ToList(); + rule.rule_set ??= new List(); + rule.rule_set.AddRange(rule?.geosite?.Select(t => $"{geosite}-{t}").ToList()); rule.geosite = null; } foreach (var rule in singboxConfig.dns?.rules.Where(t => t.geoip?.Count > 0).ToList() ?? []) { - rule.rule_set = rule?.geoip?.Select(t => $"{geoip}-{t}").ToList(); + rule.rule_set ??= new List(); + rule.rule_set.AddRange(rule?.geoip?.Select(t => $"{geoip}-{t}").ToList()); rule.geoip = null; } foreach (var dnsRule in singboxConfig.dns?.rules.Where(t => t.rule_set?.Count > 0).ToList() ?? [])