diff --git a/v2rayN/ServiceLib/Handler/CoreHandler.cs b/v2rayN/ServiceLib/Handler/CoreHandler.cs index acc5097f895..b3553a1b5e8 100644 --- a/v2rayN/ServiceLib/Handler/CoreHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreHandler.cs @@ -108,17 +108,17 @@ public void CoreStop() var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(); foreach (var it in coreInfo) { - if (it.coreType == ECoreType.v2rayN) + if (it.CoreType == ECoreType.v2rayN) { continue; } - foreach (string vName in it.coreExes) + foreach (string vName in it.CoreExes) { var existing = Process.GetProcessesByName(vName); foreach (Process p in existing) { string? path = p.MainModule?.FileName; - if (path == Utils.GetExeName(Utils.GetBinPath(vName, it.coreType.ToString()))) + if (path == Utils.GetExeName(Utils.GetBinPath(vName, it.CoreType.ToString()))) { KillProcess(p); } @@ -151,10 +151,10 @@ public void CoreStopPid(int pid) private string CoreFindExe(CoreInfo coreInfo) { string fileName = string.Empty; - foreach (string name in coreInfo.coreExes) + foreach (string name in coreInfo.CoreExes) { string vName = Utils.GetExeName(name); - vName = Utils.GetBinPath(vName, coreInfo.coreType.ToString()); + vName = Utils.GetBinPath(vName, coreInfo.CoreType.ToString()); if (File.Exists(vName)) { fileName = vName; @@ -163,7 +163,7 @@ private string CoreFindExe(CoreInfo coreInfo) } if (Utils.IsNullOrEmpty(fileName)) { - string msg = string.Format(ResUI.NotFoundCore, Utils.GetBinPath("", coreInfo.coreType.ToString()), string.Join(", ", coreInfo.coreExes.ToArray()), coreInfo.coreUrl); + string msg = string.Format(ResUI.NotFoundCore, Utils.GetBinPath("", coreInfo.CoreType.ToString()), string.Join(", ", coreInfo.CoreExes.ToArray()), coreInfo.Url); Logging.SaveLog(msg); ShowMsg(false, msg); } @@ -288,7 +288,7 @@ private void ShowMsg(bool notify, string msg) StartInfo = new() { FileName = fileName, - Arguments = string.Format(coreInfo.arguments, configPath), + Arguments = string.Format(coreInfo.Arguments, configPath), WorkingDirectory = Utils.GetConfigPath(), UseShellExecute = false, RedirectStandardOutput = displayLog, diff --git a/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs b/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs index 0cb4495f0f1..3d9e1ba852d 100644 --- a/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs @@ -19,7 +19,7 @@ public CoreInfoHandler() { InitCoreInfo(); } - return _coreInfo?.FirstOrDefault(t => t.coreType == coreType); + return _coreInfo?.FirstOrDefault(t => t.CoreType == coreType); } public List GetCoreInfo() @@ -37,139 +37,135 @@ private void InitCoreInfo() _coreInfo.Add(new CoreInfo { - coreType = ECoreType.v2rayN, - coreUrl = Global.NUrl, - coreReleaseApiUrl = Global.NUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - coreDownloadUrl32 = Global.NUrl + "/download/{0}/v2rayN-32.zip", - coreDownloadUrl64 = Global.NUrl + "/download/{0}/v2rayN.zip", - coreDownloadUrlArm64 = Global.NUrl + "/download/{0}/v2rayN-arm64.zip", - coreDownloadUrlLinux32 = Global.NUrl + "/download/{0}/v2rayN-linux-32.zip", - coreDownloadUrlLinux64 = Global.NUrl + "/download/{0}/v2rayN-linux-64.zip", - coreDownloadUrlLinuxArm64 = Global.NUrl + "/download/{0}/v2rayN-linux-arm64.zip", + CoreType = ECoreType.v2rayN, + Url = Global.NUrl, + ReleaseApiUrl = Global.NUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin32 = Global.NUrl + "/download/{0}/v2rayN-windows-32.zip", + DownloadUrlWin64 = Global.NUrl + "/download/{0}/v2rayN-windows-64.zip", + DownloadUrlWinArm64 = Global.NUrl + "/download/{0}/v2rayN-windows-arm64.zip", + DownloadUrlLinux64 = Global.NUrl + "/download/{0}/v2rayN-linux-64.zip", + DownloadUrlLinuxArm64 = Global.NUrl + "/download/{0}/v2rayN-linux-arm64.zip", }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.v2fly, - coreExes = new List { "wv2ray", "v2ray" }, - arguments = "", - coreUrl = Global.V2flyCoreUrl, - coreReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - match = "V2Ray", - versionArg = "-version", - redirectInfo = true, + CoreType = ECoreType.v2fly, + CoreExes = new List { "wv2ray", "v2ray" }, + Arguments = "", + Url = Global.V2flyCoreUrl, + ReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + Match = "V2Ray", + VersionArg = "-version", + RedirectInfo = true, }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.v2fly_v5, - coreExes = new List { "v2ray" }, - arguments = "run -c config.json -format jsonv5", - coreUrl = Global.V2flyCoreUrl, - coreReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - match = "V2Ray", - versionArg = "version", - redirectInfo = true, + CoreType = ECoreType.v2fly_v5, + CoreExes = new List { "v2ray" }, + Arguments = "run -c config.json -format jsonv5", + Url = Global.V2flyCoreUrl, + ReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + Match = "V2Ray", + VersionArg = "version", + RedirectInfo = true, }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.Xray, - coreExes = new List { "xray", "wxray" }, - arguments = "run {0}", - coreUrl = Global.XrayCoreUrl, - coreReleaseApiUrl = Global.XrayCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - coreDownloadUrl32 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-32.zip", - coreDownloadUrl64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-64.zip", - coreDownloadUrlArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-arm64-v8a.zip", - coreDownloadUrlLinux32 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-32.zip", - coreDownloadUrlLinux64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-64.zip", - coreDownloadUrlLinuxArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-arm64-v8a.zip", - match = "Xray", - versionArg = "-version", - redirectInfo = true, + CoreType = ECoreType.Xray, + CoreExes = new List { "xray", "wxray" }, + Arguments = "run {0}", + Url = Global.XrayCoreUrl, + ReleaseApiUrl = Global.XrayCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin32 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-32.zip", + DownloadUrlWin64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-64.zip", + DownloadUrlWinArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-arm64-v8a.zip", + DownloadUrlLinux64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-64.zip", + DownloadUrlLinuxArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-arm64-v8a.zip", + Match = "Xray", + VersionArg = "-version", + RedirectInfo = true, }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.mihomo, - coreExes = new List { $"mihomo-windows-amd64{(Avx2.X64.IsSupported ? "" : "-compatible")}", "mihomo-windows-amd64-compatible", "mihomo-windows-amd64", "mihomo-windows-386", "mihomo", "clash" }, - arguments = "-f config.json" + PortableMode(), - coreUrl = Global.MihomoCoreUrl, - coreReleaseApiUrl = Global.MihomoCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - coreDownloadUrl32 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-386-{0}.zip", - coreDownloadUrl64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-amd64-compatible-{0}.zip", - coreDownloadUrlArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-arm64-{0}.zip", - coreDownloadUrlLinux32 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-386-{0}.gz", - coreDownloadUrlLinux64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-amd64-compatible-{0}.gz", - coreDownloadUrlLinuxArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-arm64-{0}.gz", - match = "Mihomo", - versionArg = "-v", - redirectInfo = true, + CoreType = ECoreType.mihomo, + CoreExes = new List { $"mihomo-windows-amd64{(Avx2.X64.IsSupported ? "" : "-compatible")}", "mihomo-windows-amd64-compatible", "mihomo-windows-amd64", "mihomo-windows-386", "mihomo", "clash" }, + Arguments = "-f config.json" + PortableMode(), + Url = Global.MihomoCoreUrl, + ReleaseApiUrl = Global.MihomoCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin32 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-386-{0}.zip", + DownloadUrlWin64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-amd64-compatible-{0}.zip", + DownloadUrlWinArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-arm64-{0}.zip", + DownloadUrlLinux64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-amd64-compatible-{0}.gz", + DownloadUrlLinuxArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-arm64-{0}.gz", + Match = "Mihomo", + VersionArg = "-v", + RedirectInfo = true, }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.hysteria, - coreExes = new List { "hysteria-windows-amd64", "hysteria-windows-386", "hysteria" }, - arguments = "", - coreUrl = Global.HysteriaCoreUrl, - coreReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - redirectInfo = true, + CoreType = ECoreType.hysteria, + CoreExes = new List { "hysteria-windows-amd64", "hysteria-windows-386", "hysteria" }, + Arguments = "", + Url = Global.HysteriaCoreUrl, + ReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + RedirectInfo = true, }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.naiveproxy, - coreExes = new List { "naiveproxy", "naive" }, - arguments = "config.json", - coreUrl = Global.NaiveproxyCoreUrl, - redirectInfo = false, + CoreType = ECoreType.naiveproxy, + CoreExes = new List { "naiveproxy", "naive" }, + Arguments = "config.json", + Url = Global.NaiveproxyCoreUrl, + RedirectInfo = false, }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.tuic, - coreExes = new List { "tuic-client", "tuic" }, - arguments = "-c config.json", - coreUrl = Global.TuicCoreUrl, - redirectInfo = true, + CoreType = ECoreType.tuic, + CoreExes = new List { "tuic-client", "tuic" }, + Arguments = "-c config.json", + Url = Global.TuicCoreUrl, + RedirectInfo = true, }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.sing_box, - coreExes = new List { "sing-box-client", "sing-box" }, - arguments = "run {0} --disable-color", - coreUrl = Global.SingboxCoreUrl, - redirectInfo = true, - coreReleaseApiUrl = Global.SingboxCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - coreDownloadUrl32 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-386.zip", - coreDownloadUrl64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-amd64.zip", - coreDownloadUrlArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-arm64.zip", - coreDownloadUrlLinux32 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-386.tar.gz", - coreDownloadUrlLinux64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-amd64.tar.gz", - coreDownloadUrlLinuxArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-arm64.tar.gz", - match = "sing-box", - versionArg = "version", + CoreType = ECoreType.sing_box, + CoreExes = new List { "sing-box-client", "sing-box" }, + Arguments = "run {0} --disable-color", + Url = Global.SingboxCoreUrl, + RedirectInfo = true, + ReleaseApiUrl = Global.SingboxCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin32 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-386.zip", + DownloadUrlWin64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-amd64.zip", + DownloadUrlWinArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-arm64.zip", + DownloadUrlLinux64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-amd64.tar.gz", + DownloadUrlLinuxArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-arm64.tar.gz", + Match = "sing-box", + VersionArg = "version", }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.juicity, - coreExes = new List { "juicity-client", "juicity" }, - arguments = "run -c config.json", - coreUrl = Global.JuicityCoreUrl + CoreType = ECoreType.juicity, + CoreExes = new List { "juicity-client", "juicity" }, + Arguments = "run -c config.json", + Url = Global.JuicityCoreUrl }); _coreInfo.Add(new CoreInfo { - coreType = ECoreType.hysteria2, - coreExes = new List { "hysteria-windows-amd64", "hysteria-windows-386", "hysteria" }, - arguments = "", - coreUrl = Global.HysteriaCoreUrl, - coreReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - redirectInfo = true, + CoreType = ECoreType.hysteria2, + CoreExes = new List { "hysteria-windows-amd64", "hysteria-windows-386", "hysteria" }, + Arguments = "", + Url = Global.HysteriaCoreUrl, + ReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + RedirectInfo = true, }); } diff --git a/v2rayN/ServiceLib/Models/CheckUpdateItem.cs b/v2rayN/ServiceLib/Models/CheckUpdateItem.cs index 9d21e20ef03..4ce1c74f429 100644 --- a/v2rayN/ServiceLib/Models/CheckUpdateItem.cs +++ b/v2rayN/ServiceLib/Models/CheckUpdateItem.cs @@ -2,10 +2,10 @@ { public class CheckUpdateItem { - public bool? isSelected { get; set; } - public string coreType { get; set; } - public string? remarks { get; set; } - public string? fileName { get; set; } - public bool? isFinished { get; set; } + public bool? IsSelected { get; set; } + public string? CoreType { get; set; } + public string? Remarks { get; set; } + public string? FileName { get; set; } + public bool? IsFinished { get; set; } } } \ No newline at end of file diff --git a/v2rayN/ServiceLib/Models/CoreInfo.cs b/v2rayN/ServiceLib/Models/CoreInfo.cs index 077060cc396..4a8ea8e4042 100644 --- a/v2rayN/ServiceLib/Models/CoreInfo.cs +++ b/v2rayN/ServiceLib/Models/CoreInfo.cs @@ -3,28 +3,18 @@ [Serializable] public class CoreInfo { - public ECoreType coreType { get; set; } - - public List coreExes { get; set; } - - public string arguments { get; set; } - - public string coreUrl { get; set; } - - public string coreReleaseApiUrl { get; set; } - - public string coreDownloadUrl32 { get; set; } - - public string coreDownloadUrl64 { get; set; } - - public string coreDownloadUrlArm64 { get; set; } - public string? coreDownloadUrlLinux32 { get; set; } - public string? coreDownloadUrlLinux64 { get; set; } - public string? coreDownloadUrlLinuxArm64 { get; set; } - - public string match { get; set; } - public string versionArg { get; set; } - - public bool redirectInfo { get; set; } + public ECoreType CoreType { get; set; } + public List? CoreExes { get; set; } + public string? Arguments { get; set; } + public string? Url { get; set; } + public string? ReleaseApiUrl { get; set; } + public string? DownloadUrlWin32 { get; set; } + public string? DownloadUrlWin64 { get; set; } + public string? DownloadUrlWinArm64 { get; set; } + public string? DownloadUrlLinux64 { get; set; } + public string? DownloadUrlLinuxArm64 { get; set; } + public string? Match { get; set; } + public string? VersionArg { get; set; } + public bool RedirectInfo { get; set; } } } \ No newline at end of file diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs index f1ec7169d1c..99cf4b2e584 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs @@ -992,13 +992,13 @@ private void GenRoutingDirectExe(out List lstDnsExe, out List ls var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(); foreach (var it in coreInfo) { - if (it.coreType == ECoreType.v2rayN) + if (it.CoreType == ECoreType.v2rayN) { continue; } - foreach (var it2 in it.coreExes) + foreach (var it2 in it.CoreExes) { - if (!lstDnsExe.Contains(it2) && it.coreType != ECoreType.sing_box) + if (!lstDnsExe.Contains(it2) && it.CoreType != ECoreType.sing_box) { lstDnsExe.Add($"{it2}.exe"); } diff --git a/v2rayN/ServiceLib/Services/UpdateService.cs b/v2rayN/ServiceLib/Services/UpdateService.cs index 20ddf97c8a2..f9b7babc39b 100644 --- a/v2rayN/ServiceLib/Services/UpdateService.cs +++ b/v2rayN/ServiceLib/Services/UpdateService.cs @@ -275,7 +275,7 @@ private async Task CheckUpdateAsync(DownloadService downloadHan try { var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(type); - var url = coreInfo?.coreReleaseApiUrl; + var url = coreInfo?.ReleaseApiUrl; var result = await downloadHandle.TryDownloadString(url, true, Global.AppName); if (Utils.IsNotEmpty(result)) @@ -304,10 +304,10 @@ private SemanticVersion GetCoreVersion(ECoreType type) { var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(type); string filePath = string.Empty; - foreach (string name in coreInfo.coreExes) + foreach (string name in coreInfo.CoreExes) { string vName = Utils.GetExeName(name); - vName = Utils.GetBinPath(vName, coreInfo.coreType.ToString()); + vName = Utils.GetBinPath(vName, coreInfo.CoreType.ToString()); if (File.Exists(vName)) { filePath = vName; @@ -324,7 +324,7 @@ private SemanticVersion GetCoreVersion(ECoreType type) using Process p = new(); p.StartInfo.FileName = filePath; - p.StartInfo.Arguments = coreInfo.versionArg; + p.StartInfo.Arguments = coreInfo.VersionArg; p.StartInfo.WorkingDirectory = Utils.GetConfigPath(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; @@ -339,7 +339,7 @@ private SemanticVersion GetCoreVersion(ECoreType type) case ECoreType.v2fly: case ECoreType.Xray: case ECoreType.v2fly_v5: - version = Regex.Match(echo, $"{coreInfo.match} ([0-9.]+) \\(").Groups[1].Value; + version = Regex.Match(echo, $"{coreInfo.Match} ([0-9.]+) \\(").Groups[1].Value; break; case ECoreType.mihomo: @@ -429,19 +429,19 @@ private async Task ParseDownloadUrl(ECoreType type, string gitH if (Utils.IsWindows()) { //Check for standalone windows .Net version - if (coreInfo?.coreType == ECoreType.v2rayN + if (coreInfo?.CoreType == ECoreType.v2rayN && File.Exists(Path.Combine(Utils.StartupPath(), "wpfgfx_cor3.dll")) && File.Exists(Path.Combine(Utils.StartupPath(), "D3DCompiler_47_cor3.dll")) ) { - return coreInfo?.coreDownloadUrl64.Replace("v2rayN.zip", "zz_v2rayN-SelfContained.zip"); + return coreInfo?.DownloadUrlWin64?.Replace("v2rayN.zip", "zz_v2rayN-SelfContained.zip"); } return RuntimeInformation.ProcessArchitecture switch { - Architecture.Arm64 => coreInfo?.coreDownloadUrlArm64, - Architecture.X86 => coreInfo?.coreDownloadUrl32, - Architecture.X64 => coreInfo?.coreDownloadUrl64, + Architecture.Arm64 => coreInfo?.DownloadUrlWinArm64, + Architecture.X86 => coreInfo?.DownloadUrlWin32, + Architecture.X64 => coreInfo?.DownloadUrlWin64, _ => null, }; } @@ -449,9 +449,8 @@ private async Task ParseDownloadUrl(ECoreType type, string gitH { return RuntimeInformation.ProcessArchitecture switch { - Architecture.Arm64 => coreInfo?.coreDownloadUrlLinuxArm64, - Architecture.X86 => coreInfo?.coreDownloadUrlLinux32, - Architecture.X64 => coreInfo?.coreDownloadUrlLinux64, + Architecture.Arm64 => coreInfo?.DownloadUrlLinuxArm64, + Architecture.X64 => coreInfo?.DownloadUrlLinux64, _ => null, }; } diff --git a/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs b/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs index fdac0852bb9..e0e6f7da0fd 100644 --- a/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs @@ -50,61 +50,61 @@ private void RefreshSubItems() _checkUpdateItem.Add(new CheckUpdateItem() { - isSelected = false, - coreType = _v2rayN, - remarks = ResUI.menuCheckUpdate, + IsSelected = false, + CoreType = _v2rayN, + Remarks = ResUI.menuCheckUpdate, }); _checkUpdateItem.Add(new CheckUpdateItem() { - isSelected = true, - coreType = ECoreType.Xray.ToString(), - remarks = ResUI.menuCheckUpdate, + IsSelected = true, + CoreType = ECoreType.Xray.ToString(), + Remarks = ResUI.menuCheckUpdate, }); _checkUpdateItem.Add(new CheckUpdateItem() { - isSelected = true, - coreType = ECoreType.mihomo.ToString(), - remarks = ResUI.menuCheckUpdate, + IsSelected = true, + CoreType = ECoreType.mihomo.ToString(), + Remarks = ResUI.menuCheckUpdate, }); if (Utils.IsWindows()) { _checkUpdateItem.Add(new CheckUpdateItem() { - isSelected = true, - coreType = ECoreType.sing_box.ToString(), - remarks = ResUI.menuCheckUpdate, + IsSelected = true, + CoreType = ECoreType.sing_box.ToString(), + Remarks = ResUI.menuCheckUpdate, }); } _checkUpdateItem.Add(new CheckUpdateItem() { - isSelected = true, - coreType = _geo, - remarks = ResUI.menuCheckUpdate, + IsSelected = true, + CoreType = _geo, + Remarks = ResUI.menuCheckUpdate, }); } private async Task CheckUpdate() { _lstUpdated.Clear(); - _lstUpdated = _checkUpdateItem.Where(x => x.isSelected == true) - .Select(x => new CheckUpdateItem() { coreType = x.coreType }).ToList(); + _lstUpdated = _checkUpdateItem.Where(x => x.IsSelected == true) + .Select(x => new CheckUpdateItem() { CoreType = x.CoreType }).ToList(); for (int k = _checkUpdateItem.Count - 1; k >= 0; k--) { var item = _checkUpdateItem[k]; - if (item.isSelected == true) + if (item.IsSelected == true) { IsCheckUpdate = false; - UpdateView(item.coreType, "..."); - if (item.coreType == _geo) + UpdateView(item.CoreType, "..."); + if (item.CoreType == _geo) { await CheckUpdateGeo(); } - else if (item.coreType == _v2rayN) + else if (item.CoreType == _v2rayN) { await CheckUpdateN(EnableCheckPreReleaseUpdate); } - else if (item.coreType == ECoreType.mihomo.ToString()) + else if (item.CoreType == ECoreType.mihomo.ToString()) { await CheckUpdateCore(item, false); } @@ -118,15 +118,15 @@ private async Task CheckUpdate() private void UpdatedPlusPlus(string coreType, string fileName) { - var item = _lstUpdated.FirstOrDefault(x => x.coreType == coreType); + var item = _lstUpdated.FirstOrDefault(x => x.CoreType == coreType); if (item == null) { return; } - item.isFinished = true; + item.IsFinished = true; if (!fileName.IsNullOrEmpty()) { - item.fileName = fileName; + item.FileName = fileName; } } @@ -179,31 +179,31 @@ private async Task CheckUpdateCore(CheckUpdateItem item, bool preRelease) { void _updateUI(bool success, string msg) { - UpdateView(item.coreType, msg); + UpdateView(item.CoreType, msg); if (success) { - UpdateView(item.coreType, ResUI.MsgUpdateV2rayCoreSuccessfullyMore); + UpdateView(item.CoreType, ResUI.MsgUpdateV2rayCoreSuccessfullyMore); - UpdatedPlusPlus(item.coreType, msg); + UpdatedPlusPlus(item.CoreType, msg); } } - var type = (ECoreType)Enum.Parse(typeof(ECoreType), item.coreType); + var type = (ECoreType)Enum.Parse(typeof(ECoreType), item.CoreType); await (new UpdateService()).CheckUpdateCore(type, _config, _updateUI, preRelease) .ContinueWith(t => { - UpdatedPlusPlus(item.coreType, ""); + UpdatedPlusPlus(item.CoreType, ""); }); } private async Task UpdateFinished() { - if (_lstUpdated.Count > 0 && _lstUpdated.Count(x => x.isFinished == true) == _lstUpdated.Count) + if (_lstUpdated.Count > 0 && _lstUpdated.Count(x => x.IsFinished == true) == _lstUpdated.Count) { _updateView?.Invoke(EViewAction.DispatcherCheckUpdateFinished, false); await Task.Delay(2000); UpgradeCore(); - if (_lstUpdated.Any(x => x.coreType == _v2rayN && x.isFinished == true)) + if (_lstUpdated.Any(x => x.CoreType == _v2rayN && x.IsFinished == true)) { await Task.Delay(1000); UpgradeN(); @@ -230,7 +230,7 @@ private void UpgradeN() { try { - var fileName = _lstUpdated.FirstOrDefault(x => x.coreType == _v2rayN)?.fileName; + var fileName = _lstUpdated.FirstOrDefault(x => x.CoreType == _v2rayN)?.FileName; if (fileName.IsNullOrEmpty()) { return; @@ -247,17 +247,17 @@ private void UpgradeCore() { foreach (var item in _lstUpdated) { - if (item.fileName.IsNullOrEmpty()) + if (item.FileName.IsNullOrEmpty()) { continue; } - var fileName = item.fileName; + var fileName = item.FileName; if (!File.Exists(fileName)) { continue; } - string toPath = Utils.GetBinPath("", item.coreType); + string toPath = Utils.GetBinPath("", item.CoreType); if (fileName.Contains(".tar.gz")) { @@ -265,14 +265,14 @@ private void UpgradeCore() } else if (fileName.Contains(".gz")) { - FileManager.UncompressedFile(fileName, toPath, item.coreType); + FileManager.UncompressedFile(fileName, toPath, item.CoreType); } else { FileManager.ZipExtractToFile(fileName, toPath, _config.guiItem.ignoreGeoUpdateCore ? "geo" : ""); } - UpdateView(item.coreType, ResUI.MsgUpdateV2rayCoreSuccessfully); + UpdateView(item.CoreType, ResUI.MsgUpdateV2rayCoreSuccessfully); if (File.Exists(fileName)) { @@ -285,19 +285,19 @@ private void UpdateView(string coreType, string msg) { var item = new CheckUpdateItem() { - coreType = coreType, - remarks = msg, + CoreType = coreType, + Remarks = msg, }; _updateView?.Invoke(EViewAction.DispatcherCheckUpdate, item); } public void UpdateViewResult(CheckUpdateItem item) { - var found = _checkUpdateItem.FirstOrDefault(t => t.coreType == item.coreType); + var found = _checkUpdateItem.FirstOrDefault(t => t.CoreType == item.CoreType); if (found != null) { var itemCopy = JsonUtils.DeepCopy(found); - itemCopy.remarks = item.remarks; + itemCopy.Remarks = item.Remarks; _checkUpdateItem.Replace(found, itemCopy); } } diff --git a/v2rayN/v2rayN.Desktop/Views/CheckUpdateView.axaml b/v2rayN/v2rayN.Desktop/Views/CheckUpdateView.axaml index cd9393c8596..28c67bc34b0 100644 --- a/v2rayN/v2rayN.Desktop/Views/CheckUpdateView.axaml +++ b/v2rayN/v2rayN.Desktop/Views/CheckUpdateView.axaml @@ -68,15 +68,15 @@ Margin="8" HorizontalAlignment="Left" VerticalAlignment="Center" - IsChecked="{Binding isSelected}" /> + IsChecked="{Binding IsSelected}" /> + Text="{Binding CoreType}" /> diff --git a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs index 5afc6985299..188d1810f09 100644 --- a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs @@ -448,13 +448,13 @@ private void AddHelpMenuItem() { var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(); foreach (var it in coreInfo - .Where(t => t.coreType != ECoreType.v2fly - && t.coreType != ECoreType.hysteria)) + .Where(t => t.CoreType != ECoreType.v2fly + && t.CoreType != ECoreType.hysteria)) { var item = new MenuItem() { - Tag = it.coreUrl.Replace(@"/releases", ""), - Header = string.Format(ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " ")).UpperFirstChar() + Tag = it.Url.Replace(@"/releases", ""), + Header = string.Format(ResUI.menuWebsiteItem, it.CoreType.ToString().Replace("_", " ")).UpperFirstChar() }; item.Click += MenuItem_Click; menuHelp.Items.Add(item); diff --git a/v2rayN/v2rayN/Views/CheckUpdateView.xaml b/v2rayN/v2rayN/Views/CheckUpdateView.xaml index 6ec007ea373..ee55d737adc 100644 --- a/v2rayN/v2rayN/Views/CheckUpdateView.xaml +++ b/v2rayN/v2rayN/Views/CheckUpdateView.xaml @@ -84,15 +84,15 @@ Grid.Column="0" Margin="8" HorizontalAlignment="Left" - IsChecked="{Binding isSelected}" /> + IsChecked="{Binding IsSelected}" /> + Text="{Binding CoreType}" /> diff --git a/v2rayN/v2rayN/Views/MainWindow.xaml.cs b/v2rayN/v2rayN/Views/MainWindow.xaml.cs index dea25ceb21a..8884635880c 100644 --- a/v2rayN/v2rayN/Views/MainWindow.xaml.cs +++ b/v2rayN/v2rayN/Views/MainWindow.xaml.cs @@ -492,13 +492,13 @@ private void AddHelpMenuItem() { var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(); foreach (var it in coreInfo - .Where(t => t.coreType != ECoreType.v2fly - && t.coreType != ECoreType.hysteria)) + .Where(t => t.CoreType != ECoreType.v2fly + && t.CoreType != ECoreType.hysteria)) { var item = new MenuItem() { - Tag = it.coreUrl.Replace(@"/releases", ""), - Header = string.Format(ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " ")).UpperFirstChar() + Tag = it.Url.Replace(@"/releases", ""), + Header = string.Format(ResUI.menuWebsiteItem, it.CoreType.ToString().Replace("_", " ")).UpperFirstChar() }; item.Click += MenuItem_Click; menuHelp.Items.Add(item);