mirror of
https://github.com/2dust/v2rayN.git
synced 2025-10-13 20:09:12 +00:00
Fixes
This commit is contained in:
parent
b8dbe61db3
commit
0a2b4374f9
22 changed files with 748 additions and 399 deletions
|
@ -281,13 +281,13 @@ public class Global
|
|||
public static readonly List<string> Hysteria2CoreTypes =
|
||||
[
|
||||
"sing_box",
|
||||
"Hysteria2"
|
||||
"hysteria2"
|
||||
];
|
||||
|
||||
public static readonly List<string> TuicCoreTypes =
|
||||
[
|
||||
"sing_box",
|
||||
"TUIC"
|
||||
"tuic"
|
||||
];
|
||||
|
||||
public static readonly List<EConfigType> SupportSplitConfigTypes =
|
||||
|
|
|
@ -698,7 +698,7 @@ public class ConfigHandler
|
|||
public static async Task<int> AddHysteria2Server(Config config, ProfileItem profileItem, bool toFile = true)
|
||||
{
|
||||
profileItem.ConfigType = EConfigType.Hysteria2;
|
||||
profileItem.CoreType = ECoreType.sing_box;
|
||||
//profileItem.CoreType = ECoreType.sing_box;
|
||||
|
||||
profileItem.Address = profileItem.Address.TrimEx();
|
||||
profileItem.Id = profileItem.Id.TrimEx();
|
||||
|
@ -731,7 +731,7 @@ public class ConfigHandler
|
|||
public static async Task<int> AddTuicServer(Config config, ProfileItem profileItem, bool toFile = true)
|
||||
{
|
||||
profileItem.ConfigType = EConfigType.TUIC;
|
||||
profileItem.CoreType = ECoreType.sing_box;
|
||||
//profileItem.CoreType = ECoreType.sing_box;
|
||||
|
||||
profileItem.Address = profileItem.Address.TrimEx();
|
||||
profileItem.Id = profileItem.Id.TrimEx();
|
||||
|
|
27
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
27
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
|
@ -3426,6 +3426,33 @@ namespace ServiceLib.Resx {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Outbound and routing are decoupled. If their Core types differ, two separate cores will be activated. 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TbSettingsSplitCoreDoc1 {
|
||||
get {
|
||||
return ResourceManager.GetString("TbSettingsSplitCoreDoc1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Routing Core defaults to sing-box when Tun is enabled. 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TbSettingsSplitCoreDoc2 {
|
||||
get {
|
||||
return ResourceManager.GetString("TbSettingsSplitCoreDoc2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Enable separation of outbound and routing cores 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TbSettingsSplitCoreEnable {
|
||||
get {
|
||||
return ResourceManager.GetString("TbSettingsSplitCoreEnable", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 sing-box ruleset files source (optional) 的本地化字符串。
|
||||
/// </summary>
|
||||
|
|
|
@ -1404,4 +1404,13 @@
|
|||
<data name="menuAddAnytlsServer" xml:space="preserve">
|
||||
<value>Add [Anytls] Configuration</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreEnable" xml:space="preserve">
|
||||
<value>Enable separation of outbound and routing cores</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc1" xml:space="preserve">
|
||||
<value>Outbound and routing are decoupled. If their Core types differ, two separate cores will be activated.</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc2" xml:space="preserve">
|
||||
<value>Routing Core defaults to sing-box when Tun is enabled.</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1404,4 +1404,13 @@
|
|||
<data name="menuAddAnytlsServer" xml:space="preserve">
|
||||
<value>[Anytls] konfiguráció hozzáadása</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreEnable" xml:space="preserve">
|
||||
<value>Enable separation of outbound and routing cores</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc1" xml:space="preserve">
|
||||
<value>Outbound and routing are decoupled. If their Core types differ, two separate cores will be activated.</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc2" xml:space="preserve">
|
||||
<value>Routing Core defaults to sing-box when Tun is enabled.</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1404,4 +1404,13 @@
|
|||
<data name="menuAddAnytlsServer" xml:space="preserve">
|
||||
<value>Add [Anytls] Configuration</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreEnable" xml:space="preserve">
|
||||
<value>Enable separation of outbound and routing cores</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc1" xml:space="preserve">
|
||||
<value>Outbound and routing are decoupled. If their Core types differ, two separate cores will be activated.</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc2" xml:space="preserve">
|
||||
<value>Routing Core defaults to sing-box when Tun is enabled.</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1404,4 +1404,13 @@
|
|||
<data name="menuAddAnytlsServer" xml:space="preserve">
|
||||
<value>Добавить сервер [Anytls]</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreEnable" xml:space="preserve">
|
||||
<value>Enable separation of outbound and routing cores</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc1" xml:space="preserve">
|
||||
<value>Outbound and routing are decoupled. If their Core types differ, two separate cores will be activated.</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc2" xml:space="preserve">
|
||||
<value>Routing Core defaults to sing-box when Tun is enabled.</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1401,4 +1401,13 @@
|
|||
<data name="menuAddAnytlsServer" xml:space="preserve">
|
||||
<value>添加 [Anytls] 配置文件</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreEnable" xml:space="preserve">
|
||||
<value>启用出站核心与路由核心分离</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc1" xml:space="preserve">
|
||||
<value>出站与路由分离,出站与分流 Core 类型不同时,将启用两个核心</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc2" xml:space="preserve">
|
||||
<value>启用 Tun 时,路由 Core 为 sing-box</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1401,4 +1401,13 @@
|
|||
<data name="menuAddAnytlsServer" xml:space="preserve">
|
||||
<value>新增 [Anytls] 設定檔</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreEnable" xml:space="preserve">
|
||||
<value>Enable separation of outbound and routing cores</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc1" xml:space="preserve">
|
||||
<value>Outbound and routing are decoupled. If their Core types differ, two separate cores will be activated.</value>
|
||||
</data>
|
||||
<data name="TbSettingsSplitCoreDoc2" xml:space="preserve">
|
||||
<value>Routing Core defaults to sing-box when Tun is enabled.</value>
|
||||
</data>
|
||||
</root>
|
|
@ -2,6 +2,7 @@ using System.Data;
|
|||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Reactive;
|
||||
using System.Text.Json.Nodes;
|
||||
using DynamicData;
|
||||
using ServiceLib.Models;
|
||||
|
||||
|
@ -587,7 +588,7 @@ public class CoreConfigSingboxService
|
|||
|
||||
config.Remove("route");
|
||||
|
||||
ret.Data = config.ToJsonString(new() { WriteIndented = true });
|
||||
ret.Data = JsonUtils.Serialize(config, true);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -453,6 +453,10 @@ public class CoreConfigV2rayService
|
|||
await GenLog(v2rayConfig);
|
||||
|
||||
var inbound = GetInbound(_config.Inbound.First(), EInboundProtocol.split, true);
|
||||
inbound.sniffing = new Sniffing4Ray
|
||||
{
|
||||
enabled = false
|
||||
};
|
||||
|
||||
v2rayConfig.inbounds = new() { inbound };
|
||||
|
||||
|
@ -469,7 +473,7 @@ public class CoreConfigV2rayService
|
|||
|
||||
config.Remove("routing");
|
||||
|
||||
ret.Data = config.ToJsonString(new() { WriteIndented = true });
|
||||
ret.Data = JsonUtils.Serialize(config, true);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ public class CoreConfigBrookService
|
|||
processArgs += " --server " + node.Address + ":" + node.Port;
|
||||
processArgs += " --password " + node.Id;
|
||||
|
||||
ret.Success = true;
|
||||
ret.Data = processArgs;
|
||||
|
||||
return await Task.FromResult(ret);
|
||||
|
|
|
@ -74,7 +74,8 @@ public class CoreConfigHy2Service
|
|||
configJsonNode["bandwidth"] = bandwidthObject;
|
||||
}
|
||||
|
||||
ret.Data = configJsonNode.ToJsonString(new() { WriteIndented = true });
|
||||
ret.Success = true;
|
||||
ret.Data = JsonUtils.Serialize(configJsonNode, true);
|
||||
|
||||
return await Task.FromResult(ret);
|
||||
}
|
||||
|
|
|
@ -56,9 +56,10 @@ public class CoreConfigJuicityService
|
|||
configJsonNode["sni"] = node.Sni;
|
||||
}
|
||||
configJsonNode["allow_insecure"] = node.AllowInsecure == "true";
|
||||
configJsonNode["congestion_control"] = "bbr";
|
||||
configJsonNode["congestion_control"] = node.HeaderType;
|
||||
|
||||
ret.Data = configJsonNode.ToJsonString(new() { WriteIndented = true });
|
||||
ret.Success = true;
|
||||
ret.Data = JsonUtils.Serialize(configJsonNode, true);
|
||||
|
||||
return await Task.FromResult(ret);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,8 @@ public class CoreConfigNaiveService
|
|||
// outbound
|
||||
configJsonNode["proxy"] = (node.Network == "quic" ? "quic://" : Global.HttpsProtocol) + node.Id + "@" + node.Address + ":" + node.Port;
|
||||
|
||||
ret.Data = configJsonNode.ToJsonString(new() { WriteIndented = true });
|
||||
ret.Success = true;
|
||||
ret.Data = JsonUtils.Serialize(configJsonNode, true);
|
||||
|
||||
return await Task.FromResult(ret);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
using System.Text.Json.Nodes;
|
||||
|
||||
namespace ServiceLib.Services.CoreConfig.Minimal;
|
||||
public class CoreConfigShadowquicService
|
||||
{
|
||||
|
@ -51,14 +53,24 @@ public class CoreConfigShadowquicService
|
|||
configYamlNode["inbound"] = inboundNode;
|
||||
|
||||
// outbound
|
||||
var alpn = new JsonArray();
|
||||
foreach (var item in node.GetAlpn() ?? new List<string>())
|
||||
{
|
||||
alpn.Add(item);
|
||||
}
|
||||
if (alpn.Count == 0)
|
||||
{
|
||||
alpn.Add("h3");
|
||||
}
|
||||
|
||||
var outboundNode = new Dictionary<string, object>
|
||||
{
|
||||
["type"] = "shadowquic",
|
||||
["addr"] = node.Address + ":" + node.Port,
|
||||
["password"] = node.Id,
|
||||
["username"] = node.Security,
|
||||
["alpn"] = new List<string> { "h3" },
|
||||
["congestion-control"] = "bbr",
|
||||
["alpn"] = alpn,
|
||||
["congestion-control"] = node.HeaderType,
|
||||
["zero-rtt"] = true
|
||||
};
|
||||
if (node.Sni.IsNotEmpty())
|
||||
|
@ -67,6 +79,7 @@ public class CoreConfigShadowquicService
|
|||
}
|
||||
configYamlNode["outbound"] = outboundNode;
|
||||
|
||||
ret.Success = true;
|
||||
ret.Data = YamlUtils.ToYaml(configYamlNode);
|
||||
|
||||
return await Task.FromResult(ret);
|
||||
|
|
|
@ -51,17 +51,28 @@ public class CoreConfigTuicService
|
|||
};
|
||||
|
||||
// outbound
|
||||
var alpn = new JsonArray();
|
||||
foreach(var item in node.GetAlpn() ?? new List<string>())
|
||||
{
|
||||
alpn.Add(item);
|
||||
}
|
||||
if (alpn.Count == 0)
|
||||
{
|
||||
alpn.Add("h3");
|
||||
}
|
||||
|
||||
configJsonNode["relay"] = new JsonObject
|
||||
{
|
||||
["server"] = node.Address + ":" + node.Port,
|
||||
["uuid"] = node.Id,
|
||||
["password"] = node.Security,
|
||||
["udp_relay_mode"] = "quic",
|
||||
["congestion_control"] = "bbr",
|
||||
["alpn"] = new JsonArray { "h3", "spdy/3.1" }
|
||||
["congestion_control"] = node.HeaderType,
|
||||
["alpn"] = alpn
|
||||
};
|
||||
|
||||
ret.Data = configJsonNode.ToJsonString(new() { WriteIndented = true });
|
||||
ret.Success = true;
|
||||
ret.Data = JsonUtils.Serialize(configJsonNode, true);
|
||||
|
||||
return await Task.FromResult(ret);
|
||||
}
|
||||
|
|
|
@ -78,7 +78,8 @@ public partial class AddServerWindow : WindowBase<AddServerViewModel>
|
|||
gridHysteria2.IsVisible = true;
|
||||
sepa2.IsVisible = false;
|
||||
gridTransport.IsVisible = false;
|
||||
cmbCoreType.IsEnabled = false;
|
||||
//cmbCoreType.IsEnabled = false;
|
||||
cmbCoreType.ItemsSource = Global.Hysteria2CoreTypes;
|
||||
cmbFingerprint.IsEnabled = false;
|
||||
cmbFingerprint.SelectedValue = string.Empty;
|
||||
break;
|
||||
|
@ -87,7 +88,8 @@ public partial class AddServerWindow : WindowBase<AddServerViewModel>
|
|||
gridTuic.IsVisible = true;
|
||||
sepa2.IsVisible = false;
|
||||
gridTransport.IsVisible = false;
|
||||
cmbCoreType.IsEnabled = false;
|
||||
//cmbCoreType.IsEnabled = false;
|
||||
cmbCoreType.ItemsSource = Global.TuicCoreTypes;
|
||||
cmbFingerprint.IsEnabled = false;
|
||||
cmbFingerprint.SelectedValue = string.Empty;
|
||||
|
||||
|
|
|
@ -802,101 +802,298 @@
|
|||
</TabItem>
|
||||
|
||||
<TabItem Header="{x:Static resx:ResUI.TbSettingsCoreType}">
|
||||
<Grid
|
||||
Margin="{StaticResource Margin4}"
|
||||
ColumnDefinitions="Auto,Auto"
|
||||
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="VMess" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType1"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
<ScrollViewer VerticalScrollBarVisibility="Visible">
|
||||
<Grid Margin="{StaticResource Margin4}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Custom" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType2"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Shadowsocks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType3"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="VMess" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType1"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Socks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType4"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Custom" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType2"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="VLESS" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType5"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Shadowsocks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType3"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Trojan" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType6"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Socks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType4"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Wireguard" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType9"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
</Grid>
|
||||
<TextBlock
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="VLESS" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType5"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Trojan" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType6"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Wireguard" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType9"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
</Grid>
|
||||
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Margin="{StaticResource Margin4}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{x:Static resx:ResUI.TbSettingsSplitCoreDoc1}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{x:Static resx:ResUI.TbSettingsSplitCoreDoc2}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{x:Static resx:ResUI.TbSettingsSplitCoreEnable}" />
|
||||
<ToggleSwitch
|
||||
x:Name="togCoreSplit"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Margin="{StaticResource Margin4}"
|
||||
HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="路由 Core" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitRouteType"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="VMess" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType1"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Shadowsocks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType3"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Socks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType4"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="VLESS" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType5"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="8"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Trojan" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType6"
|
||||
Grid.Row="8"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="9"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Hysteria2" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType7"
|
||||
Grid.Row="9"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="10"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="TUIC" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType8"
|
||||
Grid.Row="10"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="11"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin4}"
|
||||
VerticalAlignment="Center"
|
||||
Text="Wireguard" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType9"
|
||||
Grid.Row="11"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin4}" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</DockPanel>
|
||||
|
|
|
@ -41,6 +41,17 @@ public partial class OptionSettingWindow : WindowBase<OptionSettingViewModel>
|
|||
cmbCoreType6.ItemsSource = Global.CoreTypes;
|
||||
cmbCoreType9.ItemsSource = Global.CoreTypes;
|
||||
|
||||
cmbCoreSplitRouteType.ItemsSource = Global.CoreTypes;
|
||||
|
||||
cmbCoreSplitType1.ItemsSource = Global.CoreTypes;
|
||||
cmbCoreSplitType3.ItemsSource = Global.CoreTypes;
|
||||
cmbCoreSplitType4.ItemsSource = Global.CoreTypes;
|
||||
cmbCoreSplitType5.ItemsSource = Global.CoreTypes;
|
||||
cmbCoreSplitType6.ItemsSource = Global.CoreTypes;
|
||||
cmbCoreSplitType7.ItemsSource = Global.Hysteria2CoreTypes;
|
||||
cmbCoreSplitType8.ItemsSource = Global.TuicCoreTypes;
|
||||
cmbCoreSplitType9.ItemsSource = Global.CoreTypes;
|
||||
|
||||
cmbMixedConcurrencyCount.ItemsSource = Enumerable.Range(2, 7).ToList();
|
||||
cmbSpeedTestTimeout.ItemsSource = Enumerable.Range(2, 5).Select(i => i * 5).ToList();
|
||||
cmbSpeedTestUrl.ItemsSource = Global.SpeedTestUrls;
|
||||
|
@ -119,6 +130,18 @@ public partial class OptionSettingWindow : WindowBase<OptionSettingViewModel>
|
|||
this.Bind(ViewModel, vm => vm.CoreType6, v => v.cmbCoreType6.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.CoreType9, v => v.cmbCoreType9.SelectedValue).DisposeWith(disposables);
|
||||
|
||||
this.Bind(ViewModel, vm => vm.EnableSplitCore, v => v.togCoreSplit.IsChecked).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.RouteSplitCoreType, v => v.cmbCoreSplitRouteType.SelectedValue).DisposeWith(disposables);
|
||||
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType1, v => v.cmbCoreSplitType1.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType3, v => v.cmbCoreSplitType3.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType4, v => v.cmbCoreSplitType4.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType5, v => v.cmbCoreSplitType5.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType6, v => v.cmbCoreSplitType6.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType7, v => v.cmbCoreSplitType7.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType8, v => v.cmbCoreSplitType8.SelectedValue).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SplitCoreType9, v => v.cmbCoreSplitType9.SelectedValue).DisposeWith(disposables);
|
||||
|
||||
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
|
||||
});
|
||||
|
||||
|
|
|
@ -72,7 +72,8 @@ public partial class AddServerWindow
|
|||
gridHysteria2.Visibility = Visibility.Visible;
|
||||
sepa2.Visibility = Visibility.Collapsed;
|
||||
gridTransport.Visibility = Visibility.Collapsed;
|
||||
cmbCoreType.IsEnabled = false;
|
||||
//cmbCoreType.IsEnabled = false;
|
||||
cmbCoreType.ItemsSource = Global.Hysteria2CoreTypes;
|
||||
cmbFingerprint.IsEnabled = false;
|
||||
cmbFingerprint.Text = string.Empty;
|
||||
break;
|
||||
|
@ -81,7 +82,8 @@ public partial class AddServerWindow
|
|||
gridTuic.Visibility = Visibility.Visible;
|
||||
sepa2.Visibility = Visibility.Collapsed;
|
||||
gridTransport.Visibility = Visibility.Collapsed;
|
||||
cmbCoreType.IsEnabled = false;
|
||||
//cmbCoreType.IsEnabled = false;
|
||||
cmbCoreType.ItemsSource = Global.TuicCoreTypes;
|
||||
cmbFingerprint.IsEnabled = false;
|
||||
cmbFingerprint.Text = string.Empty;
|
||||
|
||||
|
|
|
@ -1107,318 +1107,329 @@
|
|||
</TabItem>
|
||||
|
||||
<TabItem Header="{x:Static resx:ResUI.TbSettingsCoreType}">
|
||||
<Grid Margin="{StaticResource Margin8}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Visible">
|
||||
<Grid Margin="{StaticResource Margin8}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VMess" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType1"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Custom" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType2"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Shadowsocks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType3"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Socks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType4"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VLESS" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType5"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Trojan" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType6"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Wireguard" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType9"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
</Grid>
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Margin="{StaticResource Margin8}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="出站与路由分离,出站与分流 Core 类型不同时,将启用两个核心" />
|
||||
Margin="{StaticResource Margin8}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VMess" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType1"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="出站与路由分离" />
|
||||
<ToggleButton
|
||||
x:Name="togCoreSplit"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Margin="{StaticResource Margin8}"
|
||||
HorizontalAlignment="Left" />
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Custom" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType2"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="路由 Core" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitRouteType"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Shadowsocks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType3"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VMess" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType1"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Socks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType4"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Shadowsocks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType3"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VLESS" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType5"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Socks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType4"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Trojan" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType6"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VLESS" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType5"
|
||||
Grid.Row="6"
|
||||
<TextBlock
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Wireguard" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreType9"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
</Grid>
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
Margin="{StaticResource Margin8}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="{x:Static resx:ResUI.TbSettingsSplitCoreDoc1}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Trojan" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType6"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="{x:Static resx:ResUI.TbSettingsSplitCoreDoc2}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="8"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Hysteria2" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType7"
|
||||
Grid.Row="8"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="{x:Static resx:ResUI.TbSettingsSplitCoreEnable}" />
|
||||
<ToggleButton
|
||||
x:Name="togCoreSplit"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Margin="{StaticResource Margin8}"
|
||||
HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="9"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="TUIC" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType8"
|
||||
Grid.Row="9"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="路由 Core" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitRouteType"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="10"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Wireguard" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType9"
|
||||
Grid.Row="10"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VMess" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType1"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Shadowsocks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType3"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Socks" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType4"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="VLESS" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType5"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="8"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Trojan" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType6"
|
||||
Grid.Row="8"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="9"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Hysteria2" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType7"
|
||||
Grid.Row="9"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="10"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="TUIC" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType8"
|
||||
Grid.Row="10"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="11"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource Margin8}"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ToolbarTextBlock}"
|
||||
Text="Wireguard" />
|
||||
<ComboBox
|
||||
x:Name="cmbCoreSplitType9"
|
||||
Grid.Row="11"
|
||||
Grid.Column="1"
|
||||
Width="200"
|
||||
Margin="{StaticResource Margin8}"
|
||||
Style="{StaticResource DefComboBox}" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</DockPanel>
|
||||
|
|
Loading…
Reference in a new issue