Compare commits
53 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c2da0a225 | ||
|
|
528400579a | ||
|
|
521ce1a487 | ||
|
|
34c6c953ac | ||
|
|
40fbbc7c58 | ||
|
|
534c329970 | ||
|
|
328d728257 | ||
|
|
fae6d42758 | ||
|
|
27693f6d23 | ||
|
|
89c4bab5b9 | ||
|
|
9d2ff04838 | ||
|
|
cf00243107 | ||
|
|
e8019ba7a5 | ||
|
|
4f30e3f0e3 | ||
|
|
047d08470f | ||
|
|
9643695389 | ||
|
|
5cabec86e7 | ||
|
|
f2d0e37255 | ||
|
|
9560851a3f | ||
|
|
4aeec1caa1 | ||
|
|
ae45b1ef44 | ||
|
|
aad1b087c9 | ||
|
|
b69c581fa1 | ||
|
|
9eb4d90cd6 | ||
|
|
958567c2c5 | ||
|
|
f1fc4583ed | ||
|
|
f7bfd5f766 | ||
|
|
aadc3c216a | ||
|
|
6fd2499daf | ||
|
|
f0405f1c5d | ||
|
|
1914cb3994 | ||
|
|
ab38fb572d | ||
|
|
46d7128a6e | ||
|
|
0821884ff3 | ||
|
|
62233281ef | ||
|
|
39504502af | ||
|
|
f97530a671 | ||
|
|
0fe7d5e598 | ||
|
|
527362dc9f | ||
|
|
1023426c8d | ||
|
|
4458fd7541 | ||
|
|
f0b03f59ff | ||
|
|
d5b17b3cfb | ||
|
|
9664d1d77f | ||
|
|
d329646a52 | ||
|
|
8eafe72bb0 | ||
|
|
c38a0bde65 | ||
|
|
eef5d3cc16 | ||
|
|
59ada594a5 | ||
|
|
5ec1d18143 | ||
|
|
fd1e1bb6bf | ||
|
|
5d545d8a85 | ||
|
|
e38bc45527 |
@@ -5982,7 +5982,8 @@ var rules = [
|
||||
"zyzc9.com",
|
||||
"zzcartoon.com",
|
||||
"zzcloud.me",
|
||||
"zzux.com"
|
||||
"zzux.com",
|
||||
"chat.openai.com"
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.23.2" />
|
||||
<PackageReference Include="Grpc.Net.Client" Version="2.53.0" />
|
||||
<PackageReference Include="Google.Protobuf" Version="3.23.3" />
|
||||
<PackageReference Include="Grpc.Net.Client" Version="2.54.0" />
|
||||
<PackageReference Include="Grpc.Tools" Version="2.54.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
||||
@@ -70,5 +70,15 @@ namespace v2rayN.Base
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
public static string UpperFirstChar(this string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return char.ToUpper(value[0]) + value.Substring(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
|
||||
public const string singboxGeoUrl = "https://github.com/soffchen/sing-{0}/releases/latest/download/{0}.db";
|
||||
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
||||
public const string juicityCoreUrl = "https://github.com/juicity/juicity/releases";
|
||||
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
|
||||
|
||||
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
|
||||
@@ -149,7 +150,7 @@
|
||||
|
||||
public static readonly List<string> allowInsecures = new() { "true", "false", "" };
|
||||
public static readonly List<string> domainStrategy4Freedoms = new() { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" };
|
||||
public static readonly List<string> Languages = new() { "zh-Hans", "en", "fa-Ir", "ru" };
|
||||
public static readonly List<string> Languages = new() { "zh-Hans", "zh-Hant", "en", "fa-Ir", "ru" };
|
||||
public static readonly List<string> alpns = new() { "h2", "http/1.1", "h2,http/1.1", "" };
|
||||
public static readonly List<string> LogLevel = new() { "debug", "info", "warning", "error", "none" };
|
||||
public static readonly List<string> InboundTags = new() { "socks", "http", "socks2", "http2" };
|
||||
@@ -170,4 +171,4 @@
|
||||
|
||||
#endregion global variable
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,6 +369,10 @@ namespace v2rayN.Handler
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (profileItem.id.IsNullOrEmpty())
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
AddServerCommon(ref config, profileItem, toFile);
|
||||
|
||||
@@ -590,7 +594,7 @@ namespace v2rayN.Handler
|
||||
profileItem.configType = EConfigType.Custom;
|
||||
if (Utils.IsNullOrEmpty(profileItem.remarks))
|
||||
{
|
||||
profileItem.remarks = $"import custom@{DateTime.Now.ToShortDateString()}";
|
||||
profileItem.remarks = $"import custom@{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}";
|
||||
}
|
||||
|
||||
AddServerCommon(ref config, profileItem, true);
|
||||
@@ -636,6 +640,10 @@ namespace v2rayN.Handler
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (profileItem.id.IsNullOrEmpty())
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
AddServerCommon(ref config, profileItem, toFile);
|
||||
|
||||
@@ -675,6 +683,10 @@ namespace v2rayN.Handler
|
||||
{
|
||||
profileItem.streamSecurity = Global.StreamSecurity;
|
||||
}
|
||||
if (profileItem.id.IsNullOrEmpty())
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
AddServerCommon(ref config, profileItem, toFile);
|
||||
|
||||
@@ -800,6 +812,10 @@ namespace v2rayN.Handler
|
||||
{
|
||||
profileItem.flow = Global.flows.First();
|
||||
}
|
||||
if (profileItem.id.IsNullOrEmpty())
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
AddServerCommon(ref config, profileItem, toFile);
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ namespace v2rayN.Handler
|
||||
|
||||
private void CoreStart(ProfileItem node)
|
||||
{
|
||||
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
||||
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")));
|
||||
|
||||
ECoreType coreType;
|
||||
if (node.configType != EConfigType.Custom && _config.tunModeItem.enableTun)
|
||||
@@ -201,7 +201,7 @@ namespace v2rayN.Handler
|
||||
|
||||
private int CoreStartViaString(string configStr)
|
||||
{
|
||||
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
||||
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")));
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -113,9 +113,9 @@ namespace v2rayN.Handler
|
||||
|
||||
var mdif = (KeyModifiers)_fsModifiers;
|
||||
var key = KeyInterop.KeyFromVirtualKey(_vkey);
|
||||
if ((mdif | KeyModifiers.Ctrl) == KeyModifiers.Ctrl) _hotkeyStr.Append($"{KeyModifiers.Ctrl}+");
|
||||
if ((mdif | KeyModifiers.Alt) == KeyModifiers.Alt) _hotkeyStr.Append($"{KeyModifiers.Alt}+");
|
||||
if ((mdif | KeyModifiers.Shift) == KeyModifiers.Shift) _hotkeyStr.Append($"{KeyModifiers.Shift}+");
|
||||
if ((mdif & KeyModifiers.Ctrl) == KeyModifiers.Ctrl) _hotkeyStr.Append($"{KeyModifiers.Ctrl}+");
|
||||
if ((mdif & KeyModifiers.Alt) == KeyModifiers.Alt) _hotkeyStr.Append($"{KeyModifiers.Alt}+");
|
||||
if ((mdif & KeyModifiers.Shift) == KeyModifiers.Shift) _hotkeyStr.Append($"{KeyModifiers.Shift}+");
|
||||
_hotkeyStr.Append(key.ToString());
|
||||
|
||||
foreach (var name in _hotkeyTriggerDic[hotkeycode])
|
||||
|
||||
@@ -353,8 +353,16 @@ namespace v2rayN.Handler
|
||||
match = "sing-box",
|
||||
versionArg = "version",
|
||||
});
|
||||
|
||||
coreInfos.Add(new CoreInfo
|
||||
{
|
||||
coreType = ECoreType.juicity,
|
||||
coreExes = new List<string> { "juicity-client", "juicity" },
|
||||
arguments = "run -c config.json",
|
||||
coreUrl = Global.juicityCoreUrl
|
||||
});
|
||||
}
|
||||
|
||||
#endregion Core Type
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace v2rayN.Handler
|
||||
|
||||
public void SendMessage(string msg, bool time)
|
||||
{
|
||||
msg = $"{DateTime.Now} {msg}";
|
||||
msg = $"{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")} {msg}";
|
||||
MessageBus.Current.SendMessage(msg, "MsgView");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -629,7 +629,7 @@ namespace v2rayN.Handler
|
||||
server.security = details.Groups["method"].Value;
|
||||
server.id = details.Groups["password"].Value;
|
||||
server.address = details.Groups["hostname"].Value;
|
||||
server.port = int.Parse(details.Groups["port"].Value);
|
||||
server.port = Utils.ToInt(details.Groups["port"].Value);
|
||||
return server;
|
||||
}
|
||||
|
||||
|
||||
@@ -514,7 +514,7 @@ namespace v2rayN.Handler
|
||||
throw new ArgumentException("Type");
|
||||
}
|
||||
|
||||
if (curVersion >= version)
|
||||
if (curVersion >= version && version != new SemanticVersion(0, 0, 0))
|
||||
{
|
||||
AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message));
|
||||
return;
|
||||
|
||||
@@ -160,7 +160,7 @@ namespace v2rayN.Mode
|
||||
public class TunModeItem
|
||||
{
|
||||
public bool enableTun { get; set; }
|
||||
public bool strictRoute { get; set; }
|
||||
public bool strictRoute { get; set; } = true;
|
||||
public string stack { get; set; }
|
||||
public int mtu { get; set; }
|
||||
public bool enableExInbound { get; set; }
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
naiveproxy = 22,
|
||||
tuic = 23,
|
||||
sing_box = 24,
|
||||
juicity = 25,
|
||||
v2rayN = 99
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
<value>Сканирование URL-адреса импорта успешна.</value>
|
||||
</data>
|
||||
<data name="TestMeOutput" xml:space="preserve">
|
||||
<value>Пинг текущей службы: {0} мс</value>
|
||||
<value>Задержка текущего сервера: {0} мс</value>
|
||||
</data>
|
||||
<data name="OperationSuccess" xml:space="preserve">
|
||||
<value>Операция успешна</value>
|
||||
@@ -335,7 +335,7 @@
|
||||
<value>Примечания</value>
|
||||
</data>
|
||||
<data name="LvUrl" xml:space="preserve">
|
||||
<value>Url(Необязательно)</value>
|
||||
<value>URL (необязательно)</value>
|
||||
</data>
|
||||
<data name="LvCount" xml:space="preserve">
|
||||
<value>Количество</value>
|
||||
@@ -506,7 +506,7 @@
|
||||
<value>Тёмный режим</value>
|
||||
</data>
|
||||
<data name="TbSettingsFollowSystemTheme" xml:space="preserve">
|
||||
<value>следить за системной темой</value>
|
||||
<value>Следить за системной темой</value>
|
||||
</data>
|
||||
<data name="TbSettingsLanguage" xml:space="preserve">
|
||||
<value>Язык (требуется перезапуск)</value>
|
||||
@@ -533,19 +533,19 @@
|
||||
<value>Очистить всю статистику</value>
|
||||
</data>
|
||||
<data name="menuPingServer" xml:space="preserve">
|
||||
<value>Проверить пинг серверов (Ctrl+P)</value>
|
||||
<value>Тест на задержку сервера (Ctrl+P)</value>
|
||||
</data>
|
||||
<data name="menuRealPingServer" xml:space="preserve">
|
||||
<value>Тест на реальную задержку серверов (Ctrl+R)</value>
|
||||
<value>Тест на реальную задержку сервера (Ctrl+R)</value>
|
||||
</data>
|
||||
<data name="menuSortServerResult" xml:space="preserve">
|
||||
<value>Сортировать по результату теста</value>
|
||||
</data>
|
||||
<data name="menuSpeedServer" xml:space="preserve">
|
||||
<value>Проверить скорость загрузки серверов (Ctrl+T)</value>
|
||||
<value>Тест на скорость загрузки сервера (Ctrl+T)</value>
|
||||
</data>
|
||||
<data name="menuTcpingServer" xml:space="preserve">
|
||||
<value>Тестировать сервера с tcping (Ctrl+O)</value>
|
||||
<value>Тест задержки с tcping (Ctrl+O)</value>
|
||||
</data>
|
||||
<data name="menuTestMe" xml:space="preserve">
|
||||
<value>Проверить текущий статус службы</value>
|
||||
@@ -644,7 +644,7 @@
|
||||
<value>Тип камуфляжа</value>
|
||||
</data>
|
||||
<data name="TbId" xml:space="preserve">
|
||||
<value>UUID(id)</value>
|
||||
<value>UUID (id)</value>
|
||||
</data>
|
||||
<data name="TbNetwork" xml:space="preserve">
|
||||
<value>Транспортный протокол сети</value>
|
||||
@@ -656,7 +656,7 @@
|
||||
<value>Порт</value>
|
||||
</data>
|
||||
<data name="TbRemarks" xml:space="preserve">
|
||||
<value>Псевдоним (примечания)</value>
|
||||
<value>Примечание</value>
|
||||
</data>
|
||||
<data name="TbRequestHost" xml:space="preserve">
|
||||
<value>Маскирующий домен (хост)</value>
|
||||
@@ -719,16 +719,22 @@
|
||||
<value>Разрешить подключения из локальной сети</value>
|
||||
</data>
|
||||
<data name="TbSettingsAutoHideStartup" xml:space="preserve">
|
||||
<value>Auto hide startup</value>
|
||||
<value>Автоскрытие при автозапуске</value>
|
||||
</data>
|
||||
<data name="TbSettingsAutoUpdateInterval" xml:space="preserve">
|
||||
<value>Интервал автоматического обновления Geo в часах</value>
|
||||
</data>
|
||||
<data name="LvAutoUpdateInterval" xml:space="preserve">
|
||||
<value>Интервал автоматического обновления в минутах</value>
|
||||
</data>
|
||||
<data name="TbSettingsCore" xml:space="preserve">
|
||||
<value>Ядро: базовые настройки</value>
|
||||
</data>
|
||||
<data name="TbSettingsCoreDns" xml:space="preserve">
|
||||
<value>V2ray DNS settings</value>
|
||||
<value>Настройки DNS V2ray</value>
|
||||
</data>
|
||||
<data name="TbSettingsCoreDnsSingbox" xml:space="preserve">
|
||||
<value>Настройки DNS sing-box</value>
|
||||
</data>
|
||||
<data name="TbSettingsCoreKcp" xml:space="preserve">
|
||||
<value>Ядро: настройки KCP</value>
|
||||
@@ -806,7 +812,7 @@
|
||||
<value>Включить протокол безопасности TLS v1.3 (обновление подписки)</value>
|
||||
</data>
|
||||
<data name="TbSettingsTrayMenuServersLimit" xml:space="preserve">
|
||||
<value>Tray right-click menu servers display limit</value>
|
||||
<value>Лимит серверов в меню трея</value>
|
||||
</data>
|
||||
<data name="TbSettingsUdpEnabled" xml:space="preserve">
|
||||
<value>Включить UDP</value>
|
||||
@@ -950,7 +956,7 @@
|
||||
<value>Поддержка DnsObject</value>
|
||||
</data>
|
||||
<data name="SubUrlTips" xml:space="preserve">
|
||||
<value>Group please leave blank here</value>
|
||||
<value>Необязательное поле</value>
|
||||
</data>
|
||||
<data name="TipChangeRouting" xml:space="preserve">
|
||||
<value>Настройки маршрутизации изменены</value>
|
||||
@@ -962,7 +968,7 @@
|
||||
<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>Задержка (ms)</value>
|
||||
@@ -983,7 +989,7 @@
|
||||
<value>Импортировать старый конфиг guiNConfig</value>
|
||||
</data>
|
||||
<data name="TbEnableTunAs" xml:space="preserve">
|
||||
<value>Включить интерфейс</value>
|
||||
<value>Режим VPN</value>
|
||||
</data>
|
||||
<data name="TbSettingsNewPort4LAN" xml:space="preserve">
|
||||
<value>Новый порт для локальной сети</value>
|
||||
@@ -1051,4 +1057,19 @@
|
||||
<data name="TbSettingsEnableHWA" xml:space="preserve">
|
||||
<value>Включить аппаратное ускорение (требуется перезагрузка)</value>
|
||||
</data>
|
||||
</root>
|
||||
<data name="menuRebootAsAdmin" xml:space="preserve">
|
||||
<value>Перезагрузить как администратор</value>
|
||||
</data>
|
||||
<data name="menuDNSSetting" xml:space="preserve">
|
||||
<value>Настройки DNS</value>
|
||||
</data>
|
||||
<data name="TbSettingsLogEnabledToFile" xml:space="preserve">
|
||||
<value>Включить логгирование в файл</value>
|
||||
</data>
|
||||
<data name="TbSettingsSpeedTestTimeout" xml:space="preserve">
|
||||
<value>Таймаут одиночного спидтеста</value>
|
||||
</data>
|
||||
<data name="TbSettingsSpeedTestUrl" xml:space="preserve">
|
||||
<value>URL спидтеста</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
1138
v2rayN/v2rayN/Resx/ResUI.zh-Hant.resx
Normal file
1138
v2rayN/v2rayN/Resx/ResUI.zh-Hant.resx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -45,7 +45,7 @@ namespace v2rayN.Tool
|
||||
this.major = 0;
|
||||
this.minor = 0;
|
||||
this.patch = 0;
|
||||
this.version = "0.0.0";
|
||||
//this.version = "0.0.0";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1529,7 +1529,7 @@ namespace v2rayN.ViewModels
|
||||
private void ChangeSystemProxyStatus(ESysProxyType type, bool blChange)
|
||||
{
|
||||
SysProxyHandle.UpdateSysProxy(_config, _config.tunModeItem.enableTun ? true : false);
|
||||
_noticeHandler?.SendMessage(ResUI.TipChangeSystemProxy, true);
|
||||
_noticeHandler?.SendMessage(ResUI.TipChangeSystemProxy + _config.sysProxyType.ToString(), true);
|
||||
|
||||
Application.Current.Dispatcher.Invoke((Action)(() =>
|
||||
{
|
||||
|
||||
@@ -11,6 +11,17 @@ namespace v2rayN.Views
|
||||
public AddServer2Window(ProfileItem profileItem)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
this.Loaded += Window_Loaded;
|
||||
ViewModel = new AddServer2ViewModel(profileItem, this);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
x:TypeArguments="vms:AddServerViewModel"
|
||||
Background="{DynamicResource MaterialDesignPaper}"
|
||||
FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
|
||||
ResizeMode="NoResize"
|
||||
ResizeMode="CanResize"
|
||||
ShowInTaskbar="False"
|
||||
TextElement.FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
|
||||
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
|
||||
|
||||
@@ -15,6 +15,17 @@ namespace v2rayN.Views
|
||||
public AddServerWindow(ProfileItem profileItem)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
this.Loaded += Window_Loaded;
|
||||
cmbNetwork.SelectionChanged += CmbNetwork_SelectionChanged;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:conv="clr-namespace:v2rayN.Converters"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:reactiveui="http://reactiveui.net"
|
||||
xmlns:resx="clr-namespace:v2rayN.Resx"
|
||||
@@ -84,13 +85,15 @@
|
||||
Cursor="Hand"
|
||||
Style="{StaticResource DefButton}" />
|
||||
</StackPanel>
|
||||
|
||||
<TextBox
|
||||
x:Name="txtnormalDNS"
|
||||
Margin="{StaticResource SettingItemMargin}"
|
||||
VerticalAlignment="Stretch"
|
||||
materialDesign:HintAssist.Hint="Http/Socks"
|
||||
AcceptsReturn="True"
|
||||
BorderThickness="1"
|
||||
Style="{StaticResource DefTextBox}"
|
||||
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
</DockPanel>
|
||||
@@ -122,35 +125,29 @@
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<GroupBox
|
||||
<TextBox
|
||||
x:Name="txtnormalDNS2"
|
||||
Grid.Column="0"
|
||||
Header=""
|
||||
Style="{StaticResource MyGroupBox}">
|
||||
<TextBox
|
||||
x:Name="txtnormalDNS2"
|
||||
Margin="{StaticResource SettingItemMargin}"
|
||||
VerticalAlignment="Stretch"
|
||||
AcceptsReturn="True"
|
||||
BorderThickness="1"
|
||||
Style="{StaticResource DefTextBox}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
</GroupBox>
|
||||
VerticalAlignment="Stretch"
|
||||
materialDesign:HintAssist.Hint="Http/Socks"
|
||||
AcceptsReturn="True"
|
||||
BorderThickness="1"
|
||||
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
|
||||
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
|
||||
<GroupBox
|
||||
|
||||
<TextBox
|
||||
x:Name="txttunDNS2"
|
||||
Grid.Column="2"
|
||||
Header="{x:Static resx:ResUI.TbSettingsTunMode}"
|
||||
Style="{StaticResource MyGroupBox}">
|
||||
<TextBox
|
||||
x:Name="txttunDNS2"
|
||||
Margin="{StaticResource SettingItemMargin}"
|
||||
VerticalAlignment="Stretch"
|
||||
AcceptsReturn="True"
|
||||
BorderThickness="1"
|
||||
Style="{StaticResource DefTextBox}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
</GroupBox>
|
||||
VerticalAlignment="Stretch"
|
||||
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.TbSettingsTunMode}"
|
||||
AcceptsReturn="True"
|
||||
BorderThickness="1"
|
||||
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
</Grid>
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
|
||||
@@ -14,6 +14,17 @@ namespace v2rayN.Views
|
||||
public DNSSettingWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
_config = LazyConfig.Instance.GetConfig();
|
||||
|
||||
@@ -44,7 +55,7 @@ namespace v2rayN.Views
|
||||
|
||||
private void linkDnsSingboxObjectDoc_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Utils.ProcessStart("http://sing-box.sagernet.org/zh/configuration/dns/");
|
||||
Utils.ProcessStart("https://sing-box.sagernet.org/zh/configuration/dns/");
|
||||
}
|
||||
|
||||
private void btnCancel_Click(object sender, RoutedEventArgs e)
|
||||
|
||||
@@ -16,6 +16,17 @@ namespace v2rayN.Views
|
||||
public GlobalHotkeySettingWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
_config = LazyConfig.Instance.GetConfig();
|
||||
_config.globalHotkeys ??= new List<KeyEventItem>();
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
Title="v2rayN"
|
||||
Width="900"
|
||||
Height="700"
|
||||
MinWidth="900"
|
||||
MinHeight="700"
|
||||
x:TypeArguments="vms:MainWindowViewModel"
|
||||
Background="{DynamicResource MaterialDesignPaper}"
|
||||
FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
|
||||
@@ -209,7 +207,7 @@
|
||||
<MenuItem
|
||||
x:Name="menuCheckUpdateN"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="v2rayN" />
|
||||
Header="V2rayN" />
|
||||
<MenuItem
|
||||
x:Name="menuCheckUpdateV2flyCore"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
@@ -235,7 +233,7 @@
|
||||
<MenuItem
|
||||
x:Name="menuCheckUpdateSingBoxCore"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="sing-box Core" />
|
||||
Header="Sing-box Core" />
|
||||
<Separator Margin="-40,5" />
|
||||
<MenuItem
|
||||
x:Name="menuCheckUpdateGeo"
|
||||
@@ -388,7 +386,7 @@
|
||||
x:Name="lstGroup"
|
||||
FontSize="{DynamicResource StdFontSize}"
|
||||
ItemContainerStyle="{StaticResource MyChipListBoxItem}"
|
||||
Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}">
|
||||
Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}" MaxHeight="120">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding remarks}" />
|
||||
|
||||
@@ -25,6 +25,19 @@ namespace v2rayN.Views
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
lstGroup.MaxHeight = Math.Floor(SystemParameters.WorkArea.Height * 0.20 / 40) * 40;
|
||||
|
||||
_config = LazyConfig.Instance.GetConfig();
|
||||
|
||||
App.Current.SessionEnding += Current_SessionEnding;
|
||||
@@ -519,10 +532,14 @@ namespace v2rayN.Views
|
||||
var coreInfos = LazyConfig.Instance.GetCoreInfos();
|
||||
foreach (var it in coreInfos)
|
||||
{
|
||||
if (it.coreType == ECoreType.v2fly)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var item = new MenuItem()
|
||||
{
|
||||
Tag = it.coreUrl.Replace(@"/releases", ""),
|
||||
Header = string.Format(Resx.ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " "))
|
||||
Header = string.Format(Resx.ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " ")).UpperFirstChar()
|
||||
};
|
||||
item.Click += MenuItem_Click;
|
||||
menuHelp.Items.Add(item);
|
||||
|
||||
@@ -18,6 +18,17 @@ namespace v2rayN.Views
|
||||
public OptionSettingWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
_config = LazyConfig.Instance.GetConfig();
|
||||
|
||||
|
||||
@@ -12,6 +12,17 @@ namespace v2rayN.Views
|
||||
public RoutingRuleDetailsWindow(RulesItem rulesItem)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
this.Loaded += Window_Loaded;
|
||||
clbProtocol.SelectionChanged += ClbProtocol_SelectionChanged;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
xmlns:resx="clr-namespace:v2rayN.Resx"
|
||||
xmlns:vms="clr-namespace:v2rayN.ViewModels"
|
||||
Title="{x:Static resx:ResUI.menuRoutingRuleSetting}"
|
||||
Width="900"
|
||||
Width="960"
|
||||
Height="700"
|
||||
x:TypeArguments="vms:RoutingRuleSettingViewModel"
|
||||
Background="{DynamicResource MaterialDesignPaper}"
|
||||
@@ -280,7 +280,7 @@
|
||||
Binding="{Binding outboundTag}"
|
||||
Header="outboundTag" />
|
||||
<DataGridTextColumn
|
||||
Width="100"
|
||||
Width="80"
|
||||
Binding="{Binding port}"
|
||||
Header="port" />
|
||||
<DataGridTextColumn
|
||||
@@ -288,15 +288,15 @@
|
||||
Binding="{Binding protocols}"
|
||||
Header="protocol" />
|
||||
<DataGridTextColumn
|
||||
Width="120"
|
||||
Width="110"
|
||||
Binding="{Binding inboundTags}"
|
||||
Header="inboundTag" />
|
||||
<DataGridTextColumn
|
||||
Width="150"
|
||||
Width="220"
|
||||
Binding="{Binding domains}"
|
||||
Header="domain" />
|
||||
<DataGridTextColumn
|
||||
Width="150"
|
||||
Width="220"
|
||||
Binding="{Binding ips}"
|
||||
Header="ip" />
|
||||
<DataGridTextColumn
|
||||
|
||||
@@ -13,6 +13,17 @@ namespace v2rayN.Views
|
||||
public RoutingRuleSettingWindow(RoutingItem routingItem)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
this.Loaded += Window_Loaded;
|
||||
this.PreviewKeyDown += RoutingRuleSettingWindow_PreviewKeyDown;
|
||||
|
||||
@@ -12,6 +12,17 @@ namespace v2rayN.Views
|
||||
public RoutingSettingWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
this.Closing += RoutingSettingWindow_Closing;
|
||||
this.PreviewKeyDown += RoutingSettingWindow_PreviewKeyDown;
|
||||
|
||||
@@ -11,6 +11,17 @@ namespace v2rayN.Views
|
||||
public SubEditWindow(SubItem subItem)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
this.Loaded += Window_Loaded;
|
||||
|
||||
|
||||
@@ -13,6 +13,17 @@ namespace v2rayN.Views
|
||||
public SubSettingWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 设置窗口的尺寸不大于屏幕的尺寸
|
||||
if (this.Width > SystemParameters.WorkArea.Width)
|
||||
{
|
||||
this.Width = SystemParameters.WorkArea.Width;
|
||||
}
|
||||
if (this.Height > SystemParameters.WorkArea.Height)
|
||||
{
|
||||
this.Height = SystemParameters.WorkArea.Height;
|
||||
}
|
||||
|
||||
this.Owner = Application.Current.MainWindow;
|
||||
|
||||
ViewModel = new SubSettingViewModel(this);
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<ApplicationIcon>v2rayN.ico</ApplicationIcon>
|
||||
<Copyright>Copyright © 2017-2023 (GPLv3)</Copyright>
|
||||
<FileVersion>6.26</FileVersion>
|
||||
<FileVersion>6.29</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Downloader" Version="3.0.5" />
|
||||
<PackageReference Include="Downloader" Version="3.0.6" />
|
||||
<PackageReference Include="MaterialDesignThemes" Version="4.9.0" />
|
||||
<PackageReference Include="H.NotifyIcon.Wpf" Version="2.0.108" />
|
||||
<PackageReference Include="H.NotifyIcon.Wpf" Version="2.0.118" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="QRCoder.Xaml" Version="1.4.3" />
|
||||
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
|
||||
@@ -25,8 +25,8 @@
|
||||
<PackageReference Include="ReactiveUI.Fody" Version="18.4.1" />
|
||||
<PackageReference Include="ReactiveUI.Validation" Version="3.0.22" />
|
||||
<PackageReference Include="ReactiveUI.WPF" Version="18.4.1" />
|
||||
<PackageReference Include="Splat.NLog" Version="14.6.37" />
|
||||
<PackageReference Include="System.Reactive" Version="5.0.0" />
|
||||
<PackageReference Include="Splat.NLog" Version="14.7.1" />
|
||||
<PackageReference Include="System.Reactive" Version="6.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -108,6 +108,9 @@
|
||||
<EmbeddedResource Update="Resx\ResUI.zh-Hans.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Update="Resx\ResUI.zh-Hant.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Update="Resx\ResUI.fa-Ir.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
</EmbeddedResource>
|
||||
|
||||
@@ -92,9 +92,9 @@ namespace v2rayUpgrade
|
||||
File.Move(Application.ExecutablePath, thisAppOldFile);
|
||||
}
|
||||
|
||||
string entryOuputPath = GetPath(fullName);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(entryOuputPath)!);
|
||||
entry.ExtractToFile(entryOuputPath, true);
|
||||
string entryOutputPath = GetPath(fullName);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(entryOutputPath)!);
|
||||
entry.ExtractToFile(entryOutputPath, true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -145,4 +145,4 @@ namespace v2rayUpgrade
|
||||
return Path.Combine(startupPath, fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user