diff --git a/v2rayN/ServiceLib/Global.cs b/v2rayN/ServiceLib/Global.cs index ffab8d77..c0c99750 100644 --- a/v2rayN/ServiceLib/Global.cs +++ b/v2rayN/ServiceLib/Global.cs @@ -57,6 +57,9 @@ public class Global public const string HttpsProtocol = "https://"; public const string SocksProtocol = "socks://"; public const string Socks5Protocol = "socks5://"; + public const string AsIs = "AsIs"; + public const string IPIfNonMatch = "IPIfNonMatch"; + public const string IPOnDemand = "IPOnDemand"; public const string UserEMail = "t@t.tt"; public const string AutoRunRegPath = @"Software\Microsoft\Windows\CurrentVersion\Run"; @@ -288,9 +291,9 @@ public class Global public static readonly List DomainStrategies = [ - "AsIs", - "IPIfNonMatch", - "IPOnDemand" + AsIs, + IPIfNonMatch, + IPOnDemand ]; public static readonly List DomainStrategies4Singbox = diff --git a/v2rayN/ServiceLib/Handler/ConfigHandler.cs b/v2rayN/ServiceLib/Handler/ConfigHandler.cs index c05424a2..981fd2f5 100644 --- a/v2rayN/ServiceLib/Handler/ConfigHandler.cs +++ b/v2rayN/ServiceLib/Handler/ConfigHandler.cs @@ -2262,6 +2262,7 @@ public class ConfigHandler return 0; } + public static async Task SaveFullConfigTemplate(Config config, FullConfigTemplateItem item) { if (item == null) diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs index 7d38ccfd..fa2b14d8 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs @@ -1329,7 +1329,7 @@ public class CoreConfigSingboxService action = "resolve", strategy = domainStrategy }; - if (_config.RoutingBasicItem.DomainStrategy == "IPOnDemand") + if (_config.RoutingBasicItem.DomainStrategy == Global.IPOnDemand) { singboxConfig.route.rules.Add(resolveRule); } @@ -1351,7 +1351,7 @@ public class CoreConfigSingboxService } } } - if (_config.RoutingBasicItem.DomainStrategy == "IPIfNonMatch") + if (_config.RoutingBasicItem.DomainStrategy == Global.IPIfNonMatch) { singboxConfig.route.rules.Add(resolveRule); foreach (var item2 in ipRules) diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs index 62bf2b22..62c2e182 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs @@ -177,7 +177,7 @@ public class CoreConfigV2rayService rule.balancerTag = balancer.tag; } } - if (v2rayConfig.routing.domainStrategy == "IPIfNonMatch") + if (v2rayConfig.routing.domainStrategy == Global.IPIfNonMatch) { v2rayConfig.routing.rules.Add(new() { @@ -1145,7 +1145,7 @@ public class CoreConfigV2rayService { var result = await GenDnsCompatible(node, v2rayConfig); - if (v2rayConfig.routing.domainStrategy == "IPIfNonMatch") + if (v2rayConfig.routing.domainStrategy == Global.IPIfNonMatch) { // DNS routing v2rayConfig.dns.tag = Global.DnsTag; @@ -1179,7 +1179,7 @@ public class CoreConfigV2rayService await GenDnsServers(node, v2rayConfig, simpleDNSItem); await GenDnsHosts(v2rayConfig, simpleDNSItem); - if (v2rayConfig.routing.domainStrategy == "IPIfNonMatch") + if (v2rayConfig.routing.domainStrategy == Global.IPIfNonMatch) { // DNS routing v2rayConfig.dns.tag = Global.DnsTag; diff --git a/v2rayN/ServiceLib/ViewModels/FullConfigTemplateViewModel.cs b/v2rayN/ServiceLib/ViewModels/FullConfigTemplateViewModel.cs index 3aa618bf..f36a7fb6 100644 --- a/v2rayN/ServiceLib/ViewModels/FullConfigTemplateViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/FullConfigTemplateViewModel.cs @@ -1,12 +1,13 @@ using System.Reactive; -using DynamicData.Binding; using ReactiveUI; using ReactiveUI.Fody.Helpers; namespace ServiceLib.ViewModels; + public class FullConfigTemplateViewModel : MyReactiveObject { #region Reactive + [Reactive] public bool EnableFullConfigTemplate4Ray { get; set; } @@ -35,6 +36,7 @@ public class FullConfigTemplateViewModel : MyReactiveObject public string ProxyDetour4Singbox { get; set; } public ReactiveCommand SaveCmd { get; } + #endregion Reactive public FullConfigTemplateViewModel(Func>? updateView) @@ -48,6 +50,7 @@ public class FullConfigTemplateViewModel : MyReactiveObject _ = Init(); } + private async Task Init() { var item = await AppHandler.Instance.GetFullConfigTemplateItem(ECoreType.Xray); diff --git a/v2rayN/v2rayN/Views/OptionSettingWindow.xaml b/v2rayN/v2rayN/Views/OptionSettingWindow.xaml index bdd47f1c..e3e38992 100644 --- a/v2rayN/v2rayN/Views/OptionSettingWindow.xaml +++ b/v2rayN/v2rayN/Views/OptionSettingWindow.xaml @@ -1246,4 +1246,3 @@ -