mirror of
https://github.com/2dust/v2rayN.git
synced 2026-07-27 10:22:06 +03:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcf6c1e3ae | ||
|
|
ab907e371b | ||
|
|
ef4dda0996 | ||
|
|
f2e0bd4eba | ||
|
|
bca07f801d | ||
|
|
54a3388c99 | ||
|
|
5140954b37 | ||
|
|
c7efe39e1c |
@@ -22,7 +22,17 @@ cat >"$PackagePath/v2rayN.app/Contents/Info.plist" <<-EOF
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<string>en</string>
|
||||
<key>CFBundleLocalizations</key>
|
||||
<array>
|
||||
<string>zh-Hans</string>
|
||||
<string>zh-Hant</string>
|
||||
<string>en</string>
|
||||
<string>fa</string>
|
||||
<string>fr</string>
|
||||
<string>ru</string>
|
||||
<string>hu</string>
|
||||
</array>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>v2rayN</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>7.22.4</Version>
|
||||
<Version>7.22.5</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
||||
@@ -34,6 +34,6 @@
|
||||
<PackageVersion Include="xunit.v3" Version="3.2.2" />
|
||||
<PackageVersion Include="YamlDotNet" Version="17.1.0" />
|
||||
<PackageVersion Include="ZXing.Net.Bindings.SkiaSharp" Version="0.16.22" />
|
||||
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="3.119.4-preview.1.1" />
|
||||
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="3.119.4" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -685,15 +685,15 @@ public class Global
|
||||
{ "one.one.one.one", ["1.1.1.1", "1.0.0.1", "2606:4700:4700::1111", "2606:4700:4700::1001"] },
|
||||
{ "1dot1dot1dot1.cloudflare-dns.com", ["1.1.1.1", "1.0.0.1", "2606:4700:4700::1111", "2606:4700:4700::1001"] },
|
||||
{ "cloudflare-dns.com", ["104.16.249.249", "104.16.248.249", "2606:4700::6810:f8f9", "2606:4700::6810:f9f9"] },
|
||||
{ "dns.cloudflare.com", ["104.16.132.229", "104.16.133.229", "2606:4700::6810:84e5", "2606:4700::6810:85e5"] },
|
||||
{ "dns.cloudflare.com", ["162.159.61.8", "172.64.41.8", "2a06:98c1:52::8", "2803:f800:53::8"] },
|
||||
{ "dot.pub", ["1.12.12.12", "120.53.53.53"] },
|
||||
{ "doh.pub", ["1.12.12.12", "120.53.53.53"] },
|
||||
{ "dns.quad9.net", ["9.9.9.9", "149.112.112.112", "2620:fe::fe", "2620:fe::9"] },
|
||||
{ "dns.yandex.net", ["77.88.8.8", "77.88.8.1", "2a02:6b8::feed:0ff", "2a02:6b8:0:1::feed:0ff"] },
|
||||
{ "dns.sb", ["185.222.222.222", "2a09::"] },
|
||||
{ "dns.sb", ["45.11.45.11", "185.222.222.222", "2a09::", "2a11::"] },
|
||||
{ "dns.umbrella.com", ["208.67.220.220", "208.67.222.222", "2620:119:35::35", "2620:119:53::53"] },
|
||||
{ "dns.sse.cisco.com", ["208.67.220.220", "208.67.222.222", "2620:119:35::35", "2620:119:53::53"] },
|
||||
{ "engage.cloudflareclient.com", ["162.159.192.1"] }
|
||||
{ "engage.cloudflareclient.com", ["162.159.192.1", "2606:4700:d0::a29f:c001"] }
|
||||
};
|
||||
|
||||
public static readonly List<string> ExpectedIPs =
|
||||
|
||||
@@ -134,6 +134,12 @@ public class NodeValidator
|
||||
{
|
||||
v.Error(string.Format(ResUI.MsgInvalidProperty, "TLS Certificate"));
|
||||
}
|
||||
|
||||
// Check for deprecated allowInsecure property when TLS is enabled
|
||||
if (item.AllowInsecure == "true")
|
||||
{
|
||||
v.Warning(ResUI.MsgAllowInsecureDeprecated);
|
||||
}
|
||||
}
|
||||
|
||||
if (item.StreamSecurity == Global.StreamSecurityReality)
|
||||
|
||||
@@ -113,6 +113,7 @@ public sealed class CoreInfoManager
|
||||
DownloadUrlLinux64 = urlN + "/download/{0}/v2rayN-linux-64.zip",
|
||||
DownloadUrlLinuxArm64 = urlN + "/download/{0}/v2rayN-linux-arm64.zip",
|
||||
DownloadUrlLinuxRiscV64 = urlN + "/download/{0}/v2rayN-linux-riscv64.zip",
|
||||
DownloadUrlLinuxLoong64 = urlN + "/download/{0}/v2rayN-linux-loong64.zip",
|
||||
DownloadUrlOSX64 = urlN + "/download/{0}/v2rayN-macos-64.zip",
|
||||
DownloadUrlOSXArm64 = urlN + "/download/{0}/v2rayN-macos-arm64.zip",
|
||||
},
|
||||
@@ -157,6 +158,7 @@ public sealed class CoreInfoManager
|
||||
DownloadUrlLinux64 = urlXray + "/download/{0}/Xray-linux-64.zip",
|
||||
DownloadUrlLinuxArm64 = urlXray + "/download/{0}/Xray-linux-arm64-v8a.zip",
|
||||
DownloadUrlLinuxRiscV64 = urlXray + "/download/{0}/Xray-linux-riscv64.zip",
|
||||
DownloadUrlLinuxLoong64 = urlXray + "/download/{0}/Xray-linux-loong64.zip",
|
||||
DownloadUrlOSX64 = urlXray + "/download/{0}/Xray-macos-64.zip",
|
||||
DownloadUrlOSXArm64 = urlXray + "/download/{0}/Xray-macos-arm64-v8a.zip",
|
||||
Match = "Xray",
|
||||
@@ -180,6 +182,7 @@ public sealed class CoreInfoManager
|
||||
DownloadUrlLinux64 = urlMihomo + "/download/{0}/mihomo-linux-amd64-v1-{0}.gz",
|
||||
DownloadUrlLinuxArm64 = urlMihomo + "/download/{0}/mihomo-linux-arm64-{0}.gz",
|
||||
DownloadUrlLinuxRiscV64 = urlMihomo + "/download/{0}/mihomo-linux-riscv64-{0}.gz",
|
||||
DownloadUrlLinuxLoong64 = urlMihomo + "/download/{0}/mihomo-linux-loong64-abi2-{0}.gz",
|
||||
DownloadUrlOSX64 = urlMihomo + "/download/{0}/mihomo-darwin-amd64-v1-{0}.gz",
|
||||
DownloadUrlOSXArm64 = urlMihomo + "/download/{0}/mihomo-darwin-arm64-{0}.gz",
|
||||
Match = "Mihomo",
|
||||
@@ -223,6 +226,7 @@ public sealed class CoreInfoManager
|
||||
DownloadUrlLinux64 = urlSingbox + "/download/{0}/sing-box-{1}-linux-amd64.tar.gz",
|
||||
DownloadUrlLinuxArm64 = urlSingbox + "/download/{0}/sing-box-{1}-linux-arm64.tar.gz",
|
||||
DownloadUrlLinuxRiscV64 = urlSingbox + "/download/{0}/sing-box-{1}-linux-riscv64.tar.gz",
|
||||
DownloadUrlLinuxLoong64 = urlSingbox + "/download/{0}/sing-box-{1}-linux-loong64.tar.gz",
|
||||
DownloadUrlOSX64 = urlSingbox + "/download/{0}/sing-box-{1}-darwin-amd64.tar.gz",
|
||||
DownloadUrlOSXArm64 = urlSingbox + "/download/{0}/sing-box-{1}-darwin-arm64.tar.gz",
|
||||
Match = "sing-box",
|
||||
@@ -314,6 +318,7 @@ public sealed class CoreInfoManager
|
||||
names.Add("mihomo-linux-amd64");
|
||||
names.Add("mihomo-linux-arm64");
|
||||
names.Add("mihomo-linux-riscv64");
|
||||
names.Add("mihomo-linux-loong64-abi2");
|
||||
}
|
||||
else if (Utils.IsMacOS())
|
||||
{
|
||||
|
||||
@@ -13,6 +13,7 @@ public class CoreInfo
|
||||
public string? DownloadUrlLinux64 { get; set; }
|
||||
public string? DownloadUrlLinuxArm64 { get; set; }
|
||||
public string? DownloadUrlLinuxRiscV64 { get; set; }
|
||||
public string? DownloadUrlLinuxLoong64 { get; set; }
|
||||
public string? DownloadUrlOSX64 { get; set; }
|
||||
public string? DownloadUrlOSXArm64 { get; set; }
|
||||
public string? Match { get; set; }
|
||||
|
||||
9
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
9
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
@@ -1914,6 +1914,15 @@ namespace ServiceLib.Resx {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Warning: Xray will disable allowInsecure (skip certificate verification) in August 2026. Please switch to pinnedPeerCertSha256 (fixed certificate fingerprint) as soon as possible. allowInsecure will not be usable after its expiration. 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string MsgAllowInsecureDeprecated {
|
||||
get {
|
||||
return ResourceManager.GetString("MsgAllowInsecureDeprecated", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 {0} has a new version available: {1} 的本地化字符串。
|
||||
/// </summary>
|
||||
|
||||
@@ -1675,7 +1675,7 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||
<value>Ajouter [NaïveProxy]</value>
|
||||
</data>
|
||||
<data name="TbInsecureConcurrency" xml:space="preserve">
|
||||
<value>Insecure Concurrency</value>
|
||||
<value>Concurrence non sûre</value>
|
||||
</data>
|
||||
<data name="TbUsername" xml:space="preserve">
|
||||
<value>Nom d’utilisateur</value>
|
||||
@@ -1699,10 +1699,10 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||
<value>Allow insecure cert fetch (self-signed)</value>
|
||||
</data>
|
||||
<data name="TbAllowInsecureCertFetchTips" xml:space="preserve">
|
||||
<value>Only for fetching self-signed certificates. This may expose you to MITM risks.</value>
|
||||
<value>Pour obtenir des certificats auto-signés uniquement. Risque MITM.</value>
|
||||
</data>
|
||||
<data name="TbSettingsSendThrough" xml:space="preserve">
|
||||
<value>Adresse sortante locale (SendThrough)</value>
|
||||
<value>Adresse de sortie locale (SendThrough)</value>
|
||||
</data>
|
||||
<data name="TbSettingsSendThroughTip" xml:space="preserve">
|
||||
<value>Pour environnements multi-interfaces, entrez l'adresse IPv4 de la machine locale</value>
|
||||
@@ -1717,30 +1717,30 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||
<value>Pour les environnements multi-interfaces, entrez le nom de l'interface à lier. Ne fonctionne que sur les systèmes Windows et en mode TUN</value>
|
||||
</data>
|
||||
<data name="menuUdpTestServer" xml:space="preserve">
|
||||
<value>Test Configurations UDP Delay</value>
|
||||
<value>Tester la latence UDP des profils</value>
|
||||
</data>
|
||||
<data name="TbSettingsUdpTestUrl" xml:space="preserve">
|
||||
<value>UDP Test Url</value>
|
||||
<value>URL de test UDP</value>
|
||||
</data>
|
||||
<data name="TbPreSharedKey" xml:space="preserve">
|
||||
<value>PreSharedKey</value>
|
||||
</data>
|
||||
<data name="menuExport2InnerUri" xml:space="preserve">
|
||||
<value>Export v2rayN Internal Share Link to Clipboard</value>
|
||||
<value>Exporter le lien interne v2rayN vers le presse-papiers</value>
|
||||
</data>
|
||||
<data name="MsgCheckUpdateHasNewVersion" xml:space="preserve">
|
||||
<value>{0} has a new version available: {1}</value>
|
||||
<value>{0} a une nouvelle version disponible: {1}</value>
|
||||
</data>
|
||||
<data name="menuCheckOnly" xml:space="preserve">
|
||||
<value>Only Check</value>
|
||||
<value>Uniquement vérifier</value>
|
||||
</data>
|
||||
<data name="MsgNotSupport" xml:space="preserve">
|
||||
<value>Not Support</value>
|
||||
<value>Non supporté</value>
|
||||
</data>
|
||||
<data name="LvTestIpInfo" xml:space="preserve">
|
||||
<value>IP Info</value>
|
||||
<value>Détails IP</value>
|
||||
</data>
|
||||
<data name="menuNewUpdate" xml:space="preserve">
|
||||
<value>New Update</value>
|
||||
<value>Nouvelle MAJ</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1746,4 +1746,7 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||
<data name="menuNewUpdate" xml:space="preserve">
|
||||
<value>New Update</value>
|
||||
</data>
|
||||
<data name="MsgAllowInsecureDeprecated" xml:space="preserve">
|
||||
<value>Warning: Xray will disable allowInsecure (skip certificate verification) in August 2026. Please switch to pinnedPeerCertSha256 (fixed certificate fingerprint) as soon as possible. allowInsecure will not be usable after its expiration.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -121,7 +121,7 @@
|
||||
<value>Ссылка успешно скопирована в буфер обмена</value>
|
||||
</data>
|
||||
<data name="CheckServerSettings" xml:space="preserve">
|
||||
<value>Сначала проверьте настройки сервера</value>
|
||||
<value>Недопустимая конфигурация, проверьте или выберите заново</value>
|
||||
</data>
|
||||
<data name="ConfigurationFormatIncorrect" xml:space="preserve">
|
||||
<value>Недопустимый формат конфигурации</value>
|
||||
@@ -166,7 +166,7 @@
|
||||
<value>Некорректная конфигурация. Проверьте</value>
|
||||
</data>
|
||||
<data name="InitialConfiguration" xml:space="preserve">
|
||||
<value>Исходная конфигурация</value>
|
||||
<value>Инициализация конфигурации</value>
|
||||
</data>
|
||||
<data name="IsLatestCore" xml:space="preserve">
|
||||
<value>{0} {1} является последней версией</value>
|
||||
@@ -256,7 +256,7 @@
|
||||
<value>Операция не удалась, проверьте и повторите попытку</value>
|
||||
</data>
|
||||
<data name="PleaseFillRemarks" xml:space="preserve">
|
||||
<value>Введите примечания</value>
|
||||
<value>Введите псевдоним</value>
|
||||
</data>
|
||||
<data name="PleaseSelectEncryption" xml:space="preserve">
|
||||
<value>Выберите метод шифрования</value>
|
||||
@@ -307,7 +307,7 @@
|
||||
<value>{0}: одно из обязательных полей</value>
|
||||
</data>
|
||||
<data name="LvRemarks" xml:space="preserve">
|
||||
<value>Примечания</value>
|
||||
<value>Псевдоним</value>
|
||||
</data>
|
||||
<data name="LvUrl" xml:space="preserve">
|
||||
<value>URL (необязательно)</value>
|
||||
@@ -334,13 +334,13 @@
|
||||
<value>Введите корректный пользовательский DNS</value>
|
||||
</data>
|
||||
<data name="TransportPathTip1" xml:space="preserve">
|
||||
<value>*Путь ws/http upgrade/xhttp</value>
|
||||
<value>*Путь ws/httpupgrade/xhttp</value>
|
||||
</data>
|
||||
<data name="TransportPathTip2" xml:space="preserve">
|
||||
<value>*HTTP2-путь</value>
|
||||
</data>
|
||||
<data name="TransportPathTip3" xml:space="preserve">
|
||||
<value>*QUIC-ключ / KCP-seed</value>
|
||||
<value>*Ключ шифрования QUIC</value>
|
||||
</data>
|
||||
<data name="TransportPathTip4" xml:space="preserve">
|
||||
<value>Имя сервиса gRPC</value>
|
||||
@@ -349,13 +349,13 @@
|
||||
<value>*http-хосты, разделённые запятыми (,)</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip2" xml:space="preserve">
|
||||
<value>*Хост ws/http upgrade/xhttp</value>
|
||||
<value>*Хост ws/httpupgrade/xhttp</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip3" xml:space="preserve">
|
||||
<value>*HTTP2-хосты, разделённые запятыми (,)</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip4" xml:space="preserve">
|
||||
<value>Безопасность *QUIC</value>
|
||||
<value>*Метод шифрования QUIC</value>
|
||||
</data>
|
||||
<data name="TransportHeaderType1" xml:space="preserve">
|
||||
<value>Тип raw-камуфляжа</value>
|
||||
@@ -400,7 +400,7 @@
|
||||
<value>Фильтр, нажмите Enter для выполнения</value>
|
||||
</data>
|
||||
<data name="menuCheckUpdate" xml:space="preserve">
|
||||
<value>Проверить обновления</value>
|
||||
<value>Обновить</value>
|
||||
</data>
|
||||
<data name="menuClose" xml:space="preserve">
|
||||
<value>Закрыть</value>
|
||||
@@ -415,13 +415,13 @@
|
||||
<value>Помощь</value>
|
||||
</data>
|
||||
<data name="menuOptionSetting" xml:space="preserve">
|
||||
<value>Настройки</value>
|
||||
<value>Параметры</value>
|
||||
</data>
|
||||
<data name="menuPromotion" xml:space="preserve">
|
||||
<value>Продвижение</value>
|
||||
</data>
|
||||
<data name="menuReload" xml:space="preserve">
|
||||
<value>Перезагрузить</value>
|
||||
<value>Перезапустить службу</value>
|
||||
</data>
|
||||
<data name="menuRoutingSetting" xml:space="preserve">
|
||||
<value>Настройки маршрутизации</value>
|
||||
@@ -445,10 +445,10 @@
|
||||
<value>Настройки групп подписки</value>
|
||||
</data>
|
||||
<data name="menuSubUpdate" xml:space="preserve">
|
||||
<value>Обновить подписку без прокси</value>
|
||||
<value>Обновить все подписки без прокси</value>
|
||||
</data>
|
||||
<data name="menuSubUpdateViaProxy" xml:space="preserve">
|
||||
<value>Обновить подписку с прокси</value>
|
||||
<value>Обновить все подписки через прокси</value>
|
||||
</data>
|
||||
<data name="menuSystemproxy" xml:space="preserve">
|
||||
<value>Системный прокси</value>
|
||||
@@ -562,7 +562,7 @@
|
||||
<value>Сортировка</value>
|
||||
</data>
|
||||
<data name="LvUserAgent" xml:space="preserve">
|
||||
<value>User-Agent</value>
|
||||
<value>User-Agent (необязательно)</value>
|
||||
</data>
|
||||
<data name="TbCancel" xml:space="preserve">
|
||||
<value>Отмена</value>
|
||||
@@ -577,7 +577,7 @@
|
||||
<value>Адрес</value>
|
||||
</data>
|
||||
<data name="TbAllowInsecure" xml:space="preserve">
|
||||
<value>Разрешить небезопасные</value>
|
||||
<value>Пропустить проверку сертификата (allowInsecure)</value>
|
||||
</data>
|
||||
<data name="TbAlpn" xml:space="preserve">
|
||||
<value>ALPN</value>
|
||||
@@ -616,10 +616,10 @@
|
||||
<value>TLS</value>
|
||||
</data>
|
||||
<data name="TipNetwork" xml:space="preserve">
|
||||
<value>*По-умолчанию raw</value>
|
||||
<value>*По умолчанию raw; при неверном выборе подключение будет невозможно</value>
|
||||
</data>
|
||||
<data name="TbCoreType" xml:space="preserve">
|
||||
<value>Ядро</value>
|
||||
<value>Тип ядра</value>
|
||||
</data>
|
||||
<data name="TbFlow5" xml:space="preserve">
|
||||
<value>Управление потоком (Flow)</value>
|
||||
@@ -640,7 +640,7 @@
|
||||
<value>Шифрование</value>
|
||||
</data>
|
||||
<data name="TbSecurity4" xml:space="preserve">
|
||||
<value>Пользователь (необязательно)</value>
|
||||
<value>Имя пользователя (необязательно)</value>
|
||||
</data>
|
||||
<data name="TbSecurity5" xml:space="preserve">
|
||||
<value>Шифрование</value>
|
||||
@@ -649,7 +649,7 @@
|
||||
<value>Порт SOCKS</value>
|
||||
</data>
|
||||
<data name="TipPreSocksPort" xml:space="preserve">
|
||||
<value>* После установки этого значения служба SOCKS будет запущена с использованием Xray/sing-box(TUN) для обеспечения таких функций, как отображение скорости</value>
|
||||
<value>*Порт SOCKS пользовательской конфигурации можно не указывать. Если он задан, Xray/sing-box (TUN) дополнительно запустит предварительную службу SOCKS для разделения трафика, отображения скорости и других функций</value>
|
||||
</data>
|
||||
<data name="TbBrowse" xml:space="preserve">
|
||||
<value>Обзор</value>
|
||||
@@ -682,7 +682,7 @@
|
||||
<value>Настройки типа ядра</value>
|
||||
</data>
|
||||
<data name="TbSettingsDefAllowInsecure" xml:space="preserve">
|
||||
<value>Разрешить небезопасные</value>
|
||||
<value>По умолчанию пропускать проверку сертификата (allowInsecure)</value>
|
||||
</data>
|
||||
<data name="TbSettingsDomainStrategy4Freedom" xml:space="preserve">
|
||||
<value>«Freedom»: стратегия обработки доменов исходящего трафика</value>
|
||||
@@ -703,7 +703,7 @@
|
||||
<value>Показывать скорость в реальном времени (требуется перезапуск)</value>
|
||||
</data>
|
||||
<data name="TbSettingsKeepOlderDedupl" xml:space="preserve">
|
||||
<value>Сохранить старые при удалении дублей</value>
|
||||
<value>При удалении дубликатов сохранять элементы с меньшим порядковым номером</value>
|
||||
</data>
|
||||
<data name="TbSettingsLogEnabled" xml:space="preserve">
|
||||
<value>Записывать логи</value>
|
||||
@@ -730,13 +730,13 @@
|
||||
<value>Смешанный порт</value>
|
||||
</data>
|
||||
<data name="TbSettingsStartBoot" xml:space="preserve">
|
||||
<value>Запускать при старте системы</value>
|
||||
<value>Запускать при старте системы (может не сработать)</value>
|
||||
</data>
|
||||
<data name="TbSettingsStatistics" xml:space="preserve">
|
||||
<value>Включить статистику трафика (требуется перезапуск)</value>
|
||||
</data>
|
||||
<data name="TbSettingsSubConvert" xml:space="preserve">
|
||||
<value>URL конвертации подписок</value>
|
||||
<value>URL конвертации подписок (необязательно)</value>
|
||||
</data>
|
||||
<data name="TbSettingsSystemproxy" xml:space="preserve">
|
||||
<value>Настройки системного прокси</value>
|
||||
@@ -787,13 +787,13 @@
|
||||
<value>Запущено от имени администратора</value>
|
||||
</data>
|
||||
<data name="menuMoveBottom" xml:space="preserve">
|
||||
<value>Спуститься вниз</value>
|
||||
<value>Переместить в самый низ</value>
|
||||
</data>
|
||||
<data name="menuMoveDown" xml:space="preserve">
|
||||
<value>Вниз</value>
|
||||
</data>
|
||||
<data name="menuMoveTop" xml:space="preserve">
|
||||
<value>Подняться наверх</value>
|
||||
<value>Переместить в самый верх</value>
|
||||
</data>
|
||||
<data name="menuMoveUp" xml:space="preserve">
|
||||
<value>Вверх</value>
|
||||
@@ -805,7 +805,7 @@
|
||||
<value>Веб-сайт {0}</value>
|
||||
</data>
|
||||
<data name="menuRoutingAdvancedAdd" xml:space="preserve">
|
||||
<value>Добавить</value>
|
||||
<value>Добавить набор правил</value>
|
||||
</data>
|
||||
<data name="menuRoutingAdvancedImportRules" xml:space="preserve">
|
||||
<value>Импортировать правила</value>
|
||||
@@ -841,7 +841,7 @@
|
||||
<value>Добавить правило</value>
|
||||
</data>
|
||||
<data name="menuRuleExportSelected" xml:space="preserve">
|
||||
<value>Экспорт выделенных правил</value>
|
||||
<value>Экспортировать выбранные правила в буфер обмена</value>
|
||||
</data>
|
||||
<data name="menuRuleList" xml:space="preserve">
|
||||
<value>Список правил</value>
|
||||
@@ -859,7 +859,7 @@
|
||||
<value>Документация RuleObject</value>
|
||||
</data>
|
||||
<data name="TbDnsObjectDoc" xml:space="preserve">
|
||||
<value>Поддерживаются DNS-объекты, нажмите для просмотра документации</value>
|
||||
<value>Заполните DNS-объект (формат JSON), нажмите для просмотра документации</value>
|
||||
</data>
|
||||
<data name="SubUrlTips" xml:space="preserve">
|
||||
<value>Для группы оставьте это поле пустым</value>
|
||||
@@ -871,13 +871,13 @@
|
||||
<value>Системные прокси изменены</value>
|
||||
</data>
|
||||
<data name="TbSettingsRouteOnly" xml:space="preserve">
|
||||
<value>Только маршрут</value>
|
||||
<value>Только для маршрутизации (routeOnly)</value>
|
||||
</data>
|
||||
<data name="TbSettingsNotProxyLocalAddress" xml:space="preserve">
|
||||
<value>Не использовать прокси для локальных (интранет) адресов</value>
|
||||
</data>
|
||||
<data name="menuMixedTestServer" xml:space="preserve">
|
||||
<value>Тест задержки и скорости всех серверов (Ctrl+E)</value>
|
||||
<value>Многопоточный тест задержки и скорости (Ctrl+E)</value>
|
||||
</data>
|
||||
<data name="LvTestDelay" xml:space="preserve">
|
||||
<value>Задержка (мс)</value>
|
||||
@@ -886,10 +886,10 @@
|
||||
<value>Скорость (МБ/с)</value>
|
||||
</data>
|
||||
<data name="FailedToRunCore" xml:space="preserve">
|
||||
<value>Не удалось запустить ядро, посмотрите логи</value>
|
||||
<value>Не удалось запустить ядро, см. сообщение</value>
|
||||
</data>
|
||||
<data name="LvFilter" xml:space="preserve">
|
||||
<value>Фильтр по примечаниям (регулярные выражения)</value>
|
||||
<value>Фильтр по псевдониму (регулярные выражения)</value>
|
||||
</data>
|
||||
<data name="TbDisplayLog" xml:space="preserve">
|
||||
<value>Отображать журнал</value>
|
||||
@@ -937,7 +937,7 @@
|
||||
<value>Шрифт (требуется перезапуск)</value>
|
||||
</data>
|
||||
<data name="TbSettingsCurrentFontFamilyTip" xml:space="preserve">
|
||||
<value>Скопируйте файл шрифта TTF/TTC в каталог guiFonts и заново откройте окно настроек</value>
|
||||
<value>Скопируйте файл шрифта TTF/TTC в каталог guiFonts и перезапустите приложение</value>
|
||||
</data>
|
||||
<data name="TbSettingsSocksPortTip" xml:space="preserve">
|
||||
<value>PAC-порт = +3; Xray API порт = +4; mihomo API порт = +5;</value>
|
||||
@@ -1009,7 +1009,7 @@
|
||||
<value>Пользовательский DNS для sing-box</value>
|
||||
</data>
|
||||
<data name="TbDnsSingboxObjectDoc" xml:space="preserve">
|
||||
<value>Заполните структуру DNS, нажмите, чтобы открыть документ</value>
|
||||
<value>Заполните структуру DNS (формат JSON), нажмите для просмотра документации</value>
|
||||
</data>
|
||||
<data name="TbSettingDnsImportDefConfig" xml:space="preserve">
|
||||
<value>Нажмите, чтобы импортировать конфигурацию DNS по умолчанию</value>
|
||||
@@ -1033,7 +1033,7 @@
|
||||
<value>Добавить сервер [Hysteria2]</value>
|
||||
</data>
|
||||
<data name="TbSettingsHysteriaBandwidth" xml:space="preserve">
|
||||
<value>Максимальная пропускная способность Hysteria (загрузка/отдача)</value>
|
||||
<value>Максимальная пропускная способность Hysteria (отдача/загрузка)</value>
|
||||
</data>
|
||||
<data name="TbSettingsUseSystemHosts" xml:space="preserve">
|
||||
<value>Использовать системный файл hosts</value>
|
||||
@@ -1045,13 +1045,13 @@
|
||||
<value>Управление перегрузками</value>
|
||||
</data>
|
||||
<data name="LvPrevProfile" xml:space="preserve">
|
||||
<value>Примечания к предыдущему прокси</value>
|
||||
<value>Псевдоним предыдущего прокси</value>
|
||||
</data>
|
||||
<data name="LvNextProfile" xml:space="preserve">
|
||||
<value>Примечания к следующему прокси</value>
|
||||
<value>Псевдоним следующего прокси</value>
|
||||
</data>
|
||||
<data name="LvPrevProfileTip" xml:space="preserve">
|
||||
<value>Убедитесь, что примечание существует и является уникальным</value>
|
||||
<value>Убедитесь, что псевдоним существует и является уникальным</value>
|
||||
</data>
|
||||
<data name="TbSettingsTunAutoRoute" xml:space="preserve">
|
||||
<value>Автоматическая маршрутизация</value>
|
||||
@@ -1177,7 +1177,7 @@
|
||||
<value>Глобальный режим</value>
|
||||
</data>
|
||||
<data name="menuModeNothing" xml:space="preserve">
|
||||
<value>Не менять</value>
|
||||
<value>Как в исходной конфигурации</value>
|
||||
</data>
|
||||
<data name="menuModeRule" xml:space="preserve">
|
||||
<value>Правила</value>
|
||||
@@ -1210,7 +1210,7 @@
|
||||
<value>Экспорт ссылок в формате Base64 в буфер обмена</value>
|
||||
</data>
|
||||
<data name="menuExport2ClientConfigClipboard" xml:space="preserve">
|
||||
<value>Экспортировать полную конфигурацию в буфер обмена</value>
|
||||
<value>Экспортировать выбранную полную конфигурацию в буфер обмена</value>
|
||||
</data>
|
||||
<data name="menuShowOrHideMainWindow" xml:space="preserve">
|
||||
<value>Показать или скрыть главное окно</value>
|
||||
@@ -1300,7 +1300,7 @@
|
||||
<value>Не используйте небезопасный адрес подписки по протоколу HTTP</value>
|
||||
</data>
|
||||
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
|
||||
<value>Установите шрифт в систему, выберите или введите имя шрифта, перезапустите настройки</value>
|
||||
<value>Установите шрифт в систему, выберите или введите имя шрифта и перезапустите приложение</value>
|
||||
</data>
|
||||
<data name="menuExitTips" xml:space="preserve">
|
||||
<value>Вы уверены, что хотите выйти?</value>
|
||||
@@ -1318,13 +1318,13 @@
|
||||
<value>XHTTP-режим</value>
|
||||
</data>
|
||||
<data name="TransportExtraTip" xml:space="preserve">
|
||||
<value>Сырой JSON, формат: { XHTTP Object }</value>
|
||||
<value>Сырой JSON, формат: { XHTTPObject }</value>
|
||||
</data>
|
||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||
<value>Сворачивать в трей при закрытии окна</value>
|
||||
</data>
|
||||
<data name="TbSettingsMixedConcurrencyCount" xml:space="preserve">
|
||||
<value>Количество одновременно выполняемых тестов при многоэтапном тестировании</value>
|
||||
<value>Количество параллельных задач при многопоточном тестировании</value>
|
||||
</data>
|
||||
<data name="TbSettingsExceptionTip2" xml:space="preserve">
|
||||
<value>Исключения: не использовать прокси для указанных адресов. Разделяйте запятой (,)</value>
|
||||
@@ -1336,7 +1336,7 @@
|
||||
<value>Включить второй смешанный порт</value>
|
||||
</data>
|
||||
<data name="TbRoutingInboundTagTips" xml:space="preserve">
|
||||
<value>socks: локальный порт, socks2: второй локальный порт, socks3: LAN-порт</value>
|
||||
<value>tun: входящий TUN, socks: локальный порт, socks2: второй локальный порт, socks3: LAN-порт</value>
|
||||
</data>
|
||||
<data name="TbSettingsTheme" xml:space="preserve">
|
||||
<value>Тема</value>
|
||||
@@ -1357,7 +1357,7 @@
|
||||
<value>Удалено {0} недействительных</value>
|
||||
</data>
|
||||
<data name="TbPorts7" xml:space="preserve">
|
||||
<value>Диапазон портов сервера</value>
|
||||
<value>Диапазон портов для переключения (Port Hopping)</value>
|
||||
</data>
|
||||
<data name="TbPorts7Tips" xml:space="preserve">
|
||||
<value>Заменит указанный порт, перечисляйте через запятую (,)</value>
|
||||
@@ -1369,7 +1369,7 @@
|
||||
<value>URL для тестирования текущего соединения</value>
|
||||
</data>
|
||||
<data name="TbRuleOutboundTagTip" xml:space="preserve">
|
||||
<value>Можно указать название (Remarks) из конфигурации, убедитесь, что оно существует и уникально</value>
|
||||
<value>Можно указать псевдоним из конфигурации, убедитесь, что он существует и уникален</value>
|
||||
</data>
|
||||
<data name="SudoIncorrectPasswordTip" xml:space="preserve">
|
||||
<value>Неверный пароль, попробуйте ещё раз.</value>
|
||||
@@ -1384,7 +1384,7 @@
|
||||
<value>Удалённый DNS</value>
|
||||
</data>
|
||||
<data name="TbDomesticDNS" xml:space="preserve">
|
||||
<value>Внутренний DNS</value>
|
||||
<value>DNS для прямых подключений</value>
|
||||
</data>
|
||||
<data name="TbDirectResolveStrategy" xml:space="preserve">
|
||||
<value>Стратегия разрешения прямых соединений</value>
|
||||
@@ -1489,13 +1489,13 @@
|
||||
<value>Тип группы политик</value>
|
||||
</data>
|
||||
<data name="menuAddPolicyGroupServer" xml:space="preserve">
|
||||
<value>Добавить группу политик </value>
|
||||
<value>Добавить группу политик</value>
|
||||
</data>
|
||||
<data name="menuAddProxyChainServer" xml:space="preserve">
|
||||
<value>Добавить цепочку прокси</value>
|
||||
</data>
|
||||
<data name="menuAddChildServer" xml:space="preserve">
|
||||
<value>Добавить дочернюю конфигурацию </value>
|
||||
<value>Добавить дочернюю конфигурацию</value>
|
||||
</data>
|
||||
<data name="menuRemoveChildServer" xml:space="preserve">
|
||||
<value>Удалить дочернюю конфигурацию </value>
|
||||
@@ -1534,7 +1534,7 @@
|
||||
<value>Bootstrap DNS</value>
|
||||
</data>
|
||||
<data name="TbBootstrapDNSTips" xml:space="preserve">
|
||||
<value>Разрешает домены DNS-серверов, требуется IP-адрес</value>
|
||||
<value>Для разрешения доменных имён DNS-серверов необходимо указать IP-адрес</value>
|
||||
</data>
|
||||
<data name="menuFastRealPing" xml:space="preserve">
|
||||
<value>Тест реальной задержки</value>
|
||||
@@ -1547,7 +1547,7 @@
|
||||
</data>
|
||||
<data name="TbCertPinningTips" xml:space="preserve">
|
||||
<value>Привязанный сертификат (заполните любое из полей)
|
||||
При указании сертификат будет привязан, а «Разрешить небезопасные» отключится.
|
||||
При указании сертификат будет привязан, а «Пропустить проверку сертификата» отключится.
|
||||
|
||||
Получение сертификата может завершиться неудачей при использовании самоподписанного сертификата или при наличии ненадёжного / вредоносного ЦС в системе.</value>
|
||||
</data>
|
||||
@@ -1732,18 +1732,18 @@
|
||||
<value>Экспорт внутренней ссылки v2rayN в буфер обмена</value>
|
||||
</data>
|
||||
<data name="MsgCheckUpdateHasNewVersion" xml:space="preserve">
|
||||
<value>{0} has a new version available: {1}</value>
|
||||
<value>Доступна новая версия {0}: {1}</value>
|
||||
</data>
|
||||
<data name="menuCheckOnly" xml:space="preserve">
|
||||
<value>Only Check</value>
|
||||
<value>Проверить</value>
|
||||
</data>
|
||||
<data name="MsgNotSupport" xml:space="preserve">
|
||||
<value>Not Support</value>
|
||||
<value>Не поддерживается</value>
|
||||
</data>
|
||||
<data name="LvTestIpInfo" xml:space="preserve">
|
||||
<value>IP Info</value>
|
||||
<value>Информация об IP</value>
|
||||
</data>
|
||||
<data name="menuNewUpdate" xml:space="preserve">
|
||||
<value>New Update</value>
|
||||
<value>Доступно обновление</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1743,4 +1743,7 @@
|
||||
<data name="menuNewUpdate" xml:space="preserve">
|
||||
<value>有更新</value>
|
||||
</data>
|
||||
<data name="MsgAllowInsecureDeprecated" xml:space="preserve">
|
||||
<value>警告:Xray 将在 2026.8.1 禁用跳过证书验证 allowInsecure ,请尽快改用证书固定指纹 pinnedPeerCertSha256。到期后无法使用 </value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1743,4 +1743,7 @@
|
||||
<data name="menuNewUpdate" xml:space="preserve">
|
||||
<value>有更新</value>
|
||||
</data>
|
||||
<data name="MsgAllowInsecureDeprecated" xml:space="preserve">
|
||||
<value>警告:Xray 將在 2026.8.1 停用跳過憑證驗證 allowInsecure ,請盡快改用憑證固定指紋 pinnedPeerCertSha256。到期後無法使用 allowInsecure。</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -342,6 +342,7 @@ public class UpdateService(Config config, Func<bool, string, Task> updateFunc)
|
||||
{
|
||||
Architecture.Arm64 => coreInfo?.DownloadUrlLinuxArm64,
|
||||
Architecture.RiscV64 => coreInfo?.DownloadUrlLinuxRiscV64,
|
||||
Architecture.LoongArch64 => coreInfo?.DownloadUrlLinuxLoong64,
|
||||
Architecture.X64 => coreInfo?.DownloadUrlLinux64,
|
||||
_ => null,
|
||||
};
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using v2rayN.Desktop.Common;
|
||||
using v2rayN.Desktop.Views;
|
||||
|
||||
namespace v2rayN.Desktop;
|
||||
@@ -24,11 +25,34 @@ public partial class App : Application
|
||||
|
||||
desktop.Exit += OnExit;
|
||||
desktop.MainWindow = new MainWindow();
|
||||
|
||||
if (OperatingSystem.IsMacOS())
|
||||
{
|
||||
Current?.TryGetFeature<IActivatableLifetime>()?.Activated += OnMacOSActivated;
|
||||
}
|
||||
}
|
||||
|
||||
base.OnFrameworkInitializationCompleted();
|
||||
}
|
||||
|
||||
private void OnMacOSActivated(object? sender, ActivatedEventArgs args)
|
||||
{
|
||||
if (args.Kind != ActivationKind.Reopen)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
((ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)?.MainWindow as MainWindow)?.ShowHideWindow(true);
|
||||
|
||||
if (!AppManager.Instance.Config.UiItem.MacOSShowInDock)
|
||||
{
|
||||
MacAppUtils.SetActivationPolicyAccessory();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
if (e.ExceptionObject != null)
|
||||
|
||||
27
v2rayN/v2rayN.Desktop/Common/MacAppUtils.cs
Normal file
27
v2rayN/v2rayN.Desktop/Common/MacAppUtils.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace v2rayN.Desktop.Common;
|
||||
|
||||
internal static class MacAppUtils
|
||||
{
|
||||
private const string LibObjC = "/usr/lib/libobjc.dylib";
|
||||
private const nint ActivationPolicyAccessory = 1;
|
||||
|
||||
public static void SetActivationPolicyAccessory()
|
||||
=> objc_msgSend(
|
||||
objc_msgSend(objc_getClass("NSApplication"), sel_registerName("sharedApplication")),
|
||||
sel_registerName("setActivationPolicy:"),
|
||||
ActivationPolicyAccessory);
|
||||
|
||||
[DllImport(LibObjC)]
|
||||
private static extern nint objc_getClass(string name);
|
||||
|
||||
[DllImport(LibObjC)]
|
||||
private static extern nint sel_registerName(string name);
|
||||
|
||||
[DllImport(LibObjC, EntryPoint = "objc_msgSend")]
|
||||
private static extern nint objc_msgSend(nint receiver, nint selector);
|
||||
|
||||
[DllImport(LibObjC, EntryPoint = "objc_msgSend")]
|
||||
private static extern void objc_msgSend(nint receiver, nint selector, nint argument);
|
||||
}
|
||||
Reference in New Issue
Block a user