mirror of
https://github.com/2dust/v2rayN.git
synced 2026-04-18 13:35:47 +00:00
parent
021e64e20b
commit
eeecef4db9
22 changed files with 211 additions and 70 deletions
11
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
11
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
|
|
@ -4681,7 +4681,16 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 XHTTP Extra raw JSON, format: { XHTTP Object } 的本地化字符串。
|
/// 查找类似 XHTTP Extra 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string TransportExtra {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("TransportExtra", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Raw JSON, format: { XHTTP Object } 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string TransportExtraTip {
|
public static string TransportExtraTip {
|
||||||
get {
|
get {
|
||||||
|
|
|
||||||
|
|
@ -1321,7 +1321,7 @@
|
||||||
<value>حالت xhttp</value>
|
<value>حالت xhttp</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportExtraTip" xml:space="preserve">
|
<data name="TransportExtraTip" xml:space="preserve">
|
||||||
<value>جیسون خام XHTTP Extra, فرمت: { XHTTPObject }</value>
|
<value>Raw JSON, format: { XHTTP Object }</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||||
<value>هنگام بستن پنجره در سینی پنهان شوید</value>
|
<value>هنگام بستن پنجره در سینی پنهان شوید</value>
|
||||||
|
|
@ -1704,4 +1704,7 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbHost" xml:space="preserve">
|
<data name="TbHost" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TransportExtra" xml:space="preserve">
|
||||||
|
<value>XHTTP Extra</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1327,7 +1327,7 @@
|
||||||
<value>Mode XHTTP</value>
|
<value>Mode XHTTP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportExtraTip" xml:space="preserve">
|
<data name="TransportExtraTip" xml:space="preserve">
|
||||||
<value>JSON brut XHTTP Extra, format : { XHTTPObject }</value>
|
<value>Raw JSON, format: { XHTTP Object }</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||||
<value>Masquer dans la barre d’état à la fermeture de la fenêtre</value>
|
<value>Masquer dans la barre d’état à la fermeture de la fenêtre</value>
|
||||||
|
|
@ -1707,4 +1707,7 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbHost" xml:space="preserve">
|
<data name="TbHost" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="TransportExtra" xml:space="preserve">
|
||||||
|
<value>XHTTP Extra</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
|
|
@ -1321,7 +1321,7 @@
|
||||||
<value>xhttp mód</value>
|
<value>xhttp mód</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportExtraTip" xml:space="preserve">
|
<data name="TransportExtraTip" xml:space="preserve">
|
||||||
<value>XHTTP Extra nyers JSON, formátum: { XHTTP Objektum }</value>
|
<value>Raw JSON, format: { XHTTP Object }</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||||
<value>Ablak bezárásakor a tálcára rejtés</value>
|
<value>Ablak bezárásakor a tálcára rejtés</value>
|
||||||
|
|
@ -1704,4 +1704,7 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbHost" xml:space="preserve">
|
<data name="TbHost" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TransportExtra" xml:space="preserve">
|
||||||
|
<value>XHTTP Extra</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1330,7 +1330,7 @@
|
||||||
<value>xhttp mode</value>
|
<value>xhttp mode</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportExtraTip" xml:space="preserve">
|
<data name="TransportExtraTip" xml:space="preserve">
|
||||||
<value>XHTTP Extra raw JSON, format: { XHTTP Object }</value>
|
<value>Raw JSON, format: { XHTTP Object }</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||||
<value>Hide to tray when closing the window</value>
|
<value>Hide to tray when closing the window</value>
|
||||||
|
|
@ -1710,4 +1710,7 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbHost" xml:space="preserve">
|
<data name="TbHost" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TransportExtra" xml:space="preserve">
|
||||||
|
<value>XHTTP Extra</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1321,7 +1321,7 @@
|
||||||
<value>XHTTP-режим</value>
|
<value>XHTTP-режим</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportExtraTip" xml:space="preserve">
|
<data name="TransportExtraTip" xml:space="preserve">
|
||||||
<value>Дополнительный сырой JSON для XHTTP, формат: { XHTTP Object }</value>
|
<value>Raw JSON, format: { XHTTP Object }</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||||
<value>Сворачивать в трей при закрытии окна</value>
|
<value>Сворачивать в трей при закрытии окна</value>
|
||||||
|
|
@ -1704,4 +1704,7 @@
|
||||||
<data name="TbHost" xml:space="preserve">
|
<data name="TbHost" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TransportExtra" xml:space="preserve">
|
||||||
|
<value>XHTTP Extra</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1327,7 +1327,7 @@
|
||||||
<value>XHTTP 模式</value>
|
<value>XHTTP 模式</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportExtraTip" xml:space="preserve">
|
<data name="TransportExtraTip" xml:space="preserve">
|
||||||
<value>XHTTP Extra 原始 JSON,格式: { XHTTPObject }</value>
|
<value>原始 JSON,格式: { XHTTPObject }</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||||
<value>关闭窗口时隐藏至托盘</value>
|
<value>关闭窗口时隐藏至托盘</value>
|
||||||
|
|
@ -1707,4 +1707,7 @@
|
||||||
<data name="TbHost" xml:space="preserve">
|
<data name="TbHost" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TransportExtra" xml:space="preserve">
|
||||||
|
<value>XHTTP Extra</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1318,7 +1318,7 @@
|
||||||
<value>xhttp 模式</value>
|
<value>xhttp 模式</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportExtraTip" xml:space="preserve">
|
<data name="TransportExtraTip" xml:space="preserve">
|
||||||
<value>XHTTP Extra 原始 JSON,格式: { XHTTPObject }</value>
|
<value>原始 JSON,格式: { XHTTPObject }</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenClose" xml:space="preserve">
|
||||||
<value>關閉視窗時隱藏至托盤</value>
|
<value>關閉視窗時隱藏至托盤</value>
|
||||||
|
|
@ -1701,4 +1701,7 @@
|
||||||
<data name="TbHost" xml:space="preserve">
|
<data name="TbHost" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TransportExtra" xml:space="preserve">
|
||||||
|
<value>XHTTP Extra</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -5,12 +5,18 @@ public partial class CoreConfigV2rayService
|
||||||
private string ApplyFullConfigTemplate()
|
private string ApplyFullConfigTemplate()
|
||||||
{
|
{
|
||||||
var fullConfigTemplate = context.FullConfigTemplate;
|
var fullConfigTemplate = context.FullConfigTemplate;
|
||||||
if (fullConfigTemplate == null || !fullConfigTemplate.Enabled || fullConfigTemplate.Config.IsNullOrEmpty())
|
if (fullConfigTemplate is not { Enabled: true })
|
||||||
{
|
{
|
||||||
return JsonUtils.Serialize(_coreConfig);
|
return JsonUtils.Serialize(_coreConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
var fullConfigTemplateNode = JsonNode.Parse(fullConfigTemplate.Config);
|
var fullConfigTemplateItem = context.IsTunEnabled ? fullConfigTemplate.TunConfig : fullConfigTemplate.Config;
|
||||||
|
if (fullConfigTemplateItem.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
return JsonUtils.Serialize(_coreConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
var fullConfigTemplateNode = JsonNode.Parse(fullConfigTemplateItem);
|
||||||
if (fullConfigTemplateNode == null)
|
if (fullConfigTemplateNode == null)
|
||||||
{
|
{
|
||||||
return JsonUtils.Serialize(_coreConfig);
|
return JsonUtils.Serialize(_coreConfig);
|
||||||
|
|
|
||||||
|
|
@ -370,11 +370,11 @@ public partial class CoreConfigV2rayService
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var item = context.RawDnsItem;
|
var item = context.RawDnsItem;
|
||||||
var normalDNS = item?.NormalDNS;
|
var customDNS = context.IsTunEnabled ? item?.TunDNS : item?.NormalDNS;
|
||||||
var domainStrategy4Freedom = item?.DomainStrategy4Freedom;
|
var domainStrategy4Freedom = item?.DomainStrategy4Freedom;
|
||||||
if (normalDNS.IsNullOrEmpty())
|
if (customDNS.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
normalDNS = EmbedUtils.GetEmbedText(Global.DNSV2rayNormalFileName);
|
customDNS = EmbedUtils.GetEmbedText(Global.DNSV2rayNormalFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Outbound Freedom domainStrategy
|
//Outbound Freedom domainStrategy
|
||||||
|
|
@ -389,11 +389,11 @@ public partial class CoreConfigV2rayService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var obj = JsonUtils.ParseJson(normalDNS);
|
var obj = JsonUtils.ParseJson(customDNS);
|
||||||
if (obj is null)
|
if (obj is null)
|
||||||
{
|
{
|
||||||
List<string> servers = [];
|
List<string> servers = [];
|
||||||
var arrDNS = normalDNS.Split(',');
|
var arrDNS = customDNS.Split(',');
|
||||||
foreach (var str in arrDNS)
|
foreach (var str in arrDNS)
|
||||||
{
|
{
|
||||||
servers.Add(str);
|
servers.Add(str);
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ public class DNSSettingViewModel : MyReactiveObject
|
||||||
[Reactive] public string DomainStrategy4FreedomCompatible { get; set; }
|
[Reactive] public string DomainStrategy4FreedomCompatible { get; set; }
|
||||||
[Reactive] public string DomainDNSAddressCompatible { get; set; }
|
[Reactive] public string DomainDNSAddressCompatible { get; set; }
|
||||||
[Reactive] public string NormalDNSCompatible { get; set; }
|
[Reactive] public string NormalDNSCompatible { get; set; }
|
||||||
|
[Reactive] public string TunDNSCompatible { get; set; }
|
||||||
|
|
||||||
[Reactive] public string DomainStrategy4Freedom2Compatible { get; set; }
|
[Reactive] public string DomainStrategy4Freedom2Compatible { get; set; }
|
||||||
[Reactive] public string DomainDNSAddress2Compatible { get; set; }
|
[Reactive] public string DomainDNSAddress2Compatible { get; set; }
|
||||||
|
|
@ -43,6 +44,7 @@ public class DNSSettingViewModel : MyReactiveObject
|
||||||
ImportDefConfig4V2rayCompatibleCmd = ReactiveCommand.CreateFromTask(async () =>
|
ImportDefConfig4V2rayCompatibleCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||||
{
|
{
|
||||||
NormalDNSCompatible = EmbedUtils.GetEmbedText(Global.DNSV2rayNormalFileName);
|
NormalDNSCompatible = EmbedUtils.GetEmbedText(Global.DNSV2rayNormalFileName);
|
||||||
|
TunDNSCompatible = EmbedUtils.GetEmbedText(Global.DNSV2rayNormalFileName);
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -84,6 +86,7 @@ public class DNSSettingViewModel : MyReactiveObject
|
||||||
DomainStrategy4FreedomCompatible = item1?.DomainStrategy4Freedom ?? string.Empty;
|
DomainStrategy4FreedomCompatible = item1?.DomainStrategy4Freedom ?? string.Empty;
|
||||||
DomainDNSAddressCompatible = item1?.DomainDNSAddress ?? string.Empty;
|
DomainDNSAddressCompatible = item1?.DomainDNSAddress ?? string.Empty;
|
||||||
NormalDNSCompatible = item1?.NormalDNS ?? string.Empty;
|
NormalDNSCompatible = item1?.NormalDNS ?? string.Empty;
|
||||||
|
TunDNSCompatible = item1?.TunDNS ?? string.Empty;
|
||||||
|
|
||||||
var item2 = await AppManager.Instance.GetDNSItem(ECoreType.sing_box);
|
var item2 = await AppManager.Instance.GetDNSItem(ECoreType.sing_box);
|
||||||
SBCustomDNSEnableCompatible = item2.Enabled;
|
SBCustomDNSEnableCompatible = item2.Enabled;
|
||||||
|
|
@ -124,6 +127,21 @@ public class DNSSettingViewModel : MyReactiveObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (TunDNSCompatible.IsNotEmpty())
|
||||||
|
{
|
||||||
|
var obj = JsonUtils.ParseJson(TunDNSCompatible);
|
||||||
|
if (obj != null && obj["servers"] != null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (TunDNSCompatible.Contains('{') || TunDNSCompatible.Contains('}'))
|
||||||
|
{
|
||||||
|
NoticeManager.Instance.Enqueue(ResUI.FillCorrectDNSText);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (NormalDNS2Compatible.IsNotEmpty())
|
if (NormalDNS2Compatible.IsNotEmpty())
|
||||||
{
|
{
|
||||||
var obj2 = JsonUtils.Deserialize<Dns4Sbox>(NormalDNS2Compatible);
|
var obj2 = JsonUtils.Deserialize<Dns4Sbox>(NormalDNS2Compatible);
|
||||||
|
|
@ -149,6 +167,7 @@ public class DNSSettingViewModel : MyReactiveObject
|
||||||
item1.DomainDNSAddress = DomainDNSAddressCompatible;
|
item1.DomainDNSAddress = DomainDNSAddressCompatible;
|
||||||
item1.UseSystemHosts = UseSystemHostsCompatible;
|
item1.UseSystemHosts = UseSystemHostsCompatible;
|
||||||
item1.NormalDNS = NormalDNSCompatible;
|
item1.NormalDNS = NormalDNSCompatible;
|
||||||
|
item1.TunDNS = TunDNSCompatible;
|
||||||
await ConfigHandler.SaveDNSItems(_config, item1);
|
await ConfigHandler.SaveDNSItems(_config, item1);
|
||||||
|
|
||||||
var item2 = await AppManager.Instance.GetDNSItem(ECoreType.sing_box);
|
var item2 = await AppManager.Instance.GetDNSItem(ECoreType.sing_box);
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ public class FullConfigTemplateViewModel : MyReactiveObject
|
||||||
[Reactive]
|
[Reactive]
|
||||||
public string FullConfigTemplate4Ray { get; set; }
|
public string FullConfigTemplate4Ray { get; set; }
|
||||||
|
|
||||||
|
[Reactive]
|
||||||
|
public string FullTunConfigTemplate4Ray { get; set; }
|
||||||
|
|
||||||
[Reactive]
|
[Reactive]
|
||||||
public string FullConfigTemplate4Singbox { get; set; }
|
public string FullConfigTemplate4Singbox { get; set; }
|
||||||
|
|
||||||
|
|
@ -50,10 +53,15 @@ public class FullConfigTemplateViewModel : MyReactiveObject
|
||||||
private async Task Init()
|
private async Task Init()
|
||||||
{
|
{
|
||||||
var item = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.Xray);
|
var item = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.Xray);
|
||||||
EnableFullConfigTemplate4Ray = item?.Enabled ?? false;
|
if (item == null)
|
||||||
FullConfigTemplate4Ray = item?.Config ?? string.Empty;
|
{
|
||||||
AddProxyOnly4Ray = item?.AddProxyOnly ?? false;
|
return;
|
||||||
ProxyDetour4Ray = item?.ProxyDetour ?? string.Empty;
|
}
|
||||||
|
EnableFullConfigTemplate4Ray = item.Enabled;
|
||||||
|
FullConfigTemplate4Ray = item.Config ?? string.Empty;
|
||||||
|
FullTunConfigTemplate4Ray = item.TunConfig ?? string.Empty;
|
||||||
|
AddProxyOnly4Ray = item.AddProxyOnly ?? false;
|
||||||
|
ProxyDetour4Ray = item.ProxyDetour ?? string.Empty;
|
||||||
|
|
||||||
var item2 = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.sing_box);
|
var item2 = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.sing_box);
|
||||||
EnableFullConfigTemplate4Singbox = item2?.Enabled ?? false;
|
EnableFullConfigTemplate4Singbox = item2?.Enabled ?? false;
|
||||||
|
|
@ -82,10 +90,13 @@ public class FullConfigTemplateViewModel : MyReactiveObject
|
||||||
private async Task<bool> SaveXrayConfigAsync()
|
private async Task<bool> SaveXrayConfigAsync()
|
||||||
{
|
{
|
||||||
var item = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.Xray);
|
var item = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.Xray);
|
||||||
|
if (item == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
item.Enabled = EnableFullConfigTemplate4Ray;
|
item.Enabled = EnableFullConfigTemplate4Ray;
|
||||||
item.Config = null;
|
|
||||||
|
|
||||||
item.Config = FullConfigTemplate4Ray;
|
item.Config = FullConfigTemplate4Ray;
|
||||||
|
item.TunConfig = FullTunConfigTemplate4Ray;
|
||||||
|
|
||||||
item.AddProxyOnly = AddProxyOnly4Ray;
|
item.AddProxyOnly = AddProxyOnly4Ray;
|
||||||
item.ProxyDetour = ProxyDetour4Ray;
|
item.ProxyDetour = ProxyDetour4Ray;
|
||||||
|
|
@ -97,10 +108,11 @@ public class FullConfigTemplateViewModel : MyReactiveObject
|
||||||
private async Task<bool> SaveSingboxConfigAsync()
|
private async Task<bool> SaveSingboxConfigAsync()
|
||||||
{
|
{
|
||||||
var item = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.sing_box);
|
var item = await AppManager.Instance.GetFullConfigTemplateItem(ECoreType.sing_box);
|
||||||
|
if (item == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
item.Enabled = EnableFullConfigTemplate4Singbox;
|
item.Enabled = EnableFullConfigTemplate4Singbox;
|
||||||
item.Config = null;
|
|
||||||
item.TunConfig = null;
|
|
||||||
|
|
||||||
item.Config = FullConfigTemplate4Singbox;
|
item.Config = FullConfigTemplate4Singbox;
|
||||||
item.TunConfig = FullTunConfigTemplate4Singbox;
|
item.TunConfig = FullTunConfigTemplate4Singbox;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -814,17 +814,17 @@
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Margin="{StaticResource Margin4}"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Top"
|
VerticalAlignment="Top"
|
||||||
Text="{x:Static resx:ResUI.TransportExtraTip}"
|
Text="{x:Static resx:ResUI.TransportExtra}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<views:JsonEditor
|
<Expander
|
||||||
x:Name="txtExtraXhttp"
|
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
IsExpanded="True">
|
||||||
MinHeight="100"
|
<Expander.Header>
|
||||||
Margin="{StaticResource Margin4}"
|
<TextBlock FontWeight="Normal" Text="{x:Static resx:ResUI.TransportExtraTip}" />
|
||||||
HorizontalAlignment="Stretch"
|
</Expander.Header>
|
||||||
VerticalAlignment="Center" />
|
<views:JsonEditor x:Name="txtExtraXhttp" HorizontalAlignment="Stretch" />
|
||||||
|
</Expander>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
|
|
|
||||||
|
|
@ -395,13 +395,26 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
|
|
||||||
<HeaderedContentControl
|
<Grid Margin="{StaticResource Margin4}" ColumnDefinitions="*,10,*">
|
||||||
Margin="{StaticResource Margin4}"
|
|
||||||
BorderBrush="Gray"
|
<HeaderedContentControl
|
||||||
BorderThickness="1"
|
Grid.Column="0"
|
||||||
Header="HTTP/SOCKS">
|
BorderBrush="Gray"
|
||||||
<local:JsonEditor Name="txtnormalDNSCompatible" VerticalAlignment="Stretch" />
|
BorderThickness="1"
|
||||||
</HeaderedContentControl>
|
Header="HTTP/SOCKS">
|
||||||
|
<local:JsonEditor Name="txtnormalDNSCompatible" VerticalAlignment="Stretch" />
|
||||||
|
</HeaderedContentControl>
|
||||||
|
|
||||||
|
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
|
||||||
|
|
||||||
|
<HeaderedContentControl
|
||||||
|
Grid.Column="2"
|
||||||
|
BorderBrush="Gray"
|
||||||
|
BorderThickness="1"
|
||||||
|
Header="{x:Static resx:ResUI.TbSettingsTunMode}">
|
||||||
|
<local:JsonEditor Name="txttunDNSCompatible" VerticalAlignment="Stretch" />
|
||||||
|
</HeaderedContentControl>
|
||||||
|
</Grid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ public partial class DNSSettingWindow : WindowBase<DNSSettingViewModel>
|
||||||
this.Bind(ViewModel, vm => vm.DomainStrategy4FreedomCompatible, v => v.cmbdomainStrategy4FreedomCompatible.SelectedItem).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainStrategy4FreedomCompatible, v => v.cmbdomainStrategy4FreedomCompatible.SelectedItem).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.DomainDNSAddressCompatible, v => v.cmbdomainDNSAddressCompatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainDNSAddressCompatible, v => v.cmbdomainDNSAddressCompatible.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.NormalDNSCompatible, v => v.txtnormalDNSCompatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.NormalDNSCompatible, v => v.txtnormalDNSCompatible.Text).DisposeWith(disposables);
|
||||||
|
this.Bind(ViewModel, vm => vm.TunDNSCompatible, v => v.txttunDNSCompatible.Text).DisposeWith(disposables);
|
||||||
|
|
||||||
this.Bind(ViewModel, vm => vm.DomainStrategy4Freedom2Compatible, v => v.cmbdomainStrategy4OutCompatible.SelectedItem).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainStrategy4Freedom2Compatible, v => v.cmbdomainStrategy4OutCompatible.SelectedItem).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.DomainDNSAddress2Compatible, v => v.cmbdomainDNSAddress2Compatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainDNSAddress2Compatible, v => v.cmbdomainDNSAddress2Compatible.Text).DisposeWith(disposables);
|
||||||
|
|
|
||||||
|
|
@ -90,13 +90,26 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
|
|
||||||
<HeaderedContentControl
|
<Grid Margin="{StaticResource Margin4}" ColumnDefinitions="*,10,*">
|
||||||
Margin="{StaticResource Margin4}"
|
|
||||||
BorderBrush="Gray"
|
<HeaderedContentControl
|
||||||
BorderThickness="1"
|
Grid.Column="0"
|
||||||
Header="xray config template json">
|
BorderBrush="Gray"
|
||||||
<views:JsonEditor x:Name="rayFullConfigTemplate" VerticalAlignment="Stretch" />
|
BorderThickness="1"
|
||||||
</HeaderedContentControl>
|
Header="xray config template json">
|
||||||
|
<views:JsonEditor x:Name="rayFullConfigTemplate" VerticalAlignment="Stretch" />
|
||||||
|
</HeaderedContentControl>
|
||||||
|
|
||||||
|
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
|
||||||
|
|
||||||
|
<HeaderedContentControl
|
||||||
|
Grid.Column="2"
|
||||||
|
BorderBrush="Gray"
|
||||||
|
BorderThickness="1"
|
||||||
|
Header="xray tun config template json">
|
||||||
|
<views:JsonEditor x:Name="rayFullTunConfigTemplate" VerticalAlignment="Stretch" />
|
||||||
|
</HeaderedContentControl>
|
||||||
|
</Grid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem HorizontalAlignment="Left" Header="{x:Static resx:ResUI.TbSBFullConfigTemplate}">
|
<TabItem HorizontalAlignment="Left" Header="{x:Static resx:ResUI.TbSBFullConfigTemplate}">
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,14 @@ public partial class FullConfigTemplateWindow : WindowBase<FullConfigTemplateVie
|
||||||
|
|
||||||
_config = AppManager.Instance.Config;
|
_config = AppManager.Instance.Config;
|
||||||
Loaded += Window_Loaded;
|
Loaded += Window_Loaded;
|
||||||
btnCancel.Click += (s, e) => Close();
|
btnCancel.Click += (_, _) => Close();
|
||||||
ViewModel = new FullConfigTemplateViewModel(UpdateViewHandler);
|
ViewModel = new FullConfigTemplateViewModel(UpdateViewHandler);
|
||||||
|
|
||||||
this.WhenActivated(disposables =>
|
this.WhenActivated(disposables =>
|
||||||
{
|
{
|
||||||
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Ray, v => v.rayFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Ray, v => v.rayFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.FullConfigTemplate4Ray, v => v.rayFullConfigTemplate.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.FullConfigTemplate4Ray, v => v.rayFullConfigTemplate.Text).DisposeWith(disposables);
|
||||||
|
this.Bind(ViewModel, vm => vm.FullTunConfigTemplate4Ray, v => v.rayFullTunConfigTemplate.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.AddProxyOnly4Ray, v => v.togAddProxyProtocolOutboundOnly4Ray.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.AddProxyOnly4Ray, v => v.togAddProxyProtocolOutboundOnly4Ray.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.ProxyDetour4Ray, v => v.txtProxyDetour4Ray.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.ProxyDetour4Ray, v => v.txtProxyDetour4Ray.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Singbox, v => v.sbFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Singbox, v => v.sbFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
||||||
|
|
|
||||||
|
|
@ -1071,7 +1071,7 @@
|
||||||
Margin="{StaticResource Margin4}"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Top"
|
VerticalAlignment="Top"
|
||||||
Style="{StaticResource ToolbarTextBlock}"
|
Style="{StaticResource ToolbarTextBlock}"
|
||||||
Text="{x:Static resx:ResUI.TransportExtraTip}"
|
Text="{x:Static resx:ResUI.TransportExtra}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtExtraXhttp"
|
x:Name="txtExtraXhttp"
|
||||||
|
|
@ -1080,8 +1080,10 @@
|
||||||
Width="400"
|
Width="400"
|
||||||
Margin="{StaticResource Margin4}"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.TransportExtraTip}"
|
||||||
AcceptsReturn="True"
|
AcceptsReturn="True"
|
||||||
MinLines="6"
|
MaxLines="12"
|
||||||
|
MinLines="3"
|
||||||
Style="{StaticResource MyOutlinedTextBox}"
|
Style="{StaticResource MyOutlinedTextBox}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
||||||
|
|
@ -453,16 +453,37 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
|
|
||||||
<TextBox
|
<Grid Margin="{StaticResource Margin8}">
|
||||||
x:Name="txtnormalDNSCompatible"
|
<Grid.ColumnDefinitions>
|
||||||
Margin="{StaticResource Margin8}"
|
<ColumnDefinition Width="1*" />
|
||||||
VerticalAlignment="Stretch"
|
<ColumnDefinition Width="10" />
|
||||||
materialDesign:HintAssist.Hint="HTTP/SOCKS"
|
<ColumnDefinition Width="1*" />
|
||||||
AcceptsReturn="True"
|
</Grid.ColumnDefinitions>
|
||||||
BorderThickness="1"
|
|
||||||
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
<TextBox
|
||||||
TextWrapping="Wrap"
|
x:Name="txtnormalDNSCompatible"
|
||||||
VerticalScrollBarVisibility="Auto" />
|
Grid.Column="0"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
materialDesign:HintAssist.Hint="HTTP/SOCKS"
|
||||||
|
AcceptsReturn="True"
|
||||||
|
BorderThickness="1"
|
||||||
|
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
VerticalScrollBarVisibility="Auto" />
|
||||||
|
|
||||||
|
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
|
||||||
|
|
||||||
|
<TextBox
|
||||||
|
x:Name="txttunDNSCompatible"
|
||||||
|
Grid.Column="2"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.TbSettingsTunMode}"
|
||||||
|
AcceptsReturn="True"
|
||||||
|
BorderThickness="1"
|
||||||
|
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
VerticalScrollBarVisibility="Auto" />
|
||||||
|
</Grid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ public partial class DNSSettingWindow
|
||||||
this.Bind(ViewModel, vm => vm.DomainStrategy4FreedomCompatible, v => v.cmbdomainStrategy4FreedomCompatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainStrategy4FreedomCompatible, v => v.cmbdomainStrategy4FreedomCompatible.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.DomainDNSAddressCompatible, v => v.cmbdomainDNSAddressCompatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainDNSAddressCompatible, v => v.cmbdomainDNSAddressCompatible.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.NormalDNSCompatible, v => v.txtnormalDNSCompatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.NormalDNSCompatible, v => v.txtnormalDNSCompatible.Text).DisposeWith(disposables);
|
||||||
|
this.Bind(ViewModel, vm => vm.TunDNSCompatible, v => v.txttunDNSCompatible.Text).DisposeWith(disposables);
|
||||||
|
|
||||||
this.Bind(ViewModel, vm => vm.DomainStrategy4Freedom2Compatible, v => v.cmbdomainStrategy4OutCompatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainStrategy4Freedom2Compatible, v => v.cmbdomainStrategy4OutCompatible.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.DomainDNSAddress2Compatible, v => v.cmbdomainDNSAddress2Compatible.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DomainDNSAddress2Compatible, v => v.cmbdomainDNSAddress2Compatible.Text).DisposeWith(disposables);
|
||||||
|
|
|
||||||
|
|
@ -107,16 +107,37 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
|
|
||||||
<TextBox
|
<Grid Margin="{StaticResource Margin8}">
|
||||||
x:Name="rayFullConfigTemplate"
|
<Grid.ColumnDefinitions>
|
||||||
Margin="{StaticResource Margin8}"
|
<ColumnDefinition Width="1*" />
|
||||||
VerticalAlignment="Stretch"
|
<ColumnDefinition Width="10" />
|
||||||
materialDesign:HintAssist.Hint="xray config template json"
|
<ColumnDefinition Width="1*" />
|
||||||
AcceptsReturn="True"
|
</Grid.ColumnDefinitions>
|
||||||
BorderThickness="1"
|
|
||||||
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
<TextBox
|
||||||
TextWrapping="Wrap"
|
x:Name="rayFullConfigTemplate"
|
||||||
VerticalScrollBarVisibility="Auto" />
|
Grid.Column="0"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
materialDesign:HintAssist.Hint="xray config template json"
|
||||||
|
AcceptsReturn="True"
|
||||||
|
BorderThickness="1"
|
||||||
|
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
VerticalScrollBarVisibility="Auto" />
|
||||||
|
|
||||||
|
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
|
||||||
|
|
||||||
|
<TextBox
|
||||||
|
x:Name="rayFullTunConfigTemplate"
|
||||||
|
Grid.Column="2"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
materialDesign:HintAssist.Hint="xray tun config template json"
|
||||||
|
AcceptsReturn="True"
|
||||||
|
BorderThickness="1"
|
||||||
|
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
VerticalScrollBarVisibility="Auto" />
|
||||||
|
</Grid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem HorizontalAlignment="Left" Header="{x:Static resx:ResUI.TbSBFullConfigTemplate}">
|
<TabItem HorizontalAlignment="Left" Header="{x:Static resx:ResUI.TbSBFullConfigTemplate}">
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ public partial class FullConfigTemplateWindow
|
||||||
{
|
{
|
||||||
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Ray, v => v.rayFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Ray, v => v.rayFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.FullConfigTemplate4Ray, v => v.rayFullConfigTemplate.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.FullConfigTemplate4Ray, v => v.rayFullConfigTemplate.Text).DisposeWith(disposables);
|
||||||
|
this.Bind(ViewModel, vm => vm.FullTunConfigTemplate4Ray, v => v.rayFullTunConfigTemplate.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.AddProxyOnly4Ray, v => v.togAddProxyProtocolOutboundOnly4Ray.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.AddProxyOnly4Ray, v => v.togAddProxyProtocolOutboundOnly4Ray.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.ProxyDetour4Ray, v => v.txtProxyDetour4Ray.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.ProxyDetour4Ray, v => v.txtProxyDetour4Ray.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Singbox, v => v.sbFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.EnableFullConfigTemplate4Singbox, v => v.sbFullConfigTemplateEnable.IsChecked).DisposeWith(disposables);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue