diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index 2431f8c7..d6e520f4 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -126,6 +126,7 @@ namespace v2rayN }; public const string Hysteria2ProtocolShare = "hy2://"; + public static readonly Dictionary ProtocolShares = new() { {EConfigType.VMess,"vmess://"}, diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs index eccc8263..2cea5cfb 100644 --- a/v2rayN/v2rayN/Handler/ConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -22,10 +22,10 @@ namespace v2rayN.Handler /// /// /// - public static int LoadConfig(ref Config config) + public static int LoadConfig(ref Config? config) { //载入配置文件 - string result = Utils.LoadResource(Utils.GetConfigPath(configRes)); + var result = Utils.LoadResource(Utils.GetConfigPath(configRes)); if (!Utils.IsNullOrEmpty(result)) { //转成Json @@ -214,7 +214,7 @@ namespace v2rayN.Handler /// /// /// - public static int SaveConfig(ref Config config, bool reload = true) + public static int SaveConfig(Config config, bool reload = true) { ToJsonFile(config); @@ -253,7 +253,7 @@ namespace v2rayN.Handler } } - public static int ImportOldGuiConfig(ref Config config, string fileName) + public static int ImportOldGuiConfig(Config config, string fileName) { string result = Utils.LoadResource(fileName); if (Utils.IsNullOrEmpty(result)) @@ -343,9 +343,9 @@ namespace v2rayN.Handler }; } - GetDefaultServer(ref config); - GetDefaultRouting(ref config); - SaveConfig(ref config); + GetDefaultServer(config); + GetDefaultRouting(config); + SaveConfig(config); LoadConfig(ref config); return 0; @@ -361,7 +361,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddServer(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddServer(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configType = EConfigType.VMess; @@ -383,7 +383,7 @@ namespace v2rayN.Handler return -1; } - AddServerCommon(ref config, profileItem, toFile); + AddServerCommon(config, profileItem, toFile); return 0; } @@ -403,7 +403,7 @@ namespace v2rayN.Handler } SqliteHelper.Instance.UpdateAll(indexs); - RemoveServerViaSubid(ref config, subid, false); + RemoveServerViaSubid(config, subid, false); return 0; } @@ -414,7 +414,7 @@ namespace v2rayN.Handler /// /// /// - public static int CopyServer(ref Config config, List indexs) + public static int CopyServer(Config config, List indexs) { foreach (var it in indexs) { @@ -431,13 +431,13 @@ namespace v2rayN.Handler if (profileItem.configType == EConfigType.Custom) { profileItem.address = Utils.GetConfigPath(profileItem.address); - if (AddCustomServer(ref config, profileItem, false) == 0) + if (AddCustomServer(config, profileItem, false) == 0) { } } else { - AddServerCommon(ref config, profileItem, true); + AddServerCommon(config, profileItem, true); } } @@ -450,7 +450,7 @@ namespace v2rayN.Handler /// /// /// - public static int SetDefaultServerIndex(ref Config config, string? indexId) + public static int SetDefaultServerIndex(Config config, string? indexId) { if (Utils.IsNullOrEmpty(indexId)) { @@ -476,18 +476,18 @@ namespace v2rayN.Handler } if (lstProfile.Count > 0) { - return SetDefaultServerIndex(ref config, lstProfile.Where(t => t.port > 0).FirstOrDefault()?.indexId); + return SetDefaultServerIndex(config, lstProfile.Where(t => t.port > 0).FirstOrDefault()?.indexId); } - return SetDefaultServerIndex(ref config, SqliteHelper.Instance.Table().Where(t => t.port > 0).Select(t => t.indexId).FirstOrDefault()); + return SetDefaultServerIndex(config, SqliteHelper.Instance.Table().Where(t => t.port > 0).Select(t => t.indexId).FirstOrDefault()); } - public static ProfileItem? GetDefaultServer(ref Config config) + public static ProfileItem? GetDefaultServer(Config config) { var item = LazyConfig.Instance.GetProfileItem(config.indexId); if (item is null) { var item2 = SqliteHelper.Instance.Table().FirstOrDefault(); - SetDefaultServerIndex(ref config, item2?.indexId); + SetDefaultServerIndex(config, item2?.indexId); return item2; } @@ -502,7 +502,7 @@ namespace v2rayN.Handler /// /// /// - public static int MoveServer(ref Config config, ref List lstProfile, int index, EMove eMove, int pos = -1) + public static int MoveServer(Config config, ref List lstProfile, int index, EMove eMove, int pos = -1) { int count = lstProfile.Count; if (index < 0 || index > lstProfile.Count - 1) @@ -574,7 +574,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddCustomServer(ref Config config, ProfileItem profileItem, bool blDelete) + public static int AddCustomServer(Config config, ProfileItem profileItem, bool blDelete) { var fileName = profileItem.address; if (!File.Exists(fileName)) @@ -606,7 +606,7 @@ namespace v2rayN.Handler profileItem.remarks = $"import custom@{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}"; } - AddServerCommon(ref config, profileItem, true); + AddServerCommon(config, profileItem, true); return 0; } @@ -617,7 +617,7 @@ namespace v2rayN.Handler /// /// /// - public static int EditCustomServer(ref Config config, ProfileItem profileItem) + public static int EditCustomServer(Config config, ProfileItem profileItem) { if (SqliteHelper.Instance.Update(profileItem) > 0) { @@ -637,7 +637,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddShadowsocksServer(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddShadowsocksServer(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configType = EConfigType.Shadowsocks; @@ -654,7 +654,7 @@ namespace v2rayN.Handler return -1; } - AddServerCommon(ref config, profileItem, toFile); + AddServerCommon(config, profileItem, toFile); return 0; } @@ -665,13 +665,13 @@ namespace v2rayN.Handler /// /// /// - public static int AddSocksServer(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddSocksServer(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configType = EConfigType.Socks; profileItem.address = profileItem.address.TrimEx(); - AddServerCommon(ref config, profileItem, toFile); + AddServerCommon(config, profileItem, toFile); return 0; } @@ -682,7 +682,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddTrojanServer(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddTrojanServer(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configType = EConfigType.Trojan; @@ -697,7 +697,7 @@ namespace v2rayN.Handler return -1; } - AddServerCommon(ref config, profileItem, toFile); + AddServerCommon(config, profileItem, toFile); return 0; } @@ -708,7 +708,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddHysteria2Server(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddHysteria2Server(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configType = EConfigType.Hysteria2; profileItem.coreType = ECoreType.sing_box; @@ -726,7 +726,7 @@ namespace v2rayN.Handler return -1; } - AddServerCommon(ref config, profileItem, toFile); + AddServerCommon(config, profileItem, toFile); return 0; } @@ -737,7 +737,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddTuicServer(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddTuicServer(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configType = EConfigType.Tuic; profileItem.coreType = ECoreType.sing_box; @@ -765,12 +765,12 @@ namespace v2rayN.Handler return -1; } - AddServerCommon(ref config, profileItem, toFile); + AddServerCommon(config, profileItem, toFile); return 0; } - public static int SortServers(ref Config config, string subId, string colName, bool asc) + public static int SortServers(Config config, string subId, string colName, bool asc) { var lstModel = LazyConfig.Instance.ProfileItems(subId, ""); if (lstModel.Count <= 0) @@ -872,7 +872,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddVlessServer(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddVlessServer(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configType = EConfigType.VLESS; @@ -894,7 +894,7 @@ namespace v2rayN.Handler return -1; } - AddServerCommon(ref config, profileItem, toFile); + AddServerCommon(config, profileItem, toFile); return 0; } @@ -923,7 +923,7 @@ namespace v2rayN.Handler return new Tuple(lstProfile.Count, lstKeep.Count); } - public static int AddServerCommon(ref Config config, ProfileItem profileItem, bool toFile = true) + public static int AddServerCommon(Config config, ProfileItem profileItem, bool toFile = true) { profileItem.configVersion = 2; @@ -1024,7 +1024,7 @@ namespace v2rayN.Handler /// /// /// 成功导入的数量 - private static int AddBatchServers(ref Config config, string clipboardData, string subid, bool isSub, List lstOriSub) + private static int AddBatchServers(Config config, string clipboardData, string subid, bool isSub, List lstOriSub) { if (Utils.IsNullOrEmpty(clipboardData)) { @@ -1035,7 +1035,7 @@ namespace v2rayN.Handler //remove sub items if (isSub && !Utils.IsNullOrEmpty(subid)) { - RemoveServerViaSubid(ref config, subid, isSub); + RemoveServerViaSubid(config, subid, isSub); subFilter = LazyConfig.Instance.GetSubItem(subid)?.filter ?? ""; } @@ -1053,7 +1053,7 @@ namespace v2rayN.Handler //maybe sub if (!isSub && (str.StartsWith(Global.HttpsProtocol) || str.StartsWith(Global.HttpProtocol))) { - if (AddSubItem(ref config, str) == 0) + if (AddSubItem(config, str) == 0) { countServers++; } @@ -1101,31 +1101,31 @@ namespace v2rayN.Handler if (profileItem.configType == EConfigType.VMess) { - addStatus = AddServer(ref config, profileItem, false); + addStatus = AddServer(config, profileItem, false); } else if (profileItem.configType == EConfigType.Shadowsocks) { - addStatus = AddShadowsocksServer(ref config, profileItem, false); + addStatus = AddShadowsocksServer(config, profileItem, false); } else if (profileItem.configType == EConfigType.Socks) { - addStatus = AddSocksServer(ref config, profileItem, false); + addStatus = AddSocksServer(config, profileItem, false); } else if (profileItem.configType == EConfigType.Trojan) { - addStatus = AddTrojanServer(ref config, profileItem, false); + addStatus = AddTrojanServer(config, profileItem, false); } else if (profileItem.configType == EConfigType.VLESS) { - addStatus = AddVlessServer(ref config, profileItem, false); + addStatus = AddVlessServer(config, profileItem, false); } else if (profileItem.configType == EConfigType.Hysteria2) { - addStatus = AddHysteria2Server(ref config, profileItem, false); + addStatus = AddHysteria2Server(config, profileItem, false); } else if (profileItem.configType == EConfigType.Tuic) { - addStatus = AddTuicServer(ref config, profileItem, false); + addStatus = AddTuicServer(config, profileItem, false); } if (addStatus == 0) @@ -1144,7 +1144,7 @@ namespace v2rayN.Handler return countServers; } - private static int AddBatchServers4Custom(ref Config config, string clipboardData, string subid, bool isSub, List lstOriSub) + private static int AddBatchServers4Custom(Config config, string clipboardData, string subid, bool isSub, List lstOriSub) { if (Utils.IsNullOrEmpty(clipboardData)) { @@ -1217,7 +1217,7 @@ namespace v2rayN.Handler if (isSub && !Utils.IsNullOrEmpty(subid)) { - RemoveServerViaSubid(ref config, subid, isSub); + RemoveServerViaSubid(config, subid, isSub); } if (isSub && lstOriSub?.Count == 1) { @@ -1231,7 +1231,7 @@ namespace v2rayN.Handler return -1; } - if (AddCustomServer(ref config, profileItem, true) == 0) + if (AddCustomServer(config, profileItem, true) == 0) { return 1; } @@ -1241,7 +1241,7 @@ namespace v2rayN.Handler } } - private static int AddBatchServers4SsSIP008(ref Config config, string clipboardData, string subid, bool isSub, List lstOriSub) + private static int AddBatchServers4SsSIP008(Config config, string clipboardData, string subid, bool isSub, List lstOriSub) { if (Utils.IsNullOrEmpty(clipboardData)) { @@ -1250,7 +1250,7 @@ namespace v2rayN.Handler if (isSub && !Utils.IsNullOrEmpty(subid)) { - RemoveServerViaSubid(ref config, subid, isSub); + RemoveServerViaSubid(config, subid, isSub); } //SsSIP008 @@ -1280,7 +1280,7 @@ namespace v2rayN.Handler }; ssItem.subid = subid; ssItem.isSub = isSub; - if (AddShadowsocksServer(ref config, ssItem) == 0) + if (AddShadowsocksServer(config, ssItem) == 0) { counter++; } @@ -1292,7 +1292,7 @@ namespace v2rayN.Handler return -1; } - public static int AddBatchServers(ref Config config, string clipboardData, string subid, bool isSub) + public static int AddBatchServers(Config config, string clipboardData, string subid, bool isSub) { List? lstOriSub = null; if (isSub && !Utils.IsNullOrEmpty(subid)) @@ -1303,26 +1303,26 @@ namespace v2rayN.Handler var counter = 0; if (Utils.IsBase64String(clipboardData)) { - counter = AddBatchServers(ref config, Utils.Base64Decode(clipboardData), subid, isSub, lstOriSub); + counter = AddBatchServers(config, Utils.Base64Decode(clipboardData), subid, isSub, lstOriSub); } if (counter < 1) { - counter = AddBatchServers(ref config, clipboardData, subid, isSub, lstOriSub); + counter = AddBatchServers(config, clipboardData, subid, isSub, lstOriSub); } if (counter < 1) { - counter = AddBatchServers(ref config, Utils.Base64Decode(clipboardData), subid, isSub, lstOriSub); + counter = AddBatchServers(config, Utils.Base64Decode(clipboardData), subid, isSub, lstOriSub); } if (counter < 1) { - counter = AddBatchServers4SsSIP008(ref config, clipboardData, subid, isSub, lstOriSub); + counter = AddBatchServers4SsSIP008(config, clipboardData, subid, isSub, lstOriSub); } //maybe other sub if (counter < 1) { - counter = AddBatchServers4Custom(ref config, clipboardData, subid, isSub, lstOriSub); + counter = AddBatchServers4Custom(config, clipboardData, subid, isSub, lstOriSub); } return counter; @@ -1338,7 +1338,7 @@ namespace v2rayN.Handler /// /// /// - public static int AddSubItem(ref Config config, string url) + public static int AddSubItem(Config config, string url) { //already exists if (SqliteHelper.Instance.Table().Where(e => e.url == url).Count() > 0) @@ -1353,10 +1353,10 @@ namespace v2rayN.Handler url = url }; - return AddSubItem(ref config, subItem); + return AddSubItem(config, subItem); } - public static int AddSubItem(ref Config config, SubItem subItem) + public static int AddSubItem(Config config, SubItem subItem) { if (Utils.IsNullOrEmpty(subItem.id)) { @@ -1388,7 +1388,7 @@ namespace v2rayN.Handler /// /// /// - public static int RemoveServerViaSubid(ref Config config, string subid, bool isSub) + public static int RemoveServerViaSubid(Config config, string subid, bool isSub) { if (Utils.IsNullOrEmpty(subid)) { @@ -1411,7 +1411,7 @@ namespace v2rayN.Handler return 0; } - public static int DeleteSubItem(ref Config config, string id) + public static int DeleteSubItem(Config config, string id) { var item = LazyConfig.Instance.GetSubItem(id); if (item is null) @@ -1419,7 +1419,7 @@ namespace v2rayN.Handler return 0; } SqliteHelper.Instance.Delete(item); - RemoveServerViaSubid(ref config, id, false); + RemoveServerViaSubid(config, id, false); return 0; } @@ -1439,7 +1439,7 @@ namespace v2rayN.Handler #region Routing - public static int SaveRoutingItem(ref Config config, RoutingItem item) + public static int SaveRoutingItem(Config config, RoutingItem item) { if (Utils.IsNullOrEmpty(item.id)) { @@ -1574,7 +1574,7 @@ namespace v2rayN.Handler return 0; } - public static int SetDefaultRouting(ref Config config, RoutingItem routingItem) + public static int SetDefaultRouting(Config config, RoutingItem routingItem) { if (SqliteHelper.Instance.Table().Where(t => t.id == routingItem.id).Count() > 0) { @@ -1586,20 +1586,20 @@ namespace v2rayN.Handler return 0; } - public static RoutingItem GetDefaultRouting(ref Config config) + public static RoutingItem GetDefaultRouting(Config config) { var item = LazyConfig.Instance.GetRoutingItem(config.routingBasicItem.routingIndexId); if (item is null) { var item2 = SqliteHelper.Instance.Table().FirstOrDefault(t => t.locked == false); - SetDefaultRouting(ref config, item2); + SetDefaultRouting(config, item2); return item2; } return item; } - public static int InitBuiltinRouting(ref Config config, bool blImportAdvancedRules = false) + public static int InitBuiltinRouting(Config config, bool blImportAdvancedRules = false) { var items = LazyConfig.Instance.RoutingItems(); if (blImportAdvancedRules || items.Count <= 0) @@ -1634,11 +1634,11 @@ namespace v2rayN.Handler if (!blImportAdvancedRules) { - SetDefaultRouting(ref config, item2); + SetDefaultRouting(config, item2); } } - if (GetLockedRoutingItem(ref config) == null) + if (GetLockedRoutingItem(config) == null) { var item1 = new RoutingItem() { @@ -1651,7 +1651,7 @@ namespace v2rayN.Handler return 0; } - public static RoutingItem GetLockedRoutingItem(ref Config config) + public static RoutingItem GetLockedRoutingItem(Config config) { return SqliteHelper.Instance.Table().FirstOrDefault(it => it.locked == true); } diff --git a/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs b/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs index dcc1dea2..19e3c14c 100644 --- a/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs +++ b/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs @@ -126,7 +126,7 @@ namespace v2rayN.Handler if (_config.routingBasicItem.enableRoutingAdvanced) { - var routing = ConfigHandler.GetDefaultRouting(ref _config); + var routing = ConfigHandler.GetDefaultRouting(_config); if (!Utils.IsNullOrEmpty(routing.domainStrategy4Singbox)) { inbound.domain_strategy = routing.domainStrategy4Singbox; @@ -475,7 +475,7 @@ namespace v2rayN.Handler if (_config.routingBasicItem.enableRoutingAdvanced) { - var routing = ConfigHandler.GetDefaultRouting(ref _config); + var routing = ConfigHandler.GetDefaultRouting(_config); if (routing != null) { var rules = Utils.FromJson>(routing.ruleSet); @@ -490,7 +490,7 @@ namespace v2rayN.Handler } else { - var lockedItem = ConfigHandler.GetLockedRoutingItem(ref _config); + var lockedItem = ConfigHandler.GetLockedRoutingItem(_config); if (lockedItem != null) { var rules = Utils.FromJson>(lockedItem.ruleSet); diff --git a/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs b/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs index 65083081..9c02a713 100644 --- a/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs +++ b/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs @@ -177,7 +177,7 @@ namespace v2rayN.Handler if (_config.routingBasicItem.enableRoutingAdvanced) { - var routing = ConfigHandler.GetDefaultRouting(ref _config); + var routing = ConfigHandler.GetDefaultRouting(_config); if (routing != null) { if (!Utils.IsNullOrEmpty(routing.domainStrategy)) @@ -197,7 +197,7 @@ namespace v2rayN.Handler } else { - var lockedItem = ConfigHandler.GetLockedRoutingItem(ref _config); + var lockedItem = ConfigHandler.GetLockedRoutingItem(_config); if (lockedItem != null) { var rules = Utils.FromJson>(lockedItem.ruleSet); diff --git a/v2rayN/v2rayN/Handler/CoreHandler.cs b/v2rayN/v2rayN/Handler/CoreHandler.cs index bf38b223..377b0758 100644 --- a/v2rayN/v2rayN/Handler/CoreHandler.cs +++ b/v2rayN/v2rayN/Handler/CoreHandler.cs @@ -28,7 +28,7 @@ namespace v2rayN.Handler public void LoadCore() { - var node = ConfigHandler.GetDefaultServer(ref _config); + var node = ConfigHandler.GetDefaultServer(_config); if (node == null) { ShowMsg(false, ResUI.CheckServerSettings); diff --git a/v2rayN/v2rayN/Handler/LazyConfig.cs b/v2rayN/v2rayN/Handler/LazyConfig.cs index 36fb0249..b9f259de 100644 --- a/v2rayN/v2rayN/Handler/LazyConfig.cs +++ b/v2rayN/v2rayN/Handler/LazyConfig.cs @@ -320,7 +320,6 @@ namespace v2rayN.Handler redirectInfo = true, }); - coreInfos.Add(new CoreInfo { coreType = ECoreType.hysteria, diff --git a/v2rayN/v2rayN/Handler/MainFormHandler.cs b/v2rayN/v2rayN/Handler/MainFormHandler.cs index e3e9ae8f..24989615 100644 --- a/v2rayN/v2rayN/Handler/MainFormHandler.cs +++ b/v2rayN/v2rayN/Handler/MainFormHandler.cs @@ -77,7 +77,7 @@ namespace v2rayN.Handler return null; } - var item = ConfigHandler.GetDefaultRouting(ref config); + var item = ConfigHandler.GetDefaultRouting(config); if (item == null || Utils.IsNullOrEmpty(item.customIcon) || !File.Exists(item.customIcon)) { return null; @@ -183,7 +183,7 @@ namespace v2rayN.Handler Utils.SaveLog("subscription" + msg); }); item.updateTime = updateTime; - ConfigHandler.AddSubItem(ref config, item); + ConfigHandler.AddSubItem(config, item); await Task.Delay(5000); } diff --git a/v2rayN/v2rayN/Handler/ProfileExHandler.cs b/v2rayN/v2rayN/Handler/ProfileExHandler.cs index 421b2c7f..0b755a06 100644 --- a/v2rayN/v2rayN/Handler/ProfileExHandler.cs +++ b/v2rayN/v2rayN/Handler/ProfileExHandler.cs @@ -51,7 +51,7 @@ namespace v2rayN.Handler } } - private void AddProfileEx(string indexId, ref ProfileExItem profileEx) + private void AddProfileEx(string indexId, ref ProfileExItem? profileEx) { profileEx = new() { diff --git a/v2rayN/v2rayN/Handler/UpdateHandle.cs b/v2rayN/v2rayN/Handler/UpdateHandle.cs index 2ec8b5cb..2ca1f802 100644 --- a/v2rayN/v2rayN/Handler/UpdateHandle.cs +++ b/v2rayN/v2rayN/Handler/UpdateHandle.cs @@ -271,7 +271,7 @@ namespace v2rayN.Handler _updateFunc(false, $"{hashCode}{result}"); } - int ret = ConfigHandler.AddBatchServers(ref config, result, id, true); + int ret = ConfigHandler.AddBatchServers(config, result, id, true); if (ret <= 0) { Utils.SaveLog("FailedImportSubscription"); diff --git a/v2rayN/v2rayN/Mode/V2rayConfig.cs b/v2rayN/v2rayN/Mode/V2rayConfig.cs index 14c5dee0..d19040ad 100644 --- a/v2rayN/v2rayN/Mode/V2rayConfig.cs +++ b/v2rayN/v2rayN/Mode/V2rayConfig.cs @@ -451,6 +451,11 @@ namespace v2rayN.Mode /// grpc /// public GrpcSettings4Ray grpcSettings { get; set; } + + /// + /// sockopt + /// + public Sockopt4Ray? sockopt { get; set; } } public class TlsSettings4Ray @@ -632,4 +637,9 @@ namespace v2rayN.Mode /// public string pass { get; set; } } + + public class Sockopt4Ray + { + public string? dialerProxy { get; set; } + } } \ No newline at end of file diff --git a/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs b/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs index 53934b1f..137db406 100644 --- a/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs @@ -90,7 +90,7 @@ namespace v2rayN.ViewModels item.preSocksPort = SelectedSource.preSocksPort; } - if (ConfigHandler.EditCustomServer(ref _config, item) == 0) + if (ConfigHandler.EditCustomServer(_config, item) == 0) { _noticeHandler?.Enqueue(ResUI.OperationSuccess); _view.DialogResult = true; @@ -122,7 +122,7 @@ namespace v2rayN.ViewModels var item = LazyConfig.Instance.GetProfileItem(SelectedSource.indexId); item ??= SelectedSource; item.address = fileName; - if (ConfigHandler.AddCustomServer(ref _config, item, false) == 0) + if (ConfigHandler.AddCustomServer(_config, item, false) == 0) { _noticeHandler?.Enqueue(ResUI.SuccessfullyImportedCustomServer); if (!Utils.IsNullOrEmpty(item.indexId)) diff --git a/v2rayN/v2rayN/ViewModels/AddServerViewModel.cs b/v2rayN/v2rayN/ViewModels/AddServerViewModel.cs index 56a05c12..a36b0733 100644 --- a/v2rayN/v2rayN/ViewModels/AddServerViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/AddServerViewModel.cs @@ -127,31 +127,31 @@ namespace v2rayN.ViewModels switch (item.configType) { case EConfigType.VMess: - ret = ConfigHandler.AddServer(ref _config, item); + ret = ConfigHandler.AddServer(_config, item); break; case EConfigType.Shadowsocks: - ret = ConfigHandler.AddShadowsocksServer(ref _config, item); + ret = ConfigHandler.AddShadowsocksServer(_config, item); break; case EConfigType.Socks: - ret = ConfigHandler.AddSocksServer(ref _config, item); + ret = ConfigHandler.AddSocksServer(_config, item); break; case EConfigType.VLESS: - ret = ConfigHandler.AddVlessServer(ref _config, item); + ret = ConfigHandler.AddVlessServer(_config, item); break; case EConfigType.Trojan: - ret = ConfigHandler.AddTrojanServer(ref _config, item); + ret = ConfigHandler.AddTrojanServer(_config, item); break; case EConfigType.Hysteria2: - ret = ConfigHandler.AddHysteria2Server(ref _config, item); + ret = ConfigHandler.AddHysteria2Server(_config, item); break; case EConfigType.Tuic: - ret = ConfigHandler.AddTuicServer(ref _config, item); + ret = ConfigHandler.AddTuicServer(_config, item); break; } diff --git a/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs b/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs index bd4ceca8..adc922c8 100644 --- a/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs @@ -571,7 +571,7 @@ namespace v2rayN.ViewModels private void Init() { - ConfigHandler.InitBuiltinRouting(ref _config); + ConfigHandler.InitBuiltinRouting(_config); ConfigHandler.InitBuiltinDNS(_config); _coreHandler = new CoreHandler(_config, UpdateHandler); Locator.CurrentMutable.RegisterLazySingleton(() => _coreHandler, typeof(CoreHandler)); @@ -737,7 +737,7 @@ namespace v2rayN.ViewModels Utils.SaveLog("MyAppExit Begin"); StorageUI(); - ConfigHandler.SaveConfig(ref _config); + ConfigHandler.SaveConfig(_config); //HttpProxyHandle.CloseHttpAgent(config); if (blWindowsShutDown) @@ -857,7 +857,7 @@ namespace v2rayN.ViewModels RefreshServersMenu(); //display running server - var running = ConfigHandler.GetDefaultServer(ref _config); + var running = ConfigHandler.GetDefaultServer(_config); if (running != null) { var runningSummary = running.GetSummary(); @@ -995,7 +995,7 @@ namespace v2rayN.ViewModels public void AddServerViaClipboard() { var clipboardData = Utils.GetClipboardData(); - int ret = ConfigHandler.AddBatchServers(ref _config, clipboardData!, _subId, false); + int ret = ConfigHandler.AddBatchServers(_config, clipboardData!, _subId, false); if (ret > 0) { InitSubscriptionView(); @@ -1022,7 +1022,7 @@ namespace v2rayN.ViewModels } else { - int ret = ConfigHandler.AddBatchServers(ref _config, result, _subId, false); + int ret = ConfigHandler.AddBatchServers(_config, result, _subId, false); if (ret > 0) { InitSubscriptionView(); @@ -1069,7 +1069,7 @@ namespace v2rayN.ViewModels { return; } - if (ConfigHandler.CopyServer(ref _config, lstSelecteds) == 0) + if (ConfigHandler.CopyServer(_config, lstSelecteds) == 0) { RefreshServers(); _noticeHandler?.Enqueue(ResUI.OperationSuccess); @@ -1102,7 +1102,7 @@ namespace v2rayN.ViewModels return; } - if (ConfigHandler.SetDefaultServerIndex(ref _config, indexId) == 0) + if (ConfigHandler.SetDefaultServerIndex(_config, indexId) == 0) { RefreshServers(); Reload(); @@ -1158,7 +1158,7 @@ namespace v2rayN.ViewModels _dicHeaderSort.TryAdd(colName, true); _dicHeaderSort.TryGetValue(colName, out bool asc); - if (ConfigHandler.SortServers(ref _config, _subId, colName, asc) != 0) + if (ConfigHandler.SortServers(_config, _subId, colName, asc) != 0) { return; } @@ -1168,7 +1168,7 @@ namespace v2rayN.ViewModels public void TestServerAvailability() { - var item = ConfigHandler.GetDefaultServer(ref _config); + var item = ConfigHandler.GetDefaultServer(_config); if (item == null || item.configType == EConfigType.Custom) { return; @@ -1222,7 +1222,7 @@ namespace v2rayN.ViewModels { return; } - if (ConfigHandler.MoveServer(ref _config, ref _lstProfile, index, eMove) == 0) + if (ConfigHandler.MoveServer(_config, ref _lstProfile, index, eMove) == 0) { RefreshServers(); } @@ -1233,7 +1233,7 @@ namespace v2rayN.ViewModels var targetIndex = _profileItems.IndexOf(targetItem); if (startIndex >= 0 && targetIndex >= 0 && startIndex != targetIndex) { - if (ConfigHandler.MoveServer(ref _config, ref _lstProfile, startIndex, EMove.Position, targetIndex) == 0) + if (ConfigHandler.MoveServer(_config, ref _lstProfile, startIndex, EMove.Position, targetIndex) == 0) { RefreshServers(); } @@ -1363,7 +1363,7 @@ namespace v2rayN.ViewModels var ret = (new RoutingSettingWindow()).ShowDialog(); if (ret == true) { - ConfigHandler.InitBuiltinRouting(ref _config); + ConfigHandler.InitBuiltinRouting(_config); RefreshRoutingsMenu(); //RefreshServers(); Reload(); @@ -1414,7 +1414,7 @@ namespace v2rayN.ViewModels return; } - var ret = ConfigHandler.ImportOldGuiConfig(ref _config, fileName); + var ret = ConfigHandler.ImportOldGuiConfig(_config, fileName); if (ret == 0) { RefreshRoutingsMenu(); @@ -1500,7 +1500,7 @@ namespace v2rayN.ViewModels { _coreHandler.LoadCore(); - //ConfigHandler.SaveConfig(ref _config, false); + //ConfigHandler.SaveConfig(_config, false); ChangeSystemProxyStatus(_config.sysProxyType, false); }); @@ -1515,7 +1515,7 @@ namespace v2rayN.ViewModels private void CloseV2ray() { - ConfigHandler.SaveConfig(ref _config, false); + ConfigHandler.SaveConfig(_config, false); ChangeSystemProxyStatus(ESysProxyType.ForcedClear, false); @@ -1536,7 +1536,7 @@ namespace v2rayN.ViewModels ChangeSystemProxyStatus(type, true); SystemProxySelected = (int)_config.sysProxyType; - ConfigHandler.SaveConfig(ref _config, false); + ConfigHandler.SaveConfig(_config, false); } private void ChangeSystemProxyStatus(ESysProxyType type, bool blChange) @@ -1604,7 +1604,7 @@ namespace v2rayN.ViewModels return; } - if (ConfigHandler.SetDefaultRouting(ref _config, item) == 0) + if (ConfigHandler.SetDefaultRouting(_config, item) == 0) { _noticeHandler?.SendMessage(ResUI.TipChangeRouting, true); Reload(); @@ -1710,7 +1710,7 @@ namespace v2rayN.ViewModels { _config.uiItem.colorModeDark = ColorModeDark; ModifyTheme(ColorModeDark); - ConfigHandler.SaveConfig(ref _config); + ConfigHandler.SaveConfig(_config); } }); @@ -1721,7 +1721,7 @@ namespace v2rayN.ViewModels if (_config.uiItem.followSystemTheme != FollowSystemTheme) { _config.uiItem.followSystemTheme = FollowSystemTheme; - ConfigHandler.SaveConfig(ref _config); + ConfigHandler.SaveConfig(_config); if (FollowSystemTheme) { ModifyTheme(!Utils.IsLightTheme()); @@ -1745,7 +1745,7 @@ namespace v2rayN.ViewModels { _config.uiItem.colorPrimaryName = SelectedSwatch?.Name; ChangePrimaryColor(SelectedSwatch.ExemplarHue.Color); - ConfigHandler.SaveConfig(ref _config); + ConfigHandler.SaveConfig(_config); } }); @@ -1763,7 +1763,7 @@ namespace v2rayN.ViewModels Application.Current.Resources["StdFontSize2"] = size + 2; Application.Current.Resources["StdFontSizeMsg"] = size - 1; - ConfigHandler.SaveConfig(ref _config); + ConfigHandler.SaveConfig(_config); } }); @@ -1776,7 +1776,7 @@ namespace v2rayN.ViewModels { _config.uiItem.currentLanguage = CurrentLanguage; Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage); - ConfigHandler.SaveConfig(ref _config); + ConfigHandler.SaveConfig(_config); } }); } diff --git a/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs b/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs index d645c280..afb33fdb 100644 --- a/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs @@ -323,7 +323,7 @@ namespace v2rayN.ViewModels //coreType SaveCoreType(); - if (ConfigHandler.SaveConfig(ref _config) == 0) + if (ConfigHandler.SaveConfig(_config) == 0) { _noticeHandler?.Enqueue(ResUI.OperationSuccess); _view.DialogResult = true; diff --git a/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs b/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs index 8c7c4273..c545ef9c 100644 --- a/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs @@ -250,7 +250,7 @@ namespace v2rayN.ViewModels item.ruleNum = _rules.Count; item.ruleSet = Utils.ToJson(_rules, false); - if (ConfigHandler.SaveRoutingItem(ref _config, item) == 0) + if (ConfigHandler.SaveRoutingItem(_config, item) == 0) { _noticeHandler?.Enqueue(ResUI.OperationSuccess); _view.DialogResult = true; diff --git a/v2rayN/v2rayN/ViewModels/RoutingSettingViewModel.cs b/v2rayN/v2rayN/ViewModels/RoutingSettingViewModel.cs index b6ec6fa5..7b38712d 100644 --- a/v2rayN/v2rayN/ViewModels/RoutingSettingViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/RoutingSettingViewModel.cs @@ -81,7 +81,7 @@ namespace v2rayN.ViewModels _view = view; SelectedSource = new(); - ConfigHandler.InitBuiltinRouting(ref _config); + ConfigHandler.InitBuiltinRouting(_config); enableRoutingAdvanced = _config.routingBasicItem.enableRoutingAdvanced; domainStrategy = _config.routingBasicItem.domainStrategy; @@ -134,7 +134,7 @@ namespace v2rayN.ViewModels private void BindingLockedData() { - _lockedItem = ConfigHandler.GetLockedRoutingItem(ref _config); + _lockedItem = ConfigHandler.GetLockedRoutingItem(_config); if (_lockedItem != null) { _lockedRules = Utils.FromJson>(_lockedItem.ruleSet); @@ -164,7 +164,7 @@ namespace v2rayN.ViewModels _lockedItem.ruleSet = Utils.ToJson(_lockedRules, false); - ConfigHandler.SaveRoutingItem(ref _config, _lockedItem); + ConfigHandler.SaveRoutingItem(_config, _lockedItem); } } @@ -208,7 +208,7 @@ namespace v2rayN.ViewModels EndBindingLockedData(); - if (ConfigHandler.SaveConfig(ref _config) == 0) + if (ConfigHandler.SaveConfig(_config) == 0) { _noticeHandler?.Enqueue(ResUI.OperationSuccess); _view.DialogResult = true; @@ -289,7 +289,7 @@ namespace v2rayN.ViewModels return; } - if (ConfigHandler.SetDefaultRouting(ref _config, item) == 0) + if (ConfigHandler.SetDefaultRouting(_config, item) == 0) { RefreshRoutingItems(); IsModified = true; @@ -298,7 +298,7 @@ namespace v2rayN.ViewModels private void RoutingAdvancedImportRules() { - if (ConfigHandler.InitBuiltinRouting(ref _config, true) == 0) + if (ConfigHandler.InitBuiltinRouting(_config, true) == 0) { RefreshRoutingItems(); IsModified = true; diff --git a/v2rayN/v2rayN/ViewModels/SubEditViewModel.cs b/v2rayN/v2rayN/ViewModels/SubEditViewModel.cs index 3c4e1e54..dcc30d50 100644 --- a/v2rayN/v2rayN/ViewModels/SubEditViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/SubEditViewModel.cs @@ -71,7 +71,7 @@ namespace v2rayN.ViewModels item.convertTarget = SelectedSource.convertTarget; } - if (ConfigHandler.AddSubItem(ref _config, item) == 0) + if (ConfigHandler.AddSubItem(_config, item) == 0) { _noticeHandler?.Enqueue(ResUI.OperationSuccess); _view.DialogResult = true; diff --git a/v2rayN/v2rayN/ViewModels/SubSettingViewModel.cs b/v2rayN/v2rayN/ViewModels/SubSettingViewModel.cs index e2da43a7..cb9e6aea 100644 --- a/v2rayN/v2rayN/ViewModels/SubSettingViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/SubSettingViewModel.cs @@ -104,7 +104,7 @@ namespace v2rayN.ViewModels foreach (var it in SelectedSources) { - ConfigHandler.DeleteSubItem(ref _config, it?.id); + ConfigHandler.DeleteSubItem(_config, it?.id); } RefreshSubItems(); _noticeHandler?.Enqueue(ResUI.OperationSuccess); diff --git a/v2rayN/v2rayN/Views/GlobalHotkeySettingWindow.xaml.cs b/v2rayN/v2rayN/Views/GlobalHotkeySettingWindow.xaml.cs index 5b357f69..a79879ef 100644 --- a/v2rayN/v2rayN/Views/GlobalHotkeySettingWindow.xaml.cs +++ b/v2rayN/v2rayN/Views/GlobalHotkeySettingWindow.xaml.cs @@ -112,7 +112,7 @@ namespace v2rayN.Views { _config.globalHotkeys = _TextBoxKeyEventItem.Values.ToList(); - if (ConfigHandler.SaveConfig(ref _config, false) == 0) + if (ConfigHandler.SaveConfig(_config, false) == 0) { HotkeyHandler.Instance.ReLoad(); this.DialogResult = true;