From d8bdc1ceb35a5464a89071a041a64ce2b60f57e4 Mon Sep 17 00:00:00 2001 From: cg3s Date: Fri, 24 Apr 2020 20:13:44 +0800 Subject: [PATCH 001/115] change url --- v2rayN/v2rayN/Forms/MainForm.cs | 2 +- v2rayN/v2rayN/Global.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index bf61cc5b..ef7a0678 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1451,7 +1451,7 @@ namespace v2rayN.Forms private void tsbPromotion_Click(object sender, EventArgs e) { - Process.Start($"{Utils.Base64Decode(Global.PromotionUrl)}?t={DateTime.Now.Ticks}"); + Process.Start($"{Utils.Base64Decode(Global.PromotionUrl)}"); } #endregion diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index 58ed9d5a..37780783 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -7,7 +7,7 @@ namespace v2rayN public const string v2rayWebsiteUrl = @"https://www.v2ray.com/"; - public const string AboutUrl = @"https://github.com/2dust/v2rayN"; + public const string AboutUrl = @"https://github.com/cg3s/v2rayN"; public const string UpdateUrl = AboutUrl + @"/releases"; @@ -28,7 +28,7 @@ namespace v2rayN /// /// PromotionUrl /// - public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw="; + public const string PromotionUrl = @"aHR0cHM6Ly9naXRodWIuY29tL2NnM3MvdjJyYXlO"; /// /// 本软件配置文件名 From a761c3380519eb3dc35b9bcc42065d4c960d6d18 Mon Sep 17 00:00:00 2001 From: cg3s Date: Fri, 24 Apr 2020 20:32:09 +0800 Subject: [PATCH 002/115] change url --- v2rayN/v2rayN/Global.cs | 2 +- v2rayN/v2rayN/Handler/DownloadHandle.cs | 4 ++-- v2rayN/v2rayN/Properties/AssemblyInfo.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index 37780783..0c494cd4 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -21,7 +21,7 @@ namespace v2rayN /// /// CustomRoutingListUrl /// - public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/"; + public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/cg3s/v2rayCustomRoutingList/master/"; public const string GFWLIST_URL = "https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"; diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs index bd3f4e62..88025613 100644 --- a/v2rayN/v2rayN/Handler/DownloadHandle.cs +++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs @@ -52,8 +52,8 @@ namespace v2rayN.Handler #region Check for updates - private readonly string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest"; - private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip"; + private readonly string nLatestUrl = "https://github.com/cg3s/v2rayN/releases/latest"; + private const string nUrl = "https://github.com/cg3s/v2rayN/releases/download/{0}/v2rayN.zip"; private readonly string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest"; private const string coreUrl = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip"; diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs index 505b9e16..0a693b55 100644 --- a/v2rayN/v2rayN/Properties/AssemblyInfo.cs +++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs @@ -32,4 +32,4 @@ using System.Runtime.InteropServices; // 方法是按如下所示使用“*”: //[assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyVersion("1.0.0")] -[assembly: AssemblyFileVersion("3.17")] +[assembly: AssemblyFileVersion("3.18")] From e487e8ff0dc43162900c03c427745ca8e8899d6e Mon Sep 17 00:00:00 2001 From: cg3s Date: Sun, 20 Dec 2020 13:30:22 +0800 Subject: [PATCH 003/115] change to v2fly --- v2rayN/v2rayN/Handler/DownloadHandle.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs index 25806fac..1a186641 100644 --- a/v2rayN/v2rayN/Handler/DownloadHandle.cs +++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs @@ -54,8 +54,8 @@ namespace v2rayN.Handler private readonly string nLatestUrl = "https://github.com/cg3s/v2rayN/releases/latest"; private const string nUrl = "https://github.com/cg3s/v2rayN/releases/download/{0}/v2rayN.zip"; - private readonly string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest"; - private const string coreUrl = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip"; + private readonly string coreLatestUrl = "https://github.com/v2fly/v2ray-core/releases/latest"; + private const string coreUrl = "https://github.com/v2fly/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip"; public async void CheckUpdateAsync(string type) { From 82f9698c0d5931e7e7684e3d7fa78fc3f8122dfa Mon Sep 17 00:00:00 2001 From: DHR60 Date: Tue, 29 Jul 2025 19:16:50 +0800 Subject: [PATCH 004/115] Supports IPv6 addresses in profile summary (#7656) --- v2rayN/ServiceLib/Models/ProfileItem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Models/ProfileItem.cs b/v2rayN/ServiceLib/Models/ProfileItem.cs index bc4358b5..077bc4b2 100644 --- a/v2rayN/ServiceLib/Models/ProfileItem.cs +++ b/v2rayN/ServiceLib/Models/ProfileItem.cs @@ -32,7 +32,7 @@ public class ProfileItem : ReactiveObject public string GetSummary() { var summary = $"[{(ConfigType).ToString()}] "; - var arrAddr = Address.Split('.'); + var arrAddr = Address.Contains(':') ? Address.Split(':') : Address.Split('.'); var addr = arrAddr.Length switch { > 2 => $"{arrAddr.First()}***{arrAddr.Last()}", From 74bb01d0446d007fb4df2f3c8b2461eaa2b52bf8 Mon Sep 17 00:00:00 2001 From: DHR60 Date: Tue, 29 Jul 2025 19:18:13 +0800 Subject: [PATCH 005/115] Improves private IP address detection (#7657) --- v2rayN/ServiceLib/Common/Utils.cs | 43 ++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/v2rayN/ServiceLib/Common/Utils.cs b/v2rayN/ServiceLib/Common/Utils.cs index c5b670cf..63540ee2 100644 --- a/v2rayN/ServiceLib/Common/Utils.cs +++ b/v2rayN/ServiceLib/Common/Utils.cs @@ -390,13 +390,44 @@ public class Utils { if (IPAddress.TryParse(ip, out var address)) { + // Loopback address check (127.0.0.1 for IPv4, ::1 for IPv6) + if (IPAddress.IsLoopback(address)) + return true; + var ipBytes = address.GetAddressBytes(); - if (ipBytes[0] == 10) - return true; - if (ipBytes[0] == 172 && ipBytes[1] >= 16 && ipBytes[1] <= 31) - return true; - if (ipBytes[0] == 192 && ipBytes[1] == 168) - return true; + if (address.AddressFamily == AddressFamily.InterNetwork) + { + // IPv4 private address check + if (ipBytes[0] == 10) + return true; + if (ipBytes[0] == 172 && ipBytes[1] >= 16 && ipBytes[1] <= 31) + return true; + if (ipBytes[0] == 192 && ipBytes[1] == 168) + return true; + } + else if (address.AddressFamily == AddressFamily.InterNetworkV6) + { + // IPv6 private address check + // Link-local address fe80::/10 + if (ipBytes[0] == 0xfe && (ipBytes[1] & 0xc0) == 0x80) + return true; + + // Unique local address fc00::/7 (typically fd00::/8) + if ((ipBytes[0] & 0xfe) == 0xfc) + return true; + + // Private portion in IPv4-mapped addresses ::ffff:0:0/96 + if (address.IsIPv4MappedToIPv6) + { + var ipv4Bytes = ipBytes.Skip(12).ToArray(); + if (ipv4Bytes[0] == 10) + return true; + if (ipv4Bytes[0] == 172 && ipv4Bytes[1] >= 16 && ipv4Bytes[1] <= 31) + return true; + if (ipv4Bytes[0] == 192 && ipv4Bytes[1] == 168) + return true; + } + } } return false; From ce7c41e3fff5750ca57a5dc9e13b2b908677ecff Mon Sep 17 00:00:00 2001 From: maximilionus Date: Tue, 29 Jul 2025 14:28:09 +0300 Subject: [PATCH 006/115] Unix platform elevation enhancements v2 (#7658) * Remove multiple send password actions on Unix elev * Remove CoreAdminHandler password verification This is useless since already handled in v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs with CheckSudoPasswordAsync(). * Disable caching and prompt for sudo call * Cleanup CoreAdminHandler pwd verify remains * Migrate sudo opts to initial pwd verification --- v2rayN/ServiceLib/Handler/CoreAdminHandler.cs | 12 +----------- .../Views/SudoPasswordInputView.axaml.cs | 4 ++-- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs index 3e7d3f93..661d9052 100644 --- a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs @@ -9,7 +9,6 @@ public class CoreAdminHandler private static readonly Lazy _instance = new(() => new()); public static CoreAdminHandler Instance => _instance.Value; private Config _config; - private readonly string _sudoAccessText = "SUDO_ACCESS_VERIFIED"; private Action? _updateFunc; private int _linuxSudoPid = -1; @@ -50,17 +49,10 @@ public class CoreAdminHandler } }; - var sudoVerified = false; DataReceivedEventHandler dataHandler = (sender, e) => { if (e.Data.IsNotEmpty()) { - if (!sudoVerified && e.Data.Contains(_sudoAccessText)) - { - sudoVerified = true; - UpdateFunc(false, ResUI.SudoPwdVerfiedSuccessTip + Environment.NewLine); - return; - } UpdateFunc(false, e.Data + Environment.NewLine); } }; @@ -72,8 +64,6 @@ public class CoreAdminHandler proc.BeginOutputReadLine(); proc.BeginErrorReadLine(); - await Task.Delay(10); - await proc.StandardInput.WriteLineAsync(AppHandler.Instance.LinuxSudoPwd); await Task.Delay(10); await proc.StandardInput.WriteLineAsync(AppHandler.Instance.LinuxSudoPwd); @@ -118,7 +108,7 @@ public class CoreAdminHandler } else { - sb.AppendLine($"sudo -S echo \"{_sudoAccessText}\" && sudo -S {cmdLine}"); + sb.AppendLine($"sudo -S -k -p '' {cmdLine}"); } await File.WriteAllTextAsync(shFilePath, sb.ToString()); diff --git a/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs b/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs index ad1a0211..b5dcb5c9 100644 --- a/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs @@ -64,8 +64,8 @@ public partial class SudoPasswordInputView : UserControl { try { - // Use sudo -S echo command to verify password - var arg = new List() { "-c", "sudo -S echo SUDO_CHECK" }; + // Use sudo echo command to verify password + var arg = new List() { "-c", "sudo -S -k -p '' echo SUDO_CHECK" }; var result = await CliWrap.Cli .Wrap(Global.LinuxBash) .WithArguments(arg) From f779e311edebf58db1f0f239310be7539fad8a62 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 29 Jul 2025 19:42:59 +0800 Subject: [PATCH 007/115] Optimize code and remove unused resources --- v2rayN/ServiceLib/Handler/CoreAdminHandler.cs | 6 ++++-- v2rayN/ServiceLib/Handler/CoreHandler.cs | 4 ++-- v2rayN/ServiceLib/Resx/ResUI.Designer.cs | 9 --------- v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx | 3 --- v2rayN/ServiceLib/Resx/ResUI.hu.resx | 3 --- v2rayN/ServiceLib/Resx/ResUI.resx | 3 --- v2rayN/ServiceLib/Resx/ResUI.ru.resx | 3 --- v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx | 3 --- v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx | 3 --- 9 files changed, 6 insertions(+), 31 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs index 661d9052..a573c1b0 100644 --- a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs @@ -20,6 +20,8 @@ public class CoreAdminHandler } _config = config; _updateFunc = updateFunc; + + await Task.CompletedTask; } private void UpdateFunc(bool notify, string msg) @@ -49,13 +51,13 @@ public class CoreAdminHandler } }; - DataReceivedEventHandler dataHandler = (sender, e) => + void dataHandler(object sender, DataReceivedEventArgs e) { if (e.Data.IsNotEmpty()) { UpdateFunc(false, e.Data + Environment.NewLine); } - }; + } proc.OutputDataReceived += dataHandler; proc.ErrorDataReceived += dataHandler; diff --git a/v2rayN/ServiceLib/Handler/CoreHandler.cs b/v2rayN/ServiceLib/Handler/CoreHandler.cs index d1cf43f0..f0c23c69 100644 --- a/v2rayN/ServiceLib/Handler/CoreHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreHandler.cs @@ -280,13 +280,13 @@ public class CoreHandler if (displayLog) { - DataReceivedEventHandler dataHandler = (sender, e) => + void dataHandler(object sender, DataReceivedEventArgs e) { if (e.Data.IsNotEmpty()) { UpdateFunc(false, e.Data + Environment.NewLine); } - }; + } proc.OutputDataReceived += dataHandler; proc.ErrorDataReceived += dataHandler; } diff --git a/v2rayN/ServiceLib/Resx/ResUI.Designer.cs b/v2rayN/ServiceLib/Resx/ResUI.Designer.cs index 4732cdd4..23469763 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.Designer.cs +++ b/v2rayN/ServiceLib/Resx/ResUI.Designer.cs @@ -2211,15 +2211,6 @@ namespace ServiceLib.Resx { } } - /// - /// 查找类似 Sudo password has been verified successfully, please ignore the incorrect password prompts! 的本地化字符串。 - /// - public static string SudoPwdVerfiedSuccessTip { - get { - return ResourceManager.GetString("SudoPwdVerfiedSuccessTip", resourceCulture); - } - } - /// /// 查找类似 Address 的本地化字符串。 /// diff --git a/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx b/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx index f8f8d6fa..1f05cf8f 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx @@ -1395,9 +1395,6 @@ Can fill in the configuration remarks, please make sure it exist and are unique - - Sudo password has been verified successfully, please ignore the incorrect password prompts! - Incorrect password, please try again. diff --git a/v2rayN/ServiceLib/Resx/ResUI.hu.resx b/v2rayN/ServiceLib/Resx/ResUI.hu.resx index 85ea3335..862758f6 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.hu.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.hu.resx @@ -1395,9 +1395,6 @@ Can fill in the configuration remarks, please make sure it exist and are unique - - Sudo password has been verified successfully, please ignore the incorrect password prompts! - Incorrect password, please try again. diff --git a/v2rayN/ServiceLib/Resx/ResUI.resx b/v2rayN/ServiceLib/Resx/ResUI.resx index 8092e2e9..2826c9cc 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.resx @@ -1395,9 +1395,6 @@ Can fill in the configuration remarks, please make sure it exist and are unique - - Sudo password has been verified successfully, please ignore the incorrect password prompts! - Incorrect password, please try again. diff --git a/v2rayN/ServiceLib/Resx/ResUI.ru.resx b/v2rayN/ServiceLib/Resx/ResUI.ru.resx index 434b2c8f..a4d82127 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.ru.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.ru.resx @@ -1395,9 +1395,6 @@ Can fill in the configuration remarks, please make sure it exist and are unique - - Sudo password has been verified successfully, please ignore the incorrect password prompts! - Incorrect password, please try again. diff --git a/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx b/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx index fed61bf6..55186822 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx @@ -1392,9 +1392,6 @@ 可以填写配置文件别名,请确保存在并唯一 - - sudo 密码已经验证成功,请忽略错误密码提示! - 密码错误,请重试。 diff --git a/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx b/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx index f6676488..cbf27b8c 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx @@ -1392,9 +1392,6 @@ 可以填寫設定檔別名,請確保存在並唯一 - - sudo 密碼已經驗證成功,請忽略錯誤密碼提示! - 密碼錯誤,請重試。 From dad35f57d05348c3d0591aa4bd6ba5d6c3794d7c Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 29 Jul 2025 20:23:42 +0800 Subject: [PATCH 008/115] Fixed an issue where root processes could not be exited on macOS --- v2rayN/ServiceLib/Handler/CoreAdminHandler.cs | 2 +- v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs index a573c1b0..0adc6c41 100644 --- a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs @@ -110,7 +110,7 @@ public class CoreAdminHandler } else { - sb.AppendLine($"sudo -S -k -p '' {cmdLine}"); + sb.AppendLine($"sudo -S {cmdLine}"); } await File.WriteAllTextAsync(shFilePath, sb.ToString()); diff --git a/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs b/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs index b5dcb5c9..e0b27607 100644 --- a/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs @@ -65,7 +65,7 @@ public partial class SudoPasswordInputView : UserControl try { // Use sudo echo command to verify password - var arg = new List() { "-c", "sudo -S -k -p '' echo SUDO_CHECK" }; + var arg = new List() { "-c", "sudo -S echo SUDO_CHECK" }; var result = await CliWrap.Cli .Wrap(Global.LinuxBash) .WithArguments(arg) From 6715d7dce6933f0bfc3b28778e0d17bb0ccd7296 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 29 Jul 2025 20:44:43 +0800 Subject: [PATCH 009/115] up 7.13.4 --- v2rayN/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/Directory.Build.props b/v2rayN/Directory.Build.props index d7fd93ac..faf528a8 100644 --- a/v2rayN/Directory.Build.props +++ b/v2rayN/Directory.Build.props @@ -1,7 +1,7 @@ - 7.13.3 + 7.13.4 From 3d23f3e3a27ec5a94bfc8faa6b7f0c109afe2a41 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Wed, 30 Jul 2025 19:52:45 +0800 Subject: [PATCH 010/115] Optimized and improved the code Optimized and improved the code for killing core processes in non-Windows environments. Now uses a shell script for precise processing. --- v2rayN/ServiceLib/Common/FileManager.cs | 24 ++++++++ v2rayN/ServiceLib/Global.cs | 2 + v2rayN/ServiceLib/Handler/CoreAdminHandler.cs | 50 +++++++-------- .../Handler/SysProxy/ProxySettingLinux.cs | 9 +-- .../Handler/SysProxy/ProxySettingOSX.cs | 9 +-- .../ServiceLib/Sample/kill_as_sudo_linux_sh | 61 +++++++++++++++++++ v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh | 56 +++++++++++++++++ v2rayN/ServiceLib/ServiceLib.csproj | 2 + .../Views/SudoPasswordInputView.axaml.cs | 3 +- 9 files changed, 170 insertions(+), 46 deletions(-) create mode 100644 v2rayN/ServiceLib/Sample/kill_as_sudo_linux_sh create mode 100644 v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh diff --git a/v2rayN/ServiceLib/Common/FileManager.cs b/v2rayN/ServiceLib/Common/FileManager.cs index d988c702..6d4d28ca 100644 --- a/v2rayN/ServiceLib/Common/FileManager.cs +++ b/v2rayN/ServiceLib/Common/FileManager.cs @@ -223,4 +223,28 @@ public static class FileManager // ignored } } + + /// + /// Creates a Linux shell file with the specified contents. + /// + /// + /// + /// + /// + public static async Task CreateLinuxShellFile(string fileName, string contents, bool overwrite) + { + var shFilePath = Utils.GetBinConfigPath(fileName); + + // Check if the file already exists and if we should overwrite it + if (!overwrite && File.Exists(shFilePath)) + { + return shFilePath; + } + + File.Delete(shFilePath); + await File.WriteAllTextAsync(shFilePath, contents); + await Utils.SetLinuxChmod(shFilePath); + + return shFilePath; + } } diff --git a/v2rayN/ServiceLib/Global.cs b/v2rayN/ServiceLib/Global.cs index 5592fa2e..0728b2ea 100644 --- a/v2rayN/ServiceLib/Global.cs +++ b/v2rayN/ServiceLib/Global.cs @@ -38,6 +38,8 @@ public class Global public const string PacFileName = NamespaceSample + "pac"; public const string ProxySetOSXShellFileName = NamespaceSample + "proxy_set_osx_sh"; public const string ProxySetLinuxShellFileName = NamespaceSample + "proxy_set_linux_sh"; + public const string KillAsSudoOSXShellFileName = NamespaceSample + "kill_as_sudo_osx_sh"; + public const string KillAsSudoLinuxShellFileName = NamespaceSample + "kill_as_sudo_linux_sh"; public const string DefaultSecurity = "auto"; public const string DefaultNetwork = "tcp"; diff --git a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs index 0adc6c41..ec448b7a 100644 --- a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs @@ -1,6 +1,7 @@ using System.Diagnostics; using System.Text; using CliWrap; +using CliWrap.Buffered; namespace ServiceLib.Handler; @@ -11,6 +12,7 @@ public class CoreAdminHandler private Config _config; private Action? _updateFunc; private int _linuxSudoPid = -1; + private const string _tag = "CoreAdminHandler"; public async Task Init(Config config, Action updateFunc) { @@ -31,8 +33,11 @@ public class CoreAdminHandler public async Task RunProcessAsLinuxSudo(string fileName, CoreInfo coreInfo, string configPath) { + StringBuilder sb = new(); + sb.AppendLine("#!/bin/bash"); var cmdLine = $"{fileName.AppendQuotes()} {string.Format(coreInfo.Arguments, Utils.GetBinConfigPath(configPath).AppendQuotes())}"; - var shFilePath = await CreateLinuxShellFile(cmdLine, "run_as_sudo.sh"); + sb.AppendLine($"sudo -S {cmdLine}"); + var shFilePath = await FileManager.CreateLinuxShellFile("run_as_sudo.sh", sb.ToString(), true); Process proc = new() { @@ -87,35 +92,24 @@ public class CoreAdminHandler return; } - var cmdLine = $"pkill -P {_linuxSudoPid} ; kill {_linuxSudoPid}"; - var shFilePath = await CreateLinuxShellFile(cmdLine, "kill_as_sudo.sh"); + try + { + var shellFileName = Utils.IsOSX() ? Global.KillAsSudoOSXShellFileName : Global.KillAsSudoLinuxShellFileName; + var shFilePath = await FileManager.CreateLinuxShellFile("kill_as_sudo.sh", EmbedUtils.GetEmbedText(shellFileName), true); - await Cli.Wrap(shFilePath) - .WithStandardInputPipe(PipeSource.FromString(AppHandler.Instance.LinuxSudoPwd)) - .ExecuteAsync(); + var arg = new List() { "-c", $"sudo -S {shFilePath} {_linuxSudoPid}" }; + var result = await Cli.Wrap(Global.LinuxBash) + .WithArguments(arg) + .WithStandardInputPipe(PipeSource.FromString(AppHandler.Instance.LinuxSudoPwd)) + .ExecuteBufferedAsync(); + + UpdateFunc(false, result.StandardOutput.ToString()); + } + catch (Exception ex) + { + Logging.SaveLog(_tag, ex); + } _linuxSudoPid = -1; } - - private async Task CreateLinuxShellFile(string cmdLine, string fileName) - { - var shFilePath = Utils.GetBinConfigPath(fileName); - File.Delete(shFilePath); - - var sb = new StringBuilder(); - sb.AppendLine("#!/bin/sh"); - if (Utils.IsAdministrator()) - { - sb.AppendLine($"{cmdLine}"); - } - else - { - sb.AppendLine($"sudo -S {cmdLine}"); - } - - await File.WriteAllTextAsync(shFilePath, sb.ToString()); - await Utils.SetLinuxChmod(shFilePath); - - return shFilePath; - } } diff --git a/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingLinux.cs b/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingLinux.cs index 9c5a53a8..9c2be056 100644 --- a/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingLinux.cs +++ b/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingLinux.cs @@ -18,14 +18,7 @@ public class ProxySettingLinux private static async Task ExecCmd(List args) { - var fileName = Utils.GetBinConfigPath(_proxySetFileName); - if (!File.Exists(fileName)) - { - var contents = EmbedUtils.GetEmbedText(Global.ProxySetLinuxShellFileName); - await File.AppendAllTextAsync(fileName, contents); - - await Utils.SetLinuxChmod(fileName); - } + var fileName = await FileManager.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetLinuxShellFileName), false); await Utils.GetCliWrapOutput(fileName, args); } diff --git a/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs b/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs index c18cd728..9d15839b 100644 --- a/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs +++ b/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs @@ -23,14 +23,7 @@ public class ProxySettingOSX private static async Task ExecCmd(List args) { - var fileName = Utils.GetBinConfigPath(_proxySetFileName); - if (!File.Exists(fileName)) - { - var contents = EmbedUtils.GetEmbedText(Global.ProxySetOSXShellFileName); - await File.AppendAllTextAsync(fileName, contents); - - await Utils.SetLinuxChmod(fileName); - } + var fileName = await FileManager.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetOSXShellFileName), false); await Utils.GetCliWrapOutput(fileName, args); } diff --git a/v2rayN/ServiceLib/Sample/kill_as_sudo_linux_sh b/v2rayN/ServiceLib/Sample/kill_as_sudo_linux_sh new file mode 100644 index 00000000..7f62a532 --- /dev/null +++ b/v2rayN/ServiceLib/Sample/kill_as_sudo_linux_sh @@ -0,0 +1,61 @@ +#!/bin/bash +# +# Process Terminator Script for Linux +# This script forcibly terminates a process and all its child processes +# + +# Check if PID argument is provided +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +PID=$1 + +# Validate that input is a valid PID (numeric) +if ! [[ "$PID" =~ ^[0-9]+$ ]]; then + echo "Error: The PID must be a numeric value" + exit 1 +fi + +# Check if the process exists +if ! ps -p $PID > /dev/null; then + echo "Warning: No process found with PID $PID" + exit 0 +fi + +# Recursive function to find and kill all child processes +kill_children() { + local parent=$1 + local children=$(ps -o pid --no-headers --ppid "$parent") + + # Output information about processes being terminated + echo "Processing children of PID: $parent..." + + # Process each child + for child in $children; do + # Recursively find and kill child's children first + kill_children "$child" + + # Force kill the child process + echo "Terminating child process: $child" + kill -9 "$child" 2>/dev/null || true + done +} + +echo "============================================" +echo "Starting termination of process $PID and all its children" +echo "============================================" + +# Find and kill all child processes +kill_children "$PID" + +# Finally kill the main process +echo "Terminating main process: $PID" +kill -9 "$PID" 2>/dev/null || true + +echo "============================================" +echo "Process $PID and all its children have been terminated" +echo "============================================" + +exit 0 diff --git a/v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh b/v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh new file mode 100644 index 00000000..043d3703 --- /dev/null +++ b/v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh @@ -0,0 +1,56 @@ +#!/bin/bash +# +# Process Terminator Script for macOS +# This script forcibly terminates a process and all its descendant processes +# + +# Check if PID argument is provided +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +PID=$1 + +# Validate that input is a valid PID (numeric) +if ! [[ "$PID" =~ ^[0-9]+$ ]]; then + echo "Error: The PID must be a numeric value" + exit 1 +fi + +# Check if the process exists +if ! ps -p $PID > /dev/null; then + echo "Warning: No process found with PID $PID" + exit 0 +fi + +# Recursive function to find and kill all descendant processes +kill_descendants() { + local parent=$1 + # Use ps -eo pid,ppid for macOS compatibility + local children=$(ps -eo pid=,ppid= | awk -v ppid=$parent '$2==ppid {print $1}') + + echo "Processing children of PID: $parent..." + for child in $children; do + kill_descendants "$child" + echo "Terminating child process: $child" + kill -9 "$child" 2>/dev/null || true + done +} + +echo "============================================" +echo "Starting termination of process $PID and all its descendants" +echo "============================================" + +# Find and kill all descendant processes +kill_descendants "$PID" + +# Finally kill the main process +echo "Terminating main process: $PID" +kill -9 "$PID" 2>/dev/null || true + +echo "============================================" +echo "Process $PID and all its descendants have been terminated" +echo "============================================" + +exit 0 diff --git a/v2rayN/ServiceLib/ServiceLib.csproj b/v2rayN/ServiceLib/ServiceLib.csproj index bedde615..ecbab780 100644 --- a/v2rayN/ServiceLib/ServiceLib.csproj +++ b/v2rayN/ServiceLib/ServiceLib.csproj @@ -28,6 +28,8 @@ + + diff --git a/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs b/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs index e0b27607..9a5e908f 100644 --- a/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/SudoPasswordInputView.axaml.cs @@ -66,8 +66,7 @@ public partial class SudoPasswordInputView : UserControl { // Use sudo echo command to verify password var arg = new List() { "-c", "sudo -S echo SUDO_CHECK" }; - var result = await CliWrap.Cli - .Wrap(Global.LinuxBash) + var result = await CliWrap.Cli.Wrap(Global.LinuxBash) .WithArguments(arg) .WithStandardInputPipe(CliWrap.PipeSource.FromString(password)) .ExecuteBufferedAsync(); From 8662d94ab6bfe62058c42a41d43a93ad3fd6b604 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Wed, 30 Jul 2025 20:33:51 +0800 Subject: [PATCH 011/115] Fixed bug for macos kill_as_sudo --- v2rayN/ServiceLib/Handler/CoreAdminHandler.cs | 5 ++++- v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs index ec448b7a..ec99b26b 100644 --- a/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreAdminHandler.cs @@ -96,7 +96,10 @@ public class CoreAdminHandler { var shellFileName = Utils.IsOSX() ? Global.KillAsSudoOSXShellFileName : Global.KillAsSudoLinuxShellFileName; var shFilePath = await FileManager.CreateLinuxShellFile("kill_as_sudo.sh", EmbedUtils.GetEmbedText(shellFileName), true); - + if (shFilePath.Contains(' ')) + { + shFilePath = shFilePath.AppendQuotes(); + } var arg = new List() { "-c", $"sudo -S {shFilePath} {_linuxSudoPid}" }; var result = await Cli.Wrap(Global.LinuxBash) .WithArguments(arg) diff --git a/v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh b/v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh index 043d3703..94011d6f 100644 --- a/v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh +++ b/v2rayN/ServiceLib/Sample/kill_as_sudo_osx_sh @@ -18,8 +18,8 @@ if ! [[ "$PID" =~ ^[0-9]+$ ]]; then exit 1 fi -# Check if the process exists -if ! ps -p $PID > /dev/null; then +# Check if the process exists - using kill -0 which is more reliable on macOS +if ! kill -0 $PID 2>/dev/null; then echo "Warning: No process found with PID $PID" exit 0 fi @@ -27,9 +27,9 @@ fi # Recursive function to find and kill all descendant processes kill_descendants() { local parent=$1 - # Use ps -eo pid,ppid for macOS compatibility - local children=$(ps -eo pid=,ppid= | awk -v ppid=$parent '$2==ppid {print $1}') - + # Use ps -axo for macOS to ensure all processes are included + local children=$(ps -axo pid=,ppid= | awk -v ppid=$parent '$2==ppid {print $1}') + echo "Processing children of PID: $parent..." for child in $children; do kill_descendants "$child" From ac1231ad54ffc9dd43452aaa853929c4495489e2 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Wed, 30 Jul 2025 21:08:37 +0800 Subject: [PATCH 012/115] sing-box LAN listening address changed to 0.0.0.0 https://github.com/2dust/v2rayN/discussions/7669 --- .../ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs index c9bef4f5..79e4c0a2 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs @@ -519,7 +519,7 @@ public class CoreConfigSingboxService { try { - var listen = "::"; + var listen = "0.0.0.0"; singboxConfig.inbounds = []; if (!_config.TunModeItem.EnableTun From 3f79df21d949e8e0c1f609b8b9992723861d7d98 Mon Sep 17 00:00:00 2001 From: DHR60 Date: Thu, 31 Jul 2025 16:56:39 +0800 Subject: [PATCH 013/115] Fix missing hysteria2 arguments (#7673) --- v2rayN/ServiceLib/Handler/CoreInfoHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs b/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs index 6b7e1df2..befd80fa 100644 --- a/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs @@ -130,7 +130,7 @@ public sealed class CoreInfoHandler { CoreType = ECoreType.hysteria, CoreExes = ["hysteria"], - Arguments = "", + Arguments = "-c {0}", Url = GetCoreUrl(ECoreType.hysteria), }, @@ -180,7 +180,7 @@ public sealed class CoreInfoHandler { CoreType = ECoreType.hysteria2, CoreExes = ["hysteria-windows-amd64", "hysteria-linux-amd64", "hysteria"], - Arguments = "", + Arguments = "-c {0}", Url = GetCoreUrl(ECoreType.hysteria2), }, From 1d1f5641ebc633d7b76ca16626f90ea1ffae6fd4 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Thu, 31 Jul 2025 20:43:00 +0800 Subject: [PATCH 014/115] up 7.13.5 --- v2rayN/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/Directory.Build.props b/v2rayN/Directory.Build.props index faf528a8..484cde47 100644 --- a/v2rayN/Directory.Build.props +++ b/v2rayN/Directory.Build.props @@ -1,7 +1,7 @@ - 7.13.4 + 7.13.5 From 6fa5ca5aa952222d818024fb9ee5fb5e8240bd4b Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Fri, 1 Aug 2025 12:16:19 +0800 Subject: [PATCH 015/115] Revert "Fix missing hysteria2 arguments (#7673)" This reverts commit 3f79df21d949e8e0c1f609b8b9992723861d7d98. --- v2rayN/ServiceLib/Handler/CoreInfoHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs b/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs index befd80fa..6b7e1df2 100644 --- a/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs @@ -130,7 +130,7 @@ public sealed class CoreInfoHandler { CoreType = ECoreType.hysteria, CoreExes = ["hysteria"], - Arguments = "-c {0}", + Arguments = "", Url = GetCoreUrl(ECoreType.hysteria), }, @@ -180,7 +180,7 @@ public sealed class CoreInfoHandler { CoreType = ECoreType.hysteria2, CoreExes = ["hysteria-windows-amd64", "hysteria-linux-amd64", "hysteria"], - Arguments = "-c {0}", + Arguments = "", Url = GetCoreUrl(ECoreType.hysteria2), }, From 96e1f85d6f4f11dbe85ecd4149b7634bffbb867f Mon Sep 17 00:00:00 2001 From: Internetezoo <123302216+Internetezoo@users.noreply.github.com> Date: Sat, 2 Aug 2025 15:06:14 +0200 Subject: [PATCH 016/115] Update ResUI.hu.resx (#7679) --- v2rayN/ServiceLib/Resx/ResUI.hu.resx | 574 +++++++++++++-------------- 1 file changed, 287 insertions(+), 287 deletions(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.hu.resx b/v2rayN/ServiceLib/Resx/ResUI.hu.resx index 862758f6..d7fd9fd3 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.hu.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.hu.resx @@ -118,55 +118,55 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - A megosztási link másolása a vágólapra sikerült + Sikeresen exportálta a megosztási linket a vágólapra - Kérjük, először ellenőrizze a szerverbeállításokat + Kérjük, először ellenőrizze a konfigurációs beállításokat. - Érvénytelen konfigurációs formátum + Érvénytelen konfigurációs formátum. - Vegye figyelembe, hogy a testreszabott konfiguráció teljes mértékben az ön konfigurációjától függ, és nem működik minden beállítással. Ha a rendszer proxyját szeretné használni, kérjük, módosítsa a figyelési portot kézzel. + Ne feledje, hogy az egyéni konfiguráció teljes mértékben a saját konfigurációjától függ, és nem működik minden beállítással. Ha a rendszerproxyt szeretné használni, kérjük, manuálisan módosítsa a figyelő portot. Letöltés... - Nem sikerült a konfigurációs fájl átalakítása + Nem sikerült a konfigurációs fájl konvertálása - Nem sikerült a gyári konfigurációs fájl generálása + Nem sikerült az alapértelmezett konfigurációs fájl generálása - Nem sikerült lekérni a gyári konfigurációt + Nem sikerült lekérni az alapértelmezett konfigurációt - Nem sikerült a testreszabott konfigurációs szerver importálása + Nem sikerült importálni az egyéni konfigurációt - Nem sikerült a konfigurációs fájl beolvasása + Nem sikerült olvasni a konfigurációs fájlt - Kérjük, adja meg a helyes formátumú szerverportot + Kérjük, adja meg a helyes port formátumot. - Kérjük, adja meg a helyi figyelési portot + Kérjük, adja meg a helyi figyelő portot. - Kérjük, töltse ki a jelszót + Kérjük, adja meg a jelszót. - Kérjük, adja meg a szerver címét + Kérjük, adja meg a címet. - Kérjük, adja meg a felhasználói azonosítót + Kérjük, adja meg a felhasználói azonosítót. - Nem helyes a konfiguráció, kérjük, ellenőrizze + Ez nem a megfelelő konfiguráció, kérjük, ellenőrizze - Kezi konfiguráció + Kezdeti konfiguráció {0} {1} már naprakész. @@ -187,13 +187,13 @@ Típus - Előfizetési csoport + Előfizetés csoport - Letöltési forgalom ma + Mai letöltési forgalom - Feltöltési forgalom ma + Mai feltöltési forgalom Összes letöltési forgalom @@ -205,37 +205,37 @@ Szállítás - A Core letöltése sikerült + A Core sikeresen letöltve - Nem sikerült az előfizetési tartalom importálása + Nem sikerült importálni az előfizetés tartalmát - Az előfizetési tartalom sikeresen lekérve + Az előfizetés tartalma sikeresen lekérve - Nincs érvényes előfizetés meghatározva + Nincs érvényes előfizetés beállítva - Resolve {0} sikeresen + Resolved {0} successfully - Kezdje el az előfizetések lekérését + Előfizetések lekérdezése elindult - Kezdődik a frissítés: {0}... + Frissítés indítása: {0}... - Érvénytelen előfizetési tartalom + Érvénytelen előfizetés tartalom - Kicsomagolás folyamatban...... + Kicsomagolás... - Az előfizetések frissítése befejeződött + Előfizetés frissítése befejeződött - Az előfizetések frissítése elkezdődött + Előfizetés frissítése elindult A Core sikeresen frissítve @@ -244,16 +244,16 @@ A Core sikeresen frissítve! Szolgáltatás újraindítása... - Nem-VMess vagy ss protokoll + Nem VMess vagy SS protokoll - A Core fájl (fájl neve: {1}) nem található a mappában ({0}), kérjük, töltse le és helyezze a mappába, letöltési cím: {2} + A Core fájl (fájlnév: {1}) nem található a mappában ({0}), kérjük, töltse le és helyezze a mappába, letöltési cím: {2} - Beolvasás befejeződött, nem található érvényes QR-kód + Szkennelés befejeződött, nem található érvényes QR kód - A művelet nem sikerült, kérjük, ellenőrizze és próbálja újra + Művelet sikertelen, kérjük, ellenőrizze és próbálja újra Kérjük, töltse ki a megjegyzéseket @@ -262,97 +262,97 @@ Kérjük, válassza ki a titkosítási módszert - Kérjük, válasszon egy protokollt + Kérjük, válassza ki a protokollt - Kérjük, először válassza ki a szervert + Kérjük, először válassza ki a konfigurációt - A szerverek duplikáció eltávolítása befejeződött. Régi: {0}, Új: {1}. + Konfigurációk deduplikálása befejeződött. Régi: {0}, Új: {1}. - Biztosan el kívánja távolítani a szervert? + Biztosan eltávolítja a konfigurációt? - A kliens konfigurációs fájl mentve van itt: {0} + Az ügyfélkonfigurációs fájl mentése itt: {0} Szolgáltatás indítása ({0})... - Konfiguráció sikeres {0} + Konfiguráció sikeres. {0} - A testreszabott konfigurációs szerver sikeresen importálva + Egyéni konfiguráció sikeresen importálva - {0} szerver importálva a vágólapról + {0} konfiguráció importálva a vágólapról - A megosztott link sikeresen importálva a beolvasás során + Sikeresen beolvasta és importálta a megosztott linket A késleltetés: {0} ms, {1} - A művelet sikeres + Művelet sikeres - Kérjük, válassza ki a szabályokat + Kérjük, válasszon szabályokat - Biztosan el kívánja távolítani a szabályokat? + Biztosan eltávolítja a szabályokat? - {0}, az egyik kötelező. + {0}, az egyik kötelező mező. Megjegyzések - URL (Opcionális) + URL (opcionális) - Szám + Darabszám Kérjük, adja meg az URL-t - Hozzá kívánja adni a szabályokat? Válassza az igent az összefűzéshez, válassza a másikat a cseréhez + Hozzá szeretne fűzni szabályokat? Igen a hozzáfűzéshez, nem a cseréhez. - GeoFile letöltése: {0} sikerült + A GeoFile: {0} sikeresen letöltve Információ - Testreszabott ikona + Egyéni ikon - Kérjük, adja meg a helyes egyedi DNS-t + Kérjük, töltse ki a helyes egyéni DNS-t - *ws/httpupgrade/xhttp útvonal + *ws/http upgrade/xhttp elérési út - *h2 útvonal + *h2 elérési út - *QUIC kulcs/KCP mag + *QUIC kulcs/KCP seed - *grpc szolgáltatás neve + *grpc szolgáltatásnév - *http host, vesszővel elválasztva (,) + *http host vesszővel elválasztva (,) - *ws/httpupgrade/xhttp host + *ws/http upgrade/xhttp host - *h2 host, vesszővel elválasztva (,) + *h2 host vesszővel elválasztva (,) *QUIC biztonság @@ -373,19 +373,19 @@ TLS - *kcp mag + *kcp seed - A globális billentyűparancs {0} bejegyzése nem sikerült, ok: {1} + Globális gyorsbillentyű {0} regisztrációja sikertelen, ok: {1} - A globális billentyűparancs {0} sikeresen bejegyezve + Globális gyorsbillentyű {0} sikeresen regisztrálva Összes - Kérjük, keresse meg a szerver konfigurációjának importálásához + Kérjük, tallózzon a konfiguráció importálásához Tesztelés... @@ -397,7 +397,7 @@ Helyi - Szerver szűrő, nyomja meg az Enter-t a végrehajtáshoz + Konfigurációs szűrő, Enter billentyűvel végrehajtható Frissítés ellenőrzése @@ -409,13 +409,13 @@ Kilépés - Globális billentyűparancs beállítása + Globális gyorsbillentyű beállítás - Segítség + Súgó - Opció beállítása + Opció beállítás Promóció @@ -424,25 +424,25 @@ Újratöltés - Útvonal beállítása + Útválasztási beállítás - Szerverek + Konfigurációk Beállítások - Frissítse a jelenlegi előfizetést proxy nélkül + Aktuális előfizetés frissítése proxy nélkül - Frissítse a jelenlegi előfizetést proxyval + Aktuális előfizetés frissítése proxyval Előfizetési csoport - Előfizetési csoport beállítások + Előfizetési csoport beállításai Előfizetések frissítése proxy nélkül @@ -457,7 +457,7 @@ Rendszerproxy törlése - Ne változtassa meg a rendszer proxyját + Ne változtassa meg a rendszerproxyt PAC mód @@ -472,64 +472,64 @@ Nyelv (Újraindítás) - Importálja a megosztott linkeket a vágólapról (Ctrl+V) + Megosztási linkek importálása vágólapról (Ctrl+V) - QR kód beolvasása a képernyőn (Ctrl+S) + QR kód beolvasása a képernyőről (Ctrl+S) - Kiválasztott szerver klónozása + Kijelölt konfiguráció klónozása - Duplikált szerverek eltávolítása + Ismétlődő konfigurációk eltávolítása - Kiválasztott szerver(törlés) + Kijelölt konfigurációk eltávolítása (Delete) - Aktív szerverként beállítani (Enter) + Beállítás aktív konfigurációként (Enter) - Minden szolgáltatási statisztika törlése + Összes szolgáltatás statisztika törlése - A szerverek valós késleltetésének tesztelése (Ctrl+R) + Konfigurációk valós késleltetésének tesztelése (Ctrl+R) - Sorrend szerinti tesztelési eredmény + Rendezés teszteredmény szerint - A szerverek letöltési sebességének tesztelése (Ctrl+T) + Konfigurációk letöltési sebességének tesztelése (Ctrl+T) - Szerver tesztelése tcping-gel (Ctrl+O) + Konfigurációk tesztelése tcpinggel (Ctrl+O) - A kiválasztott szerver exportálása a teljes konfigurációhoz + Kijelölt konfiguráció exportálása teljes konfigurációként - A megosztási link kattintásra másolása (Ctrl+C) + Megosztási link exportálása vágólapra (Ctrl+C) - Testreszabott konfigurációs szerver hozzáadása + Egyéni konfiguráció hozzáadása - [Shadowsocks] szerver hozzáadása + [Shadowsocks] konfiguráció hozzáadása - [SOCKS] szerver hozzáadása + [SOCKS] konfiguráció hozzáadása - [Trojan] szerver hozzáadása + [Trojan] konfiguráció hozzáadása - [VLESS] szerver hozzáadása + [VLESS] konfiguráció hozzáadása - [VMess] szerver hozzáadása + [VMess] konfiguráció hozzáadása - Mindet kijelölni (Ctrl+A) + Összes kijelölése (Ctrl+A) Összes törlése @@ -556,19 +556,19 @@ Megosztás - A frissítés engedélyezése + Frissítés engedélyezése - Sorrend + Rendezés - Felhasználói ügynök + User Agent - Cancel + Mégsem - Megerősít + Megerősítés Szállítás @@ -577,40 +577,40 @@ Cím - Engedélyezett nem biztosított + Nem biztonságos engedélyezése ALPN - AlterID + Alter ID Ujjlenyomat - Álcázás típusa + Álcázási típus UUID(id) - Szállítási protokoll (hálózat) + Szállítási protokoll(hálózat) - Útvonal + Elérési út Port - Álnév (megjegyzések) + Alias (megjegyzések) - Álcázott domain (hoszt) + Álcázási tartomány(host) - Kódolási módszer (biztonság) + Titkosítási módszer (biztonság) SNI @@ -622,10 +622,10 @@ *Alapértelmezett érték tcp - Yalap típusa + Core Típus - Folyam + Flow Generálás @@ -634,34 +634,34 @@ Jelszó - Jelszó (opcionális) + Jelszó(Opcionális) UUID(id) - Kódolás + Titkosítás - Felhasználó (opcionális) + Felhasználó(Opcionális) - Kódolás + Titkosítás Socks port - * Ezen érték beállítása után egy socks szolgáltatás indul el Xray/sing-box(Tun) használatával, amely funkcionalitásokat biztosít, mint például a sebesség megjelenítése + * A beállítás után egy socks szolgáltatás indul az Xray/sing-box(Tun) segítségével, hogy olyan funkciókat biztosítson, mint a sebességkijelzés - Böngészés + Tallózás Szerkesztés - Fejlett proxy beállítások, protokoll választás (opcionális) + Haladó proxy beállítások, protokoll kiválasztása (opcionális) Kapcsolatok engedélyezése a LAN-ról @@ -670,61 +670,61 @@ Automatikus elrejtés indításkor - Geo automatikus frissítési időköz (órák) + Geo fájlok automatikus frissítési intervalluma (órák) - Yalap: alapbeállítások + Core: alapbeállítások V2ray DNS beállítások - Yalap: KCP beállítások + Core: KCP beállítások - Yalap típusa beállítások + Core Típus beállítások - Engedélyezett a nem biztonságos + Nem biztonságos engedélyezése - Kimenő szabadság domain stratégia + Kimenő Freedom tartomány stratégia - Otomatikusan állítja be az oszlop szélességét előfizetés frissítése után + Oszlopszélesség automatikus beállítása előfizetés frissítése után - Frissítések ellenőrzése a kiadás előtt + Előzetes kiadás frissítések ellenőrzése Kivétel - Kivétel. Ne használjon proxy szervert a címek esetében, amelyek pontosan itt kezdődnek, használjon pontosvesszőt (;) + Kivételek: Ne használjon proxy szervert a következő címmel kezdődő címekhez. Pontosvesszővel (;) válassza el a bejegyzéseket. - Display real-time speed + Valós idejű sebesség megjelenítése (újraindítást igényel) - Régi megőrzése a deduplikáció során + Régebbi bejegyzések megtartása deduplikáláskor - Napló engedélyezése + Naplózás engedélyezése - Napló szint + Naplózási szint - Mux multiplexelés bekapcsolása + Mux Multiplexing bekapcsolása v2rayN beállítások - Hitelesítő jelszó + Hitelesítési jelszó - Testreszabott DNS (több, vesszővel elválasztva (,)) + Egyéni DNS (több, vesszővel (,) elválasztva) Win10 UWP Loopback beállítása @@ -733,34 +733,34 @@ Sniffing bekapcsolása - Keverék Port + Vegyes port - Indításkor indítani + Indítás rendszerindításkor - Statisztikák engedélyezése (indítás szükséges) + Forgalmi statisztikák engedélyezése (újraindítást igényel) - Előfizetés átalakító URL + Előfizetés konverziós URL - Rendszer proxy beállítások + Rendszerproxy beállítások Biztonsági protokoll TLS v1.3 engedélyezése (előfizetés/frissítés) - A tálcán megjelenő menü szerverek megjelenítési korlátozása + Tálca jobb egérgombos menü konfigurációk megjelenítési limitje UDP engedélyezése - Hitelesítő felhasználó + Hitelesítési felhasználó - Rendszer proxy törlése + Rendszerproxy törlése GUI megjelenítése @@ -769,40 +769,40 @@ Globális gyorsbillentyű beállítások - Állítsa be közvetlenül a billentyűzet megnyomásával, indítás után érvényes + Közvetlenül beállítható billentyűnyomással; újraindítás után lép életbe - Ne változtassa meg a rendszer proxy-t + Ne változtassa meg a rendszerproxyt Visszaállítás - Rendszer proxy beállítása + Rendszerproxy beállítása - PAC módban + PAC mód - Megosztási szerver (Ctrl+F) + Konfiguráció megosztása (Ctrl+F) - Útvonal + Útválasztás - Nem adminisztrátorként fut + Nem rendszergazdaként fut - Futtatás adminisztrátorként + Futtatás rendszergazdaként - Áthelyezés a végére (B) + Mozgatás alulra (B) Le (D) - Áthelyezés a tetejére (T) + Mozgatás felülre (T) Fel (U) @@ -817,28 +817,28 @@ Hozzáadás - Fejlett szabályok importálása + Szabályok importálása - Kiválasztott eltávolítása (Törlés) + Kijelölt eltávolítása (Delete) - Aktív szabályként beállítása (Enter) + Beállítás aktív szabályként (Enter) - Domain illesztő + Tartomány illesztő - Domain stratégia + Tartomány stratégia - Előre definiált szabálykészletlista + Előre definiált szabálykészlet lista - * Állítsa be a szabályokat, vesszővel elválasztva (,); A reguláris kifejezésben a vesszőt <COMMA> -ra cseréli + *Szabályok elválasztása vesszővel (,); Szó szerinti vesszőhöz használja a <COMMA>-t; Előtag # a szabály figyelmen kívül hagyásához - Szabályok importálása a vágólapról + Szabályok importálása vágólapról Szabályok importálása fájlból @@ -847,61 +847,61 @@ Szabályok importálása előfizetési URL-ből - Szabálybeállítások + Szabály beállítások Szabály hozzáadása - Kiválasztott szabályok exportálása + Kijelölt szabályok exportálása Szabálylista - Szabály eltávolítása (Törlés) + Szabály eltávolítása (Delete) - RoutingRuleDetailsSetting + Útválasztási szabály részleteinek beállítása - Domain, ip, folyamat automatikusan rendezve lesz a mentés során + Tartomány, IP, folyamat automatikusan rendeződik mentéskor - Szabály objektum dokumentáció + Szabály objektum dokumentum - Támogatja a DnsObject, kattintson a dokumentum megtekintésére + Támogatja a DNS objektumot; Kattintson a dokumentáció megtekintéséhez - Csoporthoz, kérlek, hagyd üresen ezt a mezőt + Csoport esetén hagyja üresen - Útvonal beállítása megváltozott + Útválasztási beállítás megváltozott - Rendszer proxy beállítása megváltozott + Rendszerproxy beállítás megváltozott - Csak útvonal + Csak útválasztás - Ne használjon proxy szervert a helyi (intranet) címekhez + Ne használjon proxy szervert helyi (intranet) címekhez - Egy kattintásos több teszt késleltetés és sebesség (Ctrl+E) + Egykattintásos többszörös késleltetés és sebesség teszt (Ctrl+E) - Késleltetés(ms) + Késleltetés (ms) - Sebesség(M/s) + Sebesség (M/s) - Nem sikerült futtatni a Core-t, kérlek, nézd meg a naplót + Nem sikerült futtatni a Core-t, kérjük, ellenőrizze a prompt információt - Megjegyzések reguláris szűrő + Megjegyzések reguláris szűrője Napló megjelenítése @@ -913,61 +913,61 @@ Új port a LAN-hoz - TunMode beállítások + Tun mód beállítások - Áthelyezés csoporthoz + Mozgatás csoportba - Proxy Drag Drop Szortírozás engedélyezése (indítás szükséges) + Konfigurációk rendezésének engedélyezése húzással (újraindítást igényel) - AutoFrissítés + Automatikus frissítés Teszt kihagyása - Szerver szerkesztése (Ctrl+D) + Konfiguráció szerkesztése (Ctrl+D) - Kattintson duplán a szerver aktiválásához + Dupla kattintás a konfigurációra aktiválja - A teszt befejeződött + Teszt befejeződött Alapértelmezett TLS ujjlenyomat - Felhasználói ügynök + User-Agent Ez a paraméter csak tcp/http és ws esetén érvényes - Betűcsalád (indítás szükséges) + Betűtípus (újraindítást igényel) - Kérlek, másold a betűtípus TTF/TTC fájlt a guiFonts könyvtárba, indítsd újra a beállításokat + Másolja a TTF/TTC betűtípus fájlt a gui Fonts könyvtárba; Nyissa meg újra a beállítások ablakot Pac port = +3; Xray API port = +4; mihomo API port = +5; - Állítsd be ezt admin jogokkal, indítás után szerezd meg az admin jogokat + Rendszergazdai jogosultságokkal állítsa be, indítás után szerezzen rendszergazdai jogosultságokat Betűméret - SpeedTest egyéni időtúllépési érték + Sebességteszt egyszeri időtúllépési érték - SpeedTest URL + Sebességteszt URL - Feljebb és lejjebb mozgatás + Mozgatás fel és le Nyilvános kulcs @@ -976,40 +976,40 @@ Rövid azonosító - SpiderX + Spider X - Hardveres gyorsítás engedélyezése (indítás szükséges) + Hardveres gyorsítás engedélyezése (újraindítást igényel) - Várakozás a tesztelésre (nyomj ESC-t a leállításhoz)... + Tesztelésre vár (ESC megnyomásával megszakítható)... - Kérlek, kapcsold ki, ha szokatlan megszakítás történt + Kérjük, kapcsolja ki rendellenes megszakadás esetén - A frissítések nincsenek aktiválva, átugorva ez az előfizetés + A frissítések nincsenek engedélyezve, kihagyja ezt az előfizetést - Újraindítás adminisztrátorként + Újraindítás rendszergazdaként - Több URL, vesszővel elválasztva; Az előfizetés átalakítása érvénytelen lesz + További URL-ek, vesszővel elválasztva; Az előfizetés konverzió érvénytelen lesz {0} : {1}/s↑ | {2}/s↓ - Automatikus frissítési időköz (perc) + Automatikus frissítési intervallum (percek) - Napló engedélyezése fájlba + Naplózás engedélyezése fájlba - Átalakítási cél típusa + Konverziós cél típus - Kérlek, hagyd üresen, ha nincs szükség átalakításra + Kérjük, hagyja üresen, ha nincs szükség konverzióra DNS beállítások @@ -1018,115 +1018,115 @@ sing-box DNS beállítások - Kérlek, töltsd ki a DNS struktúrát, kattints a dokumentum megtekintésére + Kérjük, töltse ki a DNS struktúrát, kattintson a dokumentum megtekintéséhez - Kattints az alapértelmezett DNS konfiguráció importálásához + Kattintson az alapértelmezett DNS konfiguráció importálásához - sing-box domain stratégia + sing-box tartomány stratégia sing-box Mux protokoll - Teljes folyamat neve (Tun módban) + Teljes folyamatnév (Tun mód) IP vagy IP CIDR - Domain + Tartomány - [Hysteria2] szerver hozzáadása + Hysteria2 konfiguráció hozzáadása - Hysteria maximális sávszélesség (Felfelé/Letöltés) + Hysteria Max sávszélesség (Fel/Le) - Rendszer gazdagépeket használ + Rendszer Hosts használata - [TUIC] szerver hozzáadása + TUIC konfiguráció hozzáadása - Befogadó irányítás + Torlódásvezérlés - Előző proxy megjegyzések + Előző proxy konfiguráció megjegyzései - Következő proxy megjegyzések + Következő proxy konfiguráció megjegyzései - Kérlek, győződj meg róla, hogy a megjegyzés létezik és egyedi + Kérjük, győződjön meg arról, hogy a konfigurációs megjegyzések léteznek és egyediek - Kiegészítő bejövő engedélyezése + További bejövő engedélyezése IPv6 cím engedélyezése - [WireGuard] szerver hozzáadása + WireGuard konfiguráció hozzáadása Privát kulcs - Fenntartva (2,3,4) + Fenntartott (2,3,4) - Cím (Ipv4,Ipv6) + Cím (IPv4, IPv6) obfs jelszó - (Domain vagy IP vagy ProcName) és Port és Protokoll és InboundTag => OutboundTag + (Tartomány vagy IP vagy folyamatnév) és port és protokoll és bejövő címke => kimenő címke Automatikus görgetés a végére - Speed Ping Test URL + Sebesség Ping Teszt URL - Előfizetés frissítése, csak akkor határozd meg, ha a megjegyzések léteznek + Előfizetés frissítése, csak a megjegyzések létezésének ellenőrzése - A teszt leállítása... + Teszt megszakítása... - *grpc Hatóság + *grpc Authority - [HTTP] szerver hozzáadása + HTTP konfiguráció hozzáadása - Használja az Xray-t és engedélyezze a nem-Tun módot, amely összeférhet a csoport előző proxy-jával + Használja az Xray-t és engedélyezze a nem Tun módot, ami ütközik a csoport előző proxyjával - Fragmentum engedélyezése + Fragment engedélyezése - Cache fájl engedélyezése a sing-box számára (szabálykészlet fájlok) + Gyorsítótár fájl engedélyezése sing-boxhoz (szabálykészlet fájlok) - Testreszabott a sing-box szabálykészletének + A sing-box szabálykészletének testreszabása - Sikeres művelet. Kattintson a beállítási menüre az alkalmazás újraindításához. + Sikeres művelet. Kattintson a beállítások menüre az alkalmazás újraindításához. - Megnyitja a tárolás helyét + Fájl helyének megnyitása Rendezés - Zárlat + Lánc Alapértelmezett @@ -1141,7 +1141,7 @@ Letöltési forgalom - Gazda + Host Név @@ -1171,7 +1171,7 @@ Összes kapcsolat bezárása - Proxy-k + Proxyk Szabály mód @@ -1183,7 +1183,7 @@ Globális - Ne változtasson + Ne változtassa meg Szabály @@ -1195,49 +1195,49 @@ Részleges csomópont késleltetés teszt - Proxy-k frissítése + Proxyk frissítése Aktív csomópont kiválasztása (Enter) - Alapértelmezett domain stratégia a kimenő forgalomhoz + Alapértelmezett tartomány stratégia kimenő forgalomhoz - Fő elrendezés irányítása (indítás szükséges) + Fő elrendezés iránya (újraindítást igényel) Kimenő DNS cím - Oszlop szélesség automatikus beállítása + Oszlopszélesség automatikus beállítása - Exportálja a Base64-kódolt megosztási linkeket a vágólapra + Base64-kódolt megosztási linkek exportálása vágólapra - Kiválasztott szerver exportálása teljes konfigurációval a vágólapra + Kijelölt konfiguráció exportálása teljes konfigurációként a vágólapra - Fő ablak megjelenítése vagy elrejtése + Főablak megjelenítése vagy elrejtése - Testreszabott konfigurációs socks port + Egyéni konfiguráció socks portja Biztonsági mentés és visszaállítás - Biztonsági mentés helyben + Biztonsági mentés helyi tárolóba - Visszaállítás helyben + Visszaállítás helyi tárolóból - Biztonsági mentés távolról (WebDAV) + Biztonsági mentés távoli helyre (WebDAV) - Visszaállítás távolról (WebDAV) + Visszaállítás távoli helyről (WebDAV) Helyi @@ -1246,25 +1246,25 @@ Távoli (WebDAV) - WebDav URL + WebDAV URL - WebDav Felhasználónév + WebDAV felhasználónév - WebDav Jelszó + WebDAV jelszó - WebDav Ellenőrzés + WebDAV ellenőrzés Távoli mappa neve (opcionális) - Érvénytelen mentési fájl + Érvénytelen biztonsági mentés fájl - Gazda szűrő + Host szűrő Aktív @@ -1276,13 +1276,13 @@ sing-box szabálykészlet fájlok forrása (opcionális) - UpgradeApp nem létezik + Frissítő alkalmazás nem létezik - Útvonal szabályok forrása (opcionális) + Útválasztási szabályok forrása (opcionális) - Regionális előbeállítások beállítása + Regionális előbeállítások Alapértelmezett @@ -1294,22 +1294,22 @@ Irán - A Kínában élő felhasználók figyelmen kívül hagyhatják ezt a tételt + Kínai régióban lévő felhasználók figyelmen kívül hagyhatják ezt az elemet - QR kód beolvasása a képen + QR kód beolvasása a képből - Érvénytelen cím (Url) + Érvénytelen cím (URL) - Kérlek, ne használd a nem biztonságos HTTP protokollt az előfizetés címeknél + Kérjük, ne használjon nem biztonságos HTTP protokoll előfizetési címet - Telepítsd a betűtípust a rendszerbe és indítsd újra a beállításokat + Telepítse a betűtípust a rendszerbe, válassza ki vagy töltse ki a betűtípus nevét, indítsa újra a beállításokat - Biztosan ki akarsz lépni? + Biztosan ki akar lépni? Megjegyzések @@ -1318,84 +1318,84 @@ Rendszer sudo jelszó - The password will be validated via the command line. If a validation error causes the application to malfunction, please restart the application. The password will not be stored and must be entered again after each restart. + A jelszót a parancssoron keresztül ellenőrizzük. Ha egy érvényesítési hiba miatt az alkalmazás hibásan működik, indítsa újra az alkalmazást. A jelszó nem kerül tárolásra, és minden újraindítás után újra meg kell adni. *xhttp mód - XHTTP További nyers JSON, formátum: { XHTTPObject } + XHTTP Extra nyers JSON, formátum: { XHTTP Objektum } - Minimálás tálcára ablak zárásakor + Ablak bezárásakor a tálcára rejtés - The number of concurrent during multi-test + A párhuzamos tesztek száma több teszt során - Kivétel. Ne használj proxy szervert a címeknél, évezz pontosvesszőt (,) + Kivételek: Ne használjon proxy szervert a következő címekhez. Vesszővel (,) válassza el a bejegyzéseket. - Sniffing type + Sniffing típus - Enable second mixed port + Második vegyes port engedélyezése - socks: local port, socks2: second local port, socks3: LAN port + socks: helyi port, socks2: második helyi port, socks3: LAN port - Theme + Téma - Copy proxy command to clipboard + Proxy parancs másolása vágólapra - Starting retesting failed parts, {0} remaining. Press ESC to terminate... + Sikertelen részek újratesztelése elindult, {0} maradt. ESC megnyomásával megszakítható... - By test result + Teszt eredmény szerint - Remove invalid by test results + Érvénytelenek eltávolítása teszteredmények alapján - Removed {0} invalid test results. + Eltávolítva {0} érvénytelen teszteredmény. - Server port range + Konfigurációs port tartomány - Will cover the port, separate with commas (,) + A portot lefedi, vesszővel (,) elválasztva - Multi-server to custom configuration + Több konfiguráció egyéni konfigurációra - Multi-server Random by Xray + Több konfiguráció véletlenszerűen Xray szerint - Multi-server RoundRobin by Xray + Több konfiguráció RoundRobin Xray szerint - Multi-server LeastPing by Xray + Több konfiguráció legkisebb pinggel Xray szerint - Multi-server LeastLoad by Xray + Több konfiguráció legkisebb terheléssel Xray szerint - Multi-server LeastPing by sing-box + Több konfiguráció legkisebb pinggel sing-box szerint - Export server + Konfiguráció exportálása - Current connection info test URL + Aktuális kapcsolat info teszt URL - Can fill in the configuration remarks, please make sure it exist and are unique + Kitöltheti a konfigurációs megjegyzéseket, kérjük, győződjön meg róla, hogy létezik és egyedi - Incorrect password, please try again. + Helytelen jelszó, próbálja újra. - \ No newline at end of file + From d820c4367ea945a3a982b7ca91411b5a024e4b6c Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 3 Aug 2025 10:34:21 +0800 Subject: [PATCH 017/115] =?UTF-8?q?Add=20Mldsa65Verify=EF=BC=8CXray-core?= =?UTF-8?q?=20v25.7.26+?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/XTLS/Xray-core/pull/4915 --- v2rayN/ServiceLib/Handler/ConfigHandler.cs | 1 + v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs | 5 +++++ v2rayN/ServiceLib/Models/ProfileItem.cs | 1 + v2rayN/ServiceLib/Models/V2rayConfig.cs | 1 + v2rayN/ServiceLib/Resx/ResUI.Designer.cs | 9 +++++++++ v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx | 3 +++ v2rayN/ServiceLib/Resx/ResUI.hu.resx | 5 ++++- v2rayN/ServiceLib/Resx/ResUI.resx | 3 +++ v2rayN/ServiceLib/Resx/ResUI.ru.resx | 3 +++ v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx | 3 +++ v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx | 3 +++ .../CoreConfig/CoreConfigV2rayService.cs | 1 + .../v2rayN.Desktop/Views/AddServerWindow.axaml | 16 +++++++++++++++- .../Views/AddServerWindow.axaml.cs | 1 + v2rayN/v2rayN/Views/AddServerWindow.xaml | 17 +++++++++++++++++ v2rayN/v2rayN/Views/AddServerWindow.xaml.cs | 1 + 16 files changed, 71 insertions(+), 2 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/ConfigHandler.cs b/v2rayN/ServiceLib/Handler/ConfigHandler.cs index c08ca28e..0eeadc46 100644 --- a/v2rayN/ServiceLib/Handler/ConfigHandler.cs +++ b/v2rayN/ServiceLib/Handler/ConfigHandler.cs @@ -246,6 +246,7 @@ public class ConfigHandler item.PublicKey = profileItem.PublicKey; item.ShortId = profileItem.ShortId; item.SpiderX = profileItem.SpiderX; + item.Mldsa65Verify = profileItem.Mldsa65Verify; item.Extra = profileItem.Extra; item.MuxEnabled = profileItem.MuxEnabled; } diff --git a/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs b/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs index 86b92fa0..fa84a411 100644 --- a/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs +++ b/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs @@ -59,6 +59,10 @@ public class BaseFmt { dicQuery.Add("spx", Utils.UrlEncode(item.SpiderX)); } + if (item.Mldsa65Verify.IsNotEmpty()) + { + dicQuery.Add("pqv", Utils.UrlEncode(item.Mldsa65Verify)); + } if (item.AllowInsecure.Equals("true")) { dicQuery.Add("allowInsecure", "1"); @@ -159,6 +163,7 @@ public class BaseFmt item.PublicKey = Utils.UrlDecode(query["pbk"] ?? ""); item.ShortId = Utils.UrlDecode(query["sid"] ?? ""); item.SpiderX = Utils.UrlDecode(query["spx"] ?? ""); + item.Mldsa65Verify = Utils.UrlDecode(query["pqv"] ?? ""); item.AllowInsecure = (query["allowInsecure"] ?? "") == "1" ? "true" : ""; item.Network = query["type"] ?? nameof(ETransport.tcp); diff --git a/v2rayN/ServiceLib/Models/ProfileItem.cs b/v2rayN/ServiceLib/Models/ProfileItem.cs index 077bc4b2..998aa120 100644 --- a/v2rayN/ServiceLib/Models/ProfileItem.cs +++ b/v2rayN/ServiceLib/Models/ProfileItem.cs @@ -93,6 +93,7 @@ public class ProfileItem : ReactiveObject public string PublicKey { get; set; } public string ShortId { get; set; } public string SpiderX { get; set; } + public string Mldsa65Verify { get; set; } public string Extra { get; set; } public bool? MuxEnabled { get; set; } } diff --git a/v2rayN/ServiceLib/Models/V2rayConfig.cs b/v2rayN/ServiceLib/Models/V2rayConfig.cs index 2e5ed4b4..e7cd3722 100644 --- a/v2rayN/ServiceLib/Models/V2rayConfig.cs +++ b/v2rayN/ServiceLib/Models/V2rayConfig.cs @@ -340,6 +340,7 @@ public class TlsSettings4Ray public string? publicKey { get; set; } public string? shortId { get; set; } public string? spiderX { get; set; } + public string? mldsa65Verify { get; set; } } public class TcpSettings4Ray diff --git a/v2rayN/ServiceLib/Resx/ResUI.Designer.cs b/v2rayN/ServiceLib/Resx/ResUI.Designer.cs index 23469763..992adb94 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.Designer.cs +++ b/v2rayN/ServiceLib/Resx/ResUI.Designer.cs @@ -2517,6 +2517,15 @@ namespace ServiceLib.Resx { } } + /// + /// 查找类似 Mldsa65Verify 的本地化字符串。 + /// + public static string TbMldsa65Verify { + get { + return ResourceManager.GetString("TbMldsa65Verify", resourceCulture); + } + } + /// /// 查找类似 Transport protocol(network) 的本地化字符串。 /// diff --git a/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx b/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx index 1f05cf8f..eb9ae271 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx @@ -1398,4 +1398,7 @@ Incorrect password, please try again. + + Mldsa65Verify + \ No newline at end of file diff --git a/v2rayN/ServiceLib/Resx/ResUI.hu.resx b/v2rayN/ServiceLib/Resx/ResUI.hu.resx index d7fd9fd3..0d45540e 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.hu.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.hu.resx @@ -1398,4 +1398,7 @@ Helytelen jelszó, próbálja újra. - + + Mldsa65Verify + + \ No newline at end of file diff --git a/v2rayN/ServiceLib/Resx/ResUI.resx b/v2rayN/ServiceLib/Resx/ResUI.resx index 2826c9cc..03e9b124 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.resx @@ -1398,4 +1398,7 @@ Incorrect password, please try again. + + Mldsa65Verify + \ No newline at end of file diff --git a/v2rayN/ServiceLib/Resx/ResUI.ru.resx b/v2rayN/ServiceLib/Resx/ResUI.ru.resx index a4d82127..75a596aa 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.ru.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.ru.resx @@ -1398,4 +1398,7 @@ Incorrect password, please try again. + + Mldsa65Verify + \ No newline at end of file diff --git a/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx b/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx index 55186822..8766ca8f 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx @@ -1395,4 +1395,7 @@ 密码错误,请重试。 + + Mldsa65Verify + \ No newline at end of file diff --git a/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx b/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx index cbf27b8c..9c7a2a3c 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx @@ -1395,4 +1395,7 @@ 密碼錯誤,請重試。 + + Mldsa65Verify + \ No newline at end of file diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs index 9be1acf0..2e4f5842 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs @@ -944,6 +944,7 @@ public class CoreConfigV2rayService publicKey = node.PublicKey, shortId = node.ShortId, spiderX = node.SpiderX, + mldsa65Verify = node.Mldsa65Verify, show = false, }; diff --git a/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml b/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml index ad30f985..da56d617 100644 --- a/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml +++ b/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml @@ -753,7 +753,7 @@ Grid.Row="7" ColumnDefinitions="180,Auto" IsVisible="False" - RowDefinitions="Auto,Auto,Auto,Auto,Auto"> + RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto"> + + + diff --git a/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs index 5b86143b..3adef603 100644 --- a/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs @@ -185,6 +185,7 @@ public partial class AddServerWindow : WindowBase this.Bind(ViewModel, vm => vm.SelectedSource.PublicKey, v => v.txtPublicKey.Text).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.SelectedSource.ShortId, v => v.txtShortId.Text).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.SelectedSource.SpiderX, v => v.txtSpiderX.Text).DisposeWith(disposables); + this.Bind(ViewModel, vm => vm.SelectedSource.Mldsa65Verify, v => v.txtMldsa65Verify.Text).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); }); diff --git a/v2rayN/v2rayN/Views/AddServerWindow.xaml b/v2rayN/v2rayN/Views/AddServerWindow.xaml index 3b7be680..9a4b88ad 100644 --- a/v2rayN/v2rayN/Views/AddServerWindow.xaml +++ b/v2rayN/v2rayN/Views/AddServerWindow.xaml @@ -979,6 +979,7 @@ + @@ -1064,6 +1065,22 @@ Margin="{StaticResource Margin4}" HorizontalAlignment="Left" Style="{StaticResource DefTextBox}" /> + + + vm.SelectedSource.PublicKey, v => v.txtPublicKey.Text).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.SelectedSource.ShortId, v => v.txtShortId.Text).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.SelectedSource.SpiderX, v => v.txtSpiderX.Text).DisposeWith(disposables); + this.Bind(ViewModel, vm => vm.SelectedSource.Mldsa65Verify, v => v.txtMldsa65Verify.Text).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); }); From 6973272dd08b05dd9921291f1f8e49d134ee541c Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 3 Aug 2025 10:49:28 +0800 Subject: [PATCH 018/115] up 7.13.6 --- v2rayN/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/Directory.Build.props b/v2rayN/Directory.Build.props index 484cde47..901b15d8 100644 --- a/v2rayN/Directory.Build.props +++ b/v2rayN/Directory.Build.props @@ -1,7 +1,7 @@ - 7.13.5 + 7.13.6 From 508eb24fc3a8ad03a249332446da98754d005bbe Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 5 Aug 2025 19:31:48 +0800 Subject: [PATCH 019/115] Temporary addition to support proper use of sing-box v1.12 https://github.com/2dust/v2rayN/issues/7698 --- v2rayN/ServiceLib/Handler/CoreHandler.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/v2rayN/ServiceLib/Handler/CoreHandler.cs b/v2rayN/ServiceLib/Handler/CoreHandler.cs index f0c23c69..a0e20d07 100644 --- a/v2rayN/ServiceLib/Handler/CoreHandler.cs +++ b/v2rayN/ServiceLib/Handler/CoreHandler.cs @@ -25,6 +25,8 @@ public class CoreHandler Environment.SetEnvironmentVariable(Global.V2RayLocalAsset, Utils.GetBinPath(""), EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable(Global.XrayLocalAsset, Utils.GetBinPath(""), EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable(Global.XrayLocalCert, Utils.GetBinPath(""), EnvironmentVariableTarget.Process); + // TODO Temporary addition to support proper use of sing-box v1.12 + Environment.SetEnvironmentVariable("ENABLE_DEPRECATED_SPECIAL_OUTBOUNDS", "true", EnvironmentVariableTarget.Process); //Copy the bin folder to the storage location (for init) if (Environment.GetEnvironmentVariable(Global.LocalAppData) == "1") From 610418b42b40ab59ad73538df1a797b219a13189 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:01:06 +0800 Subject: [PATCH 020/115] In the Desktop version, the information box uses SelectableTextBlock to replace TextBox https://github.com/2dust/v2rayN/issues/7644 --- .../ViewModels/ThemeSettingViewModel.cs | 2 + v2rayN/v2rayN.Desktop/Views/MsgView.axaml | 59 ++++++++++--------- v2rayN/v2rayN.Desktop/Views/MsgView.axaml.cs | 8 ++- 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/v2rayN/v2rayN.Desktop/ViewModels/ThemeSettingViewModel.cs b/v2rayN/v2rayN.Desktop/ViewModels/ThemeSettingViewModel.cs index ea1a3b66..877a3b4f 100644 --- a/v2rayN/v2rayN.Desktop/ViewModels/ThemeSettingViewModel.cs +++ b/v2rayN/v2rayN.Desktop/ViewModels/ThemeSettingViewModel.cs @@ -107,6 +107,7 @@ public class ThemeSettingViewModel : MyReactiveObject x.OfType