mirror of
https://github.com/2dust/v2rayN.git
synced 2026-04-16 12:35:46 +00:00
Compare commits
1 commit
2918cc92ac
...
24d7b0b899
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24d7b0b899 |
22 changed files with 28 additions and 116 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
<Project>
|
<Project>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>7.20.1</Version>
|
<Version>7.19.5</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,11 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageVersion Include="Avalonia.AvaloniaEdit" Version="11.4.1" />
|
<PackageVersion Include="Avalonia.AvaloniaEdit" Version="11.4.1" />
|
||||||
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="11.3.13" />
|
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="11.3.12" />
|
||||||
<PackageVersion Include="Avalonia.Desktop" Version="11.3.13" />
|
<PackageVersion Include="Avalonia.Desktop" Version="11.3.12" />
|
||||||
<PackageVersion Include="Avalonia.Diagnostics" Version="11.3.13" />
|
<PackageVersion Include="Avalonia.Diagnostics" Version="11.3.12" />
|
||||||
<PackageVersion Include="ReactiveUI.Avalonia" Version="11.4.12" />
|
<PackageVersion Include="ReactiveUI.Avalonia" Version="11.4.12" />
|
||||||
<PackageVersion Include="CliWrap" Version="3.10.1" />
|
<PackageVersion Include="CliWrap" Version="3.10.0" />
|
||||||
<PackageVersion Include="Downloader" Version="5.1.0" />
|
<PackageVersion Include="Downloader" Version="5.1.0" />
|
||||||
<PackageVersion Include="H.NotifyIcon.Wpf" Version="2.4.1" />
|
<PackageVersion Include="H.NotifyIcon.Wpf" Version="2.4.1" />
|
||||||
<PackageVersion Include="MaterialDesignThemes" Version="5.3.1" />
|
<PackageVersion Include="MaterialDesignThemes" Version="5.3.1" />
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,6 @@ public static class ConfigHandler
|
||||||
EnableTun = false,
|
EnableTun = false,
|
||||||
Mtu = 9000,
|
Mtu = 9000,
|
||||||
IcmpRouting = Global.TunIcmpRoutingPolicies.First(),
|
IcmpRouting = Global.TunIcmpRoutingPolicies.First(),
|
||||||
EnableLegacyProtect = false,
|
|
||||||
};
|
};
|
||||||
config.GuiItem ??= new();
|
config.GuiItem ??= new();
|
||||||
config.MsgUIItem ??= new();
|
config.MsgUIItem ??= new();
|
||||||
|
|
@ -1415,32 +1414,19 @@ public static class ConfigHandler
|
||||||
/// <returns>A SOCKS profile item or null if not needed</returns>
|
/// <returns>A SOCKS profile item or null if not needed</returns>
|
||||||
public static ProfileItem? GetPreSocksItem(Config config, ProfileItem node, ECoreType coreType)
|
public static ProfileItem? GetPreSocksItem(Config config, ProfileItem node, ECoreType coreType)
|
||||||
{
|
{
|
||||||
|
if (node.ConfigType != EConfigType.Custom || !(node.PreSocksPort > 0))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
ProfileItem? itemSocks = null;
|
ProfileItem? itemSocks = null;
|
||||||
if (node.ConfigType != EConfigType.Custom
|
var preCoreType = AppManager.Instance.RunningCoreType = config.TunModeItem.EnableTun ? ECoreType.sing_box : ECoreType.Xray;
|
||||||
&& coreType != ECoreType.sing_box
|
itemSocks = new ProfileItem()
|
||||||
&& config.TunModeItem.EnableTun
|
|
||||||
&& config.TunModeItem.EnableLegacyProtect)
|
|
||||||
{
|
{
|
||||||
itemSocks = new ProfileItem()
|
CoreType = preCoreType,
|
||||||
{
|
ConfigType = EConfigType.SOCKS,
|
||||||
CoreType = ECoreType.sing_box,
|
Address = Global.Loopback,
|
||||||
ConfigType = EConfigType.SOCKS,
|
Port = node.PreSocksPort.Value,
|
||||||
Address = Global.Loopback,
|
};
|
||||||
Port = AppManager.Instance.GetLocalPort(EInboundProtocol.socks)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else if (node.ConfigType == EConfigType.Custom
|
|
||||||
&& node.PreSocksPort is > 0 and <= 65535)
|
|
||||||
{
|
|
||||||
var preCoreType = config.TunModeItem.EnableTun ? ECoreType.sing_box : ECoreType.Xray;
|
|
||||||
itemSocks = new ProfileItem()
|
|
||||||
{
|
|
||||||
CoreType = preCoreType,
|
|
||||||
ConfigType = EConfigType.SOCKS,
|
|
||||||
Address = Global.Loopback,
|
|
||||||
Port = node.PreSocksPort.Value,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return itemSocks;
|
return itemSocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,9 +90,6 @@ public class CoreManager
|
||||||
|
|
||||||
await CoreStart(mainContext);
|
await CoreStart(mainContext);
|
||||||
await CoreStartPreService(preContext);
|
await CoreStartPreService(preContext);
|
||||||
|
|
||||||
AppManager.Instance.RunningCoreType = preContext?.RunCoreType ?? mainContext.RunCoreType;
|
|
||||||
|
|
||||||
if (_processService != null)
|
if (_processService != null)
|
||||||
{
|
{
|
||||||
await UpdateFunc(true, $"{node.GetSummary()}");
|
await UpdateFunc(true, $"{node.GetSummary()}");
|
||||||
|
|
@ -175,7 +172,7 @@ public class CoreManager
|
||||||
private async Task CoreStart(CoreConfigContext context)
|
private async Task CoreStart(CoreConfigContext context)
|
||||||
{
|
{
|
||||||
var node = context.Node;
|
var node = context.Node;
|
||||||
var coreType = AppManager.Instance.GetCoreType(node, node.ConfigType);
|
var coreType = AppManager.Instance.RunningCoreType = AppManager.Instance.GetCoreType(node, node.ConfigType);
|
||||||
var coreInfo = CoreInfoManager.Instance.GetCoreInfo(coreType);
|
var coreInfo = CoreInfoManager.Instance.GetCoreInfo(coreType);
|
||||||
|
|
||||||
var displayLog = node.ConfigType != EConfigType.Custom || node.DisplayLog;
|
var displayLog = node.ConfigType != EConfigType.Custom || node.DisplayLog;
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,6 @@ public class TunModeItem
|
||||||
public int Mtu { get; set; }
|
public int Mtu { get; set; }
|
||||||
public bool EnableIPv6Address { get; set; }
|
public bool EnableIPv6Address { get; set; }
|
||||||
public string IcmpRouting { get; set; }
|
public string IcmpRouting { get; set; }
|
||||||
public bool EnableLegacyProtect { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
|
|
||||||
9
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
9
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
|
|
@ -3168,15 +3168,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Legacy TUN Protect 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string TbLegacyProtect {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("TbLegacyProtect", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Address (IPv4, IPv6) 的本地化字符串。
|
/// 查找类似 Address (IPv4, IPv6) 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -1695,9 +1695,6 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
||||||
<value>ICMP routing policy</value>
|
<value>ICMP routing policy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbLegacyProtect" xml:space="preserve">
|
|
||||||
<value>Legacy TUN Protect</value>
|
|
||||||
</data>
|
|
||||||
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
||||||
<value>Allow insecure cert fetch (self-signed)</value>
|
<value>Allow insecure cert fetch (self-signed)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -1692,9 +1692,6 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
||||||
<value>ICMP routing policy</value>
|
<value>ICMP routing policy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbLegacyProtect" xml:space="preserve">
|
|
||||||
<value>Legacy TUN Protect</value>
|
|
||||||
</data>
|
|
||||||
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
||||||
<value>Allow insecure cert fetch (self-signed)</value>
|
<value>Allow insecure cert fetch (self-signed)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -1695,9 +1695,6 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
||||||
<value>ICMP routing policy</value>
|
<value>ICMP routing policy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbLegacyProtect" xml:space="preserve">
|
|
||||||
<value>Legacy TUN Protect</value>
|
|
||||||
</data>
|
|
||||||
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
||||||
<value>Allow insecure cert fetch (self-signed)</value>
|
<value>Allow insecure cert fetch (self-signed)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -1695,9 +1695,6 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
||||||
<value>ICMP routing policy</value>
|
<value>ICMP routing policy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbLegacyProtect" xml:space="preserve">
|
|
||||||
<value>Legacy TUN Protect</value>
|
|
||||||
</data>
|
|
||||||
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
||||||
<value>Allow insecure cert fetch (self-signed)</value>
|
<value>Allow insecure cert fetch (self-signed)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -1695,9 +1695,6 @@
|
||||||
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
||||||
<value>ICMP routing policy</value>
|
<value>ICMP routing policy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbLegacyProtect" xml:space="preserve">
|
|
||||||
<value>Legacy TUN Protect</value>
|
|
||||||
</data>
|
|
||||||
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
||||||
<value>Allow insecure cert fetch (self-signed)</value>
|
<value>Allow insecure cert fetch (self-signed)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -1692,9 +1692,6 @@
|
||||||
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
||||||
<value>ICMP 路由策略</value>
|
<value>ICMP 路由策略</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbLegacyProtect" xml:space="preserve">
|
|
||||||
<value>旧版 TUN 保护</value>
|
|
||||||
</data>
|
|
||||||
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
||||||
<value>允许不安全获取证书(自签名)</value>
|
<value>允许不安全获取证书(自签名)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -1692,9 +1692,6 @@
|
||||||
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
<data name="TbIcmpRoutingPolicy" xml:space="preserve">
|
||||||
<value>ICMP 路由策略</value>
|
<value>ICMP 路由策略</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbLegacyProtect" xml:space="preserve">
|
|
||||||
<value>Legacy TUN Protect</value>
|
|
||||||
</data>
|
|
||||||
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
<data name="TbAllowInsecureCertFetch" xml:space="preserve">
|
||||||
<value>允許不安全獲取證書(自簽名)</value>
|
<value>允許不安全獲取證書(自簽名)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,7 @@ public partial class CoreConfigSingboxService(CoreConfigContext context)
|
||||||
ret.Success = true;
|
ret.Success = true;
|
||||||
|
|
||||||
ret.Data = ApplyFullConfigTemplate();
|
ret.Data = ApplyFullConfigTemplate();
|
||||||
if (!context.AppConfig.TunModeItem.EnableLegacyProtect
|
if (context.TunProtectSsPort is > 0 and <= 65535)
|
||||||
&& context.TunProtectSsPort is > 0 and <= 65535)
|
|
||||||
{
|
{
|
||||||
var ssInbound = new
|
var ssInbound = new
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ public partial class CoreConfigSingboxService
|
||||||
}
|
}
|
||||||
if (withSelector)
|
if (withSelector)
|
||||||
{
|
{
|
||||||
var proxyTags = proxyOutboundList.Where(n => n.tag.StartsWith(baseTagName)).Select(n => n.tag).ToList();
|
var proxyTags = proxyOutboundList.Where(n => n.tag.StartsWith(Global.ProxyTag)).Select(n => n.tag).ToList();
|
||||||
if (proxyTags.Count > 1)
|
if (proxyTags.Count > 1)
|
||||||
{
|
{
|
||||||
proxyOutboundList.InsertRange(0, BuildSelectorOutbounds(proxyTags, baseTagName));
|
proxyOutboundList.InsertRange(0, BuildSelectorOutbounds(proxyTags, baseTagName));
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,7 @@ public partial class CoreConfigV2rayService(CoreConfigContext context)
|
||||||
var ret = new RetResult();
|
var ret = new RetResult();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!context.AppConfig.TunModeItem.EnableLegacyProtect
|
if (context.IsTunEnabled && context.TunProtectSsPort > 0 && context.ProxyRelaySsPort > 0)
|
||||||
&& context.IsTunEnabled
|
|
||||||
&& context.TunProtectSsPort is > 0 and <= 65535
|
|
||||||
&& context.ProxyRelaySsPort is > 0 and <= 65535)
|
|
||||||
{
|
{
|
||||||
return GenerateClientProxyRelayConfig();
|
return GenerateClientProxyRelayConfig();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,6 @@ public class OptionSettingViewModel : MyReactiveObject
|
||||||
[Reactive] public int TunMtu { get; set; }
|
[Reactive] public int TunMtu { get; set; }
|
||||||
[Reactive] public bool TunEnableIPv6Address { get; set; }
|
[Reactive] public bool TunEnableIPv6Address { get; set; }
|
||||||
[Reactive] public string TunIcmpRouting { get; set; }
|
[Reactive] public string TunIcmpRouting { get; set; }
|
||||||
[Reactive] public bool TunEnableLegacyProtect { get; set; }
|
|
||||||
|
|
||||||
#endregion Tun mode
|
#endregion Tun mode
|
||||||
|
|
||||||
|
|
@ -221,7 +220,6 @@ public class OptionSettingViewModel : MyReactiveObject
|
||||||
TunMtu = _config.TunModeItem.Mtu;
|
TunMtu = _config.TunModeItem.Mtu;
|
||||||
TunEnableIPv6Address = _config.TunModeItem.EnableIPv6Address;
|
TunEnableIPv6Address = _config.TunModeItem.EnableIPv6Address;
|
||||||
TunIcmpRouting = _config.TunModeItem.IcmpRouting;
|
TunIcmpRouting = _config.TunModeItem.IcmpRouting;
|
||||||
TunEnableLegacyProtect = _config.TunModeItem.EnableLegacyProtect;
|
|
||||||
|
|
||||||
#endregion Tun mode
|
#endregion Tun mode
|
||||||
|
|
||||||
|
|
@ -381,7 +379,6 @@ public class OptionSettingViewModel : MyReactiveObject
|
||||||
_config.TunModeItem.Mtu = TunMtu;
|
_config.TunModeItem.Mtu = TunMtu;
|
||||||
_config.TunModeItem.EnableIPv6Address = TunEnableIPv6Address;
|
_config.TunModeItem.EnableIPv6Address = TunEnableIPv6Address;
|
||||||
_config.TunModeItem.IcmpRouting = TunIcmpRouting;
|
_config.TunModeItem.IcmpRouting = TunIcmpRouting;
|
||||||
_config.TunModeItem.EnableLegacyProtect = TunEnableLegacyProtect;
|
|
||||||
|
|
||||||
//coreType
|
//coreType
|
||||||
await SaveCoreType();
|
await SaveCoreType();
|
||||||
|
|
|
||||||
|
|
@ -709,22 +709,18 @@ public class ProfilesViewModel : MyReactiveObject
|
||||||
|
|
||||||
public async Task ServerSpeedtest(ESpeedActionType actionType)
|
public async Task ServerSpeedtest(ESpeedActionType actionType)
|
||||||
{
|
{
|
||||||
List<ProfileItem>? lstSelected;
|
if (actionType == ESpeedActionType.Mixedtest)
|
||||||
if (actionType is ESpeedActionType.Mixedtest or ESpeedActionType.FastRealping)
|
|
||||||
{
|
{
|
||||||
if (actionType == ESpeedActionType.FastRealping)
|
SelectedProfiles = ProfileItems;
|
||||||
{
|
|
||||||
actionType = ESpeedActionType.Realping;
|
|
||||||
}
|
|
||||||
|
|
||||||
lstSelected = JsonUtils.Deserialize<List<ProfileItem>>(JsonUtils.Serialize(ProfileItems?.OrderBy(t => t.Sort)));
|
|
||||||
}
|
}
|
||||||
else
|
else if (actionType == ESpeedActionType.FastRealping)
|
||||||
{
|
{
|
||||||
lstSelected = await GetProfileItems(false);
|
SelectedProfiles = ProfileItems;
|
||||||
|
actionType = ESpeedActionType.Realping;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lstSelected is null || lstSelected.Count <= 0)
|
var lstSelected = await GetProfileItems(false);
|
||||||
|
if (lstSelected == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -768,7 +768,7 @@
|
||||||
Margin="{StaticResource Margin4}"
|
Margin="{StaticResource Margin4}"
|
||||||
ColumnDefinitions="Auto,Auto,Auto"
|
ColumnDefinitions="Auto,Auto,Auto"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
|
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
|
|
@ -851,18 +851,6 @@
|
||||||
Margin="{StaticResource Margin4}"
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Left" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
Grid.Row="8"
|
|
||||||
Grid.Column="0"
|
|
||||||
Margin="{StaticResource Margin4}"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Text="{x:Static resx:ResUI.TbLegacyProtect}" />
|
|
||||||
<ToggleSwitch
|
|
||||||
x:Name="togEnableLegacyProtect"
|
|
||||||
Grid.Row="8"
|
|
||||||
Grid.Column="1"
|
|
||||||
Margin="{StaticResource Margin4}"
|
|
||||||
HorizontalAlignment="Left" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,6 @@ public partial class OptionSettingWindow : WindowBase<OptionSettingViewModel>
|
||||||
this.Bind(ViewModel, vm => vm.TunMtu, v => v.cmbMtu.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.TunMtu, v => v.cmbMtu.SelectedValue).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.TunEnableIPv6Address, v => v.togEnableIPv6Address.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.TunEnableIPv6Address, v => v.togEnableIPv6Address.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.TunIcmpRouting, v => v.cmbIcmpRoutingPolicy.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.TunIcmpRouting, v => v.cmbIcmpRoutingPolicy.SelectedValue).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.TunEnableLegacyProtect, v => v.togEnableLegacyProtect.IsChecked).DisposeWith(disposables);
|
|
||||||
|
|
||||||
this.Bind(ViewModel, vm => vm.CoreType1, v => v.cmbCoreType1.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.CoreType1, v => v.cmbCoreType1.SelectedValue).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.CoreType2, v => v.cmbCoreType2.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.CoreType2, v => v.cmbCoreType2.SelectedValue).DisposeWith(disposables);
|
||||||
|
|
|
||||||
|
|
@ -1009,7 +1009,6 @@
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
|
|
@ -1106,20 +1105,6 @@
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Margin="{StaticResource Margin8}"
|
Margin="{StaticResource Margin8}"
|
||||||
HorizontalAlignment="Left" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
Grid.Row="8"
|
|
||||||
Grid.Column="0"
|
|
||||||
Margin="{StaticResource Margin8}"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Style="{StaticResource ToolbarTextBlock}"
|
|
||||||
Text="{x:Static resx:ResUI.TbLegacyProtect}" />
|
|
||||||
<ToggleButton
|
|
||||||
x:Name="togEnableLegacyProtect"
|
|
||||||
Grid.Row="8"
|
|
||||||
Grid.Column="1"
|
|
||||||
Margin="{StaticResource Margin8}"
|
|
||||||
HorizontalAlignment="Left" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,6 @@ public partial class OptionSettingWindow
|
||||||
this.Bind(ViewModel, vm => vm.TunMtu, v => v.cmbMtu.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.TunMtu, v => v.cmbMtu.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.TunEnableIPv6Address, v => v.togEnableIPv6Address.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.TunEnableIPv6Address, v => v.togEnableIPv6Address.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.TunIcmpRouting, v => v.cmbIcmpRoutingPolicy.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.TunIcmpRouting, v => v.cmbIcmpRoutingPolicy.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.TunEnableLegacyProtect, v => v.togEnableLegacyProtect.IsChecked).DisposeWith(disposables);
|
|
||||||
|
|
||||||
this.Bind(ViewModel, vm => vm.CoreType1, v => v.cmbCoreType1.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.CoreType1, v => v.cmbCoreType1.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.CoreType2, v => v.cmbCoreType2.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.CoreType2, v => v.cmbCoreType2.Text).DisposeWith(disposables);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue