From 8405f7db6de14fc8337cf63f16ab07d16b0060b7 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 5a76ab56..7a16dd8f 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs @@ -1950,13 +1950,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); } @@ -1964,12 +1966,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() ?? [])