mirror of
https://github.com/proxysu/ProxySU.git
synced 2025-02-16 22:53:13 +03:00
添加VLESS VMESS XTLS TLS WS 复合方案
This commit is contained in:
parent
dc05f990d8
commit
5eeb2bfd48
@ -5,7 +5,7 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ProxySU"
|
||||
mc:Ignorable="d"
|
||||
Title="ProxySU - v2.3.0" Height="675" Width="620">
|
||||
Title="ProxySU - v2.3.1" Height="675" Width="620">
|
||||
<!--以下样式参考自:https://yq.aliyun.com/articles/331878
|
||||
https://docs.microsoft.com/en-us/dotnet/desktop-wpf/fundamentals/styles-templates-overview-->
|
||||
<Window.Resources>
|
||||
@ -223,8 +223,26 @@
|
||||
<TextBlock x:Name="TextBlockV2RayShowUUID" Text="UUID:" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanUUID" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
|
||||
<TextBlock x:Name="TextBlockV2RayShowPathSeedKey" Text="Path/mKCP Seed/Quic Key" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanPathSeedKey" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockV2RayShowPathSeedKey" Text="Path/mKCP Seed/Quic Key" Visibility="Collapsed" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanPathSeedKey" Visibility="Collapsed" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
|
||||
<Grid x:Name="GridVlessVmessXtlsTcpWs" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock x:Name="TextBlockPathVlessWs" Text="{DynamicResource TextBlockV2RayVlessWsPath}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockBoxPathVlessWS" Grid.Column="1" Grid.Row="3" Margin="0"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockPathVmessTcp" Text="{DynamicResource TextBlockV2RayVmessTcpPath}" Grid.Column="2" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockBoxPathVmessTcp" Grid.Column="3" Grid.Row="3" Margin="0"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockPathVmessWs" Text="{DynamicResource TextBlockV2RayVmessWsPath}" Grid.Column="4" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockBoxPathVmessWS" Grid.Column="5" Grid.Row="3" Margin="0"></TextBlock>
|
||||
|
||||
</Grid>
|
||||
|
||||
<TextBlock x:Name="TextBlockV2RayShowCurrentlySelectedPlanDomain" Text="Domain/Quic Encrypt" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanDomain" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
|
@ -45,13 +45,13 @@ namespace ProxySU
|
||||
//ReceiveConfigurationParameters[0]----模板类型
|
||||
//ReceiveConfigurationParameters[1]----服务端口
|
||||
//ReceiveConfigurationParameters[2]----V2Ray uuid/(naive/Trojan-go/Trojan/SSR/SS)' Password
|
||||
//ReceiveConfigurationParameters[3]----QUIC加密方式/SSR 加密方法/naive'user
|
||||
//ReceiveConfigurationParameters[3]----QUIC加密方式/SSR 加密方法/naive'user/VLESS ws Path
|
||||
//ReceiveConfigurationParameters[4]----Domain
|
||||
//ReceiveConfigurationParameters[5]----伪装类型/插件名称
|
||||
//ReceiveConfigurationParameters[6]----Websocket'Path/http2'Path/QUIC密钥/mKCP Seed/SS 加密方式
|
||||
//ReceiveConfigurationParameters[6]----Websocket'Path/http2'Path/QUIC密钥/mKCP Seed/SS 加密方式/VMESS ws Path
|
||||
//ReceiveConfigurationParameters[7]----伪装网站
|
||||
//ReceiveConfigurationParameters[8]----方案名称
|
||||
//ReceiveConfigurationParameters[9]----插件参数选项
|
||||
//ReceiveConfigurationParameters[9]----插件参数选项/VMESS tcp Path
|
||||
//public static ConnectionInfo ConnectionInfo;
|
||||
public static string proxyType = "V2Ray"; //代理类型标识: V2Ray\TrojanGo\Trojan\NaiveProxy
|
||||
static bool testDomain = false; //设置标识--域名是否需要检测解析,初始化为不需要
|
||||
@ -723,6 +723,7 @@ namespace ProxySU
|
||||
{
|
||||
//隐藏Path/mKCP Seed/Quic Key
|
||||
HideV2RayPathSeedKey();
|
||||
HideVlessVmessXtlsTcpWs();
|
||||
|
||||
//隐藏域名/Quic加密方式
|
||||
HideV2RayDomainQuicEncrypt();
|
||||
@ -735,28 +736,36 @@ namespace ProxySU
|
||||
{
|
||||
//隐藏Path/mKCP Seed/Quic Key
|
||||
HideV2RayPathSeedKey();
|
||||
HideVlessVmessXtlsTcpWs();
|
||||
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
|
||||
//隐藏伪装网站
|
||||
HideV2RayMaskSites();
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|
||||
{
|
||||
//显示复合方案路径
|
||||
ShowVlessVmessXtlsTcpWs();
|
||||
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
|
||||
//显示伪装网站(暂时不显示)
|
||||
ShowV2RayMaskSites();
|
||||
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
{
|
||||
//隐藏Path/mKCP Seed/Quic Key
|
||||
HideV2RayPathSeedKey();
|
||||
HideVlessVmessXtlsTcpWs();
|
||||
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
|
||||
|
||||
//显示伪装网站(暂时不显示)
|
||||
ShowV2RayMaskSites();
|
||||
}
|
||||
@ -771,9 +780,7 @@ namespace ProxySU
|
||||
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
|
||||
//显示伪装网站(暂时不显示)
|
||||
HideV2RayMaskSites();
|
||||
}
|
||||
@ -789,9 +796,7 @@ namespace ProxySU
|
||||
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
|
||||
//显示伪装网站(暂时不显示)
|
||||
ShowV2RayMaskSites();
|
||||
}
|
||||
@ -858,6 +863,7 @@ namespace ProxySU
|
||||
//显示Path/mKCP Seed/Quic Key
|
||||
private void ShowV2RayPathSeedKey()
|
||||
{
|
||||
HideVlessVmessXtlsTcpWs();
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible;
|
||||
}
|
||||
@ -869,11 +875,30 @@ namespace ProxySU
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden;
|
||||
}
|
||||
|
||||
//显示VLESS VMESS XTLS TCP WS 复合方案
|
||||
private void ShowVlessVmessXtlsTcpWs()
|
||||
{
|
||||
HideV2RayPathSeedKey();
|
||||
GridVlessVmessXtlsTcpWs.Visibility = Visibility.Visible;
|
||||
TextBlockBoxPathVlessWS.Text = ReceiveConfigurationParameters[3];
|
||||
TextBlockBoxPathVmessTcp.Text = ReceiveConfigurationParameters[9];
|
||||
TextBlockBoxPathVmessWS.Text = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
//隐藏VLESS VMESS XTLS TCP WS 复合方案
|
||||
private void HideVlessVmessXtlsTcpWs()
|
||||
{
|
||||
GridVlessVmessXtlsTcpWs.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
//显示域名/Quic加密方式
|
||||
private void ShowV2RayDomainQuicEncrypt()
|
||||
{
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
}
|
||||
|
||||
//隐藏域名/Quic加密方式
|
||||
@ -923,23 +948,27 @@ namespace ProxySU
|
||||
MessageBox.Show(Application.Current.FindResource("MessageBoxShow_ChooseTemplate").ToString());
|
||||
return;
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCP")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "webSocket")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")
|
||||
|| ReceiveConfigurationParameters[0].Contains("mKCP")
|
||||
|| ReceiveConfigurationParameters[0].Contains("Quic"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCP") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "TCPhttp") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "webSocket") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true
|
||||
|| ReceiveConfigurationParameters[0].Contains("mKCP") == true
|
||||
|| ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
testDomain = false;
|
||||
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "Http2")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "Http2") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true)
|
||||
{
|
||||
testDomain = true;
|
||||
|
||||
@ -1669,9 +1698,9 @@ namespace ProxySU
|
||||
|
||||
//Thread.Sleep(1000);
|
||||
|
||||
//生成服务端配置
|
||||
#region 生成服务端配置
|
||||
|
||||
//依据所选择的模式选择配置文件
|
||||
//读取配置文件各个模块
|
||||
string logConfigJson = @"TemplateConfg\v2ray\server\00_log\00_log.json";
|
||||
string apiConfigJson = @"TemplateConfg\v2ray\server\01_api\01_api.json";
|
||||
string dnsConfigJson = @"TemplateConfg\v2ray\server\02_dns\02_dns.json";
|
||||
@ -1685,6 +1714,7 @@ namespace ProxySU
|
||||
string baseConfigJson = @"TemplateConfg\v2ray\base.json";
|
||||
string serverRemoteConfig = @"/usr/local/etc/v2ray/config.json";
|
||||
|
||||
//配置文件模块合成
|
||||
using (StreamReader reader = File.OpenText(baseConfigJson))
|
||||
{
|
||||
JObject serverJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader));
|
||||
@ -1750,74 +1780,78 @@ namespace ProxySU
|
||||
}
|
||||
|
||||
//依据安装模式读取相应模板
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "TCP"))
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "TCP") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_http_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_TLS_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcpTLSselfSigned_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_tcp_xtls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_tcp_tls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_ws_tls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_http2_tls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_vmess_xtls_tcp_websocket_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\webSocket_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocket_TLS_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLS_selfSigned_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLSWeb_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "Http2"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\http2_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\Http2Web_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\Http2selfSigned_server_config.json";
|
||||
}
|
||||
//else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("mKCP"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("mKCP") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\mkcp_server_config.json";
|
||||
}
|
||||
|
||||
// else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("Quic"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\quic_server_config.json";
|
||||
}
|
||||
@ -1851,7 +1885,8 @@ namespace ProxySU
|
||||
|
||||
//设置VLESS协议的回落端口,指向Caddy
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|
||||
{
|
||||
//设置Caddy随机监听的端口
|
||||
randomCaddyListenPort = GetRandomPort();
|
||||
@ -1860,6 +1895,28 @@ namespace ProxySU
|
||||
jObjectJson["inbounds"][0]["settings"]["fallbacks"][0]["dest"] = randomCaddyListenPort;
|
||||
}
|
||||
|
||||
//
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|
||||
{
|
||||
//设置其他模式的UUID
|
||||
jObjectJson["inbounds"][1]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
jObjectJson["inbounds"][2]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
jObjectJson["inbounds"][3]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
|
||||
//设置Vless回落与分流的Path
|
||||
jObjectJson["inbounds"][0]["settings"]["fallbacks"][1]["path"] = ReceiveConfigurationParameters[3];
|
||||
jObjectJson["inbounds"][0]["settings"]["fallbacks"][2]["path"] = ReceiveConfigurationParameters[9];
|
||||
jObjectJson["inbounds"][0]["settings"]["fallbacks"][3]["path"] = ReceiveConfigurationParameters[6];
|
||||
|
||||
//设置Vless ws Path
|
||||
jObjectJson["inbounds"][1]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3];
|
||||
//设置Vmess tcp Path
|
||||
jObjectJson["inbounds"][2]["streamSettings"]["tcpSettings"]["header"]["request"]["path"][0] = ReceiveConfigurationParameters[9];
|
||||
//设置Vmess ws Path
|
||||
jObjectJson["inbounds"][3]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
|
||||
}
|
||||
|
||||
//TLS自签证书/WebSocketTLS(自签证书)/http2自签证书模式下,使用v2ctl 生成自签证书
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true
|
||||
@ -1931,12 +1988,17 @@ namespace ProxySU
|
||||
|
||||
File.Delete(@"config.json");
|
||||
|
||||
#endregion
|
||||
|
||||
#region acme.sh安装
|
||||
|
||||
//如果使用http2/WebSocketTLS/tcpTLS/VlessTcpTlsWeb/VLESS+TCP+XTLS+Web模式,先要安装acme.sh,申请证书
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true)
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|
||||
{
|
||||
//****** "正在安装acme.sh......" ******22
|
||||
SetUpProgressBarProcessing(55);
|
||||
@ -2091,13 +2153,18 @@ namespace ProxySU
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Caddy安装
|
||||
|
||||
//如果是VLESS+TCP+XTLS+Web/VLESS+TCP+TLS+Web/VLESS+WebSocket+TLS+Web/VLESS+http2+TLS+Web/WebSocket+TLS+Web/http2Web模式,需要安装Caddy
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0],"WebSocketTLS2Web") ==true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true)
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|
||||
{
|
||||
//****** "安装Caddy......" ******28
|
||||
SetUpProgressBarProcessing(70);
|
||||
@ -2277,7 +2344,8 @@ namespace ProxySU
|
||||
TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果
|
||||
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true)
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|
||||
{
|
||||
serverConfig = @"TemplateConfg\v2ray\caddy\vlessTcpTlsWeb.caddyfile";
|
||||
}
|
||||
@ -2420,6 +2488,9 @@ namespace ProxySU
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//****** "正在启动V2ray......" ******35
|
||||
SetUpProgressBarProcessing(90);
|
||||
currentStatus = Application.Current.FindResource("DisplayInstallInfo_StartSoft").ToString() + "V2ray......";
|
||||
@ -2597,6 +2668,8 @@ namespace ProxySU
|
||||
}
|
||||
client.Disconnect();//断开服务器ssh连接
|
||||
|
||||
#region 生成客户端配置
|
||||
|
||||
//****** "生成客户端配置......" ******39
|
||||
SetUpProgressBarProcessing(99);
|
||||
currentStatus = Application.Current.FindResource("DisplayInstallInfo_GenerateClientConfig").ToString();
|
||||
@ -2685,150 +2758,277 @@ namespace ProxySU
|
||||
clientJson["reverse"] = jObjectJson["reverse"];
|
||||
}
|
||||
|
||||
//根据选择的不同模式,选择相应的配置文件
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "TCP"))
|
||||
//根据不同的安装方案,选择相应的客户端模板
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == false)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_http_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcpTLSselfSigned_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_xtls_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_tls_caddy_cilent_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_ws_tls_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_http2_tls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\webSocket_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocket_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLS_selfSigned_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "Http2"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\http2_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2Web_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2selfSigned_client_config.json";
|
||||
}
|
||||
//else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("mKCP"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\mkcp_client_config.json";
|
||||
}
|
||||
// else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("Quic"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\quic_client_config.json";
|
||||
}
|
||||
|
||||
//读取"相应模板的outbounds"
|
||||
using (StreamReader readerJson = File.OpenText(outboundsConfigJson))
|
||||
{
|
||||
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
|
||||
|
||||
//设置客户端的地址/端口/id
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
|
||||
//设置WebSocket模式下的path
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true)
|
||||
#region 单模式方案
|
||||
//根据选择的不同模式,选择相应的配置文件
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "TCP") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_http_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcpTLSselfSigned_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_xtls_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_tls_caddy_cilent_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_ws_tls_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_http2_tls_server_config.json";
|
||||
}
|
||||
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\webSocket_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocket_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLS_selfSigned_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\http2_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2Web_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2selfSigned_client_config.json";
|
||||
}
|
||||
//else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("mKCP") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\mkcp_client_config.json";
|
||||
}
|
||||
// else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\quic_client_config.json";
|
||||
}
|
||||
|
||||
//读取"相应模板的outbounds"
|
||||
using (StreamReader readerJson = File.OpenText(outboundsConfigJson))
|
||||
{
|
||||
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
|
||||
|
||||
//设置客户端的地址/端口/id
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
|
||||
//设置WebSocket模式下的path
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
//设置http2模式下的path
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
//设置http2+TLS+Web/VLESS+http2+TLS+Web模式下的host
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4];
|
||||
}
|
||||
|
||||
//设置VLESS+TCP+XTLS+Web模式下的serverName
|
||||
//if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
//{
|
||||
// jObjectJson["outbounds"][0]["streamSettings"]["xtlsSettings"]["serverName"] = ReceiveConfigurationParameters[4];
|
||||
//}
|
||||
|
||||
//设置mkcp
|
||||
if (ReceiveConfigurationParameters[0].Contains("mKCP") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5];
|
||||
if (String.IsNullOrEmpty(ReceiveConfigurationParameters[6]) == false)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
}
|
||||
|
||||
//设置QUIC
|
||||
if (ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5];
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["security"] = ReceiveConfigurationParameters[3];
|
||||
if (String.Equals(ReceiveConfigurationParameters[3], "none") == true)
|
||||
{
|
||||
ReceiveConfigurationParameters[6] = "";
|
||||
}
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
clientJson["outbounds"] = jObjectJson["outbounds"];
|
||||
|
||||
}
|
||||
using (StreamWriter sw = new StreamWriter(@"v2ray_config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//复合方案所需要的配置文件
|
||||
//VLESS over TCP with XTLS模式
|
||||
string outboundsConfigJsonVlessXtls = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_xtls_client_config.json";
|
||||
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVlessXtls))
|
||||
{
|
||||
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
|
||||
|
||||
//设置客户端的地址/端口/id
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
|
||||
clientJson["outbounds"] = jObjectJson["outbounds"];
|
||||
if (!Directory.Exists(@"v2ray_config\vless_tcp_xtls_client_config"))//如果不存在就创建file文件夹
|
||||
{
|
||||
Directory.CreateDirectory(@"v2ray_config\vless_tcp_xtls_client_config");//创建该文件夹
|
||||
}
|
||||
using (StreamWriter sw = new StreamWriter(@"v2ray_config\vless_tcp_xtls_client_config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//VLESS over TCP with TLS模式
|
||||
string outboundsConfigJsonVlessTcpTls = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_tls_caddy_cilent_config.json";
|
||||
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVlessTcpTls))
|
||||
{
|
||||
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
|
||||
|
||||
//设置客户端的地址/端口/id
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
|
||||
clientJson["outbounds"] = jObjectJson["outbounds"];
|
||||
if (!Directory.Exists(@"v2ray_config\vless_tcp_tls_client_config"))//如果不存在就创建file文件夹
|
||||
{
|
||||
Directory.CreateDirectory(@"v2ray_config\vless_tcp_tls_client_config");//创建该文件夹
|
||||
}
|
||||
using (StreamWriter sw = new StreamWriter(@"v2ray_config\vless_tcp_tls_client_config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//VLESS over WS with TLS 模式
|
||||
string outboundsConfigJsonVlessWsTls = @"TemplateConfg\v2ray\client\06_outbounds\vless_ws_tls_client_config.json";
|
||||
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVlessWsTls))
|
||||
{
|
||||
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
|
||||
|
||||
//设置客户端的地址/端口/id
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3];
|
||||
|
||||
clientJson["outbounds"] = jObjectJson["outbounds"];
|
||||
if (!Directory.Exists(@"v2ray_config\vless_ws_tls_client_config"))//如果不存在就创建file文件夹
|
||||
{
|
||||
Directory.CreateDirectory(@"v2ray_config\vless_ws_tls_client_config");//创建该文件夹
|
||||
}
|
||||
using (StreamWriter sw = new StreamWriter(@"v2ray_config\vless_ws_tls_client_config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//VMess over TCP with TLS模式
|
||||
string outboundsConfigJsonVmessTcpTls = @"TemplateConfg\v2ray\client\06_outbounds\vmess_tcp_tls_client_config.json";
|
||||
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVmessTcpTls))
|
||||
{
|
||||
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
|
||||
|
||||
//设置客户端的地址/端口/id
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["tcpSettings"]["header"]["request"]["path"][0] = ReceiveConfigurationParameters[9];
|
||||
|
||||
clientJson["outbounds"] = jObjectJson["outbounds"];
|
||||
if (!Directory.Exists(@"v2ray_config\vmess_tcp_tls_client_config"))//如果不存在就创建file文件夹
|
||||
{
|
||||
Directory.CreateDirectory(@"v2ray_config\vmess_tcp_tls_client_config");//创建该文件夹
|
||||
}
|
||||
using (StreamWriter sw = new StreamWriter(@"v2ray_config\vmess_tcp_tls_client_config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//VMess over WS with TLS模式
|
||||
string outboundsConfigJsonVmessWsTls = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json";
|
||||
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVmessWsTls))
|
||||
{
|
||||
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
|
||||
|
||||
//设置客户端的地址/端口/id
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
//设置http2模式下的path
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
//设置http2+TLS+Web/VLESS+http2+TLS+Web模式下的host
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4];
|
||||
}
|
||||
|
||||
//设置VLESS+TCP+XTLS+Web模式下的serverName
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["xtlsSettings"]["serverName"] = ReceiveConfigurationParameters[4];
|
||||
}
|
||||
|
||||
//设置mkcp
|
||||
if (ReceiveConfigurationParameters[0].Contains("mKCP") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5];
|
||||
if (String.IsNullOrEmpty(ReceiveConfigurationParameters[6]) == false)
|
||||
clientJson["outbounds"] = jObjectJson["outbounds"];
|
||||
if (!Directory.Exists(@"v2ray_config\vmess_ws_tls_client_config"))//如果不存在就创建file文件夹
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6];
|
||||
Directory.CreateDirectory(@"v2ray_config\vmess_ws_tls_client_config");//创建该文件夹
|
||||
}
|
||||
using (StreamWriter sw = new StreamWriter(@"v2ray_config\vmess_ws_tls_client_config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//设置QUIC
|
||||
if (ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5];
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["security"] = ReceiveConfigurationParameters[3];
|
||||
if (String.Equals(ReceiveConfigurationParameters[3], "none") == true)
|
||||
{
|
||||
ReceiveConfigurationParameters[6] = "";
|
||||
}
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
clientJson["outbounds"] = jObjectJson["outbounds"];
|
||||
|
||||
}
|
||||
using (StreamWriter sw = new StreamWriter(@"v2ray_config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//****** "V2Ray安装成功,祝你玩的愉快!!" ******40
|
||||
SetUpProgressBarProcessing(100);
|
||||
currentStatus = "V2Ray" + Application.Current.FindResource("DisplayInstallInfo_ProxyInstalledOK").ToString();
|
||||
@ -12239,7 +12439,7 @@ namespace ProxySU
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//显示服务端连接参数
|
||||
proxyType = "V2Ray";
|
||||
proxyType = "Trojan";
|
||||
ResultClientInformation resultClientInformation = new ResultClientInformation();
|
||||
resultClientInformation.ShowDialog();
|
||||
}
|
||||
|
@ -51,5 +51,5 @@ using System.Windows;
|
||||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.3.0.0")]
|
||||
[assembly: AssemblyFileVersion("2.3.0.0")]
|
||||
[assembly: AssemblyVersion("2.3.1.0")]
|
||||
[assembly: AssemblyFileVersion("2.3.1.0")]
|
||||
|
@ -13,12 +13,12 @@
|
||||
<RowDefinition Height="0.12*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<!-- V2Ray客户端配置参数 -->
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxV2rayClient" Visibility="Visible" Grid.Row="0">
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxV2rayClient" Visibility="Collapsed" Grid.Row="0">
|
||||
<Grid >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.6*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.5*"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.7*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.8*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
@ -47,9 +47,6 @@
|
||||
<TextBox x:Name="TextBoxUUIDextra" IsReadOnly="False" Grid.Column="1" Grid.Row="3" Margin="2" MouseDoubleClick="TextBoxUUIDextra_MouseDoubleClick"></TextBox>
|
||||
<TextBlock x:Name="TextBlockUUIDextraExplanation" Text="{DynamicResource TextBlockV2RayAlterIdExplain}" TextWrapping="Wrap" Grid.Column="2" Grid.Row="3" VerticalAlignment="Center"></TextBlock>
|
||||
|
||||
<!--<TextBlock x:Name="TextBlockVless" Text="{DynamicResource TextBlockV2RayAlterId}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxVless" IsReadOnly="False" Grid.Column="1" Grid.Row="3" Margin="2"></TextBox>-->
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxEncryption" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" MouseDoubleClick="TextBoxEncryption_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Text="{DynamicResource TextBlockEncryptionIsAuto}" Grid.Column="2" Grid.Row="4" Visibility="Collapsed" VerticalAlignment="Center"></TextBlock>
|
||||
@ -63,10 +60,6 @@
|
||||
<TextBlock x:Name="TextBlockHost" Text="Host:" Grid.Column="0" Grid.Row="7" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxHostQuicEncryption" IsReadOnly="True" Grid.Column="1" Grid.Row="7" Margin="2" MouseDoubleClick="TextBoxHostQuicEncryption_MouseDoubleClick"></TextBox>
|
||||
|
||||
|
||||
<!--<TextBox x:Name="TextBoxPath" IsReadOnly="True" Grid.Column="1" Grid.Row="9" Margin="2"></TextBox>
|
||||
<TextBlock x:Name="TextBlockPathExplain" Text="" Grid.Column="2" Grid.Row="9"></TextBlock>-->
|
||||
|
||||
<TextBlock x:Name="TextBlockPath" Text="{DynamicResource TextBlockClientPath}" Visibility="Visible" Grid.Column="0" Grid.Row="8" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockMkcpSeed" Text="{DynamicResource TextBlockClientMkcpSeed}" Visibility="Collapsed" Grid.Column="0" Grid.Row="8" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockQuicKey" Text="{DynamicResource TextBlockClientQuicKey}" Visibility="Collapsed" Grid.Column="0" Grid.Row="8" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
@ -75,9 +68,28 @@
|
||||
<TextBlock x:Name="TextBlocTLSonOrNo" Text="{DynamicResource TextBlockIsOrNotTLS}" Grid.Column="0" Grid.Row="9" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTLS" IsReadOnly="True" Grid.Column="1" Grid.Row="9" Margin="2" MouseDoubleClick="TextBoxTLS_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="10" Grid.ColumnSpan="3" Margin="5"></TextBlock>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="10" Grid.ColumnSpan="2" Margin="5"></TextBlock>
|
||||
<GroupBox x:Name="GroupBoxSelectVlessVmessXtlsTcpWs" Grid.Column="2" Grid.Row="5" Grid.RowSpan="6" Margin="10,0,2,0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<RadioButton x:Name="RadioButtonVlessTcpXtls" Content="VLESS over TCP with XTLS" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center" Checked="RadioButtonVlessTcpXtls_Checked"></RadioButton>
|
||||
<RadioButton x:Name="RadioButtonVlessTcpTls" Content="VLESS over TCP with TLS" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center" Checked="RadioButtonVlessTcpTls_Checked"></RadioButton>
|
||||
<RadioButton x:Name="RadioButtonVlessWsTls" Content="VLESS over WS with TLS" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center" Checked="RadioButtonVlessWsTls_Checked"></RadioButton>
|
||||
<RadioButton x:Name="RadioButtonVmessTcpTls" Content="VMess over TCP with TLS" Grid.Column="1" Grid.Row="3" VerticalAlignment="Center" Checked="RadioButtonVmessTcpTls_Checked"></RadioButton>
|
||||
<RadioButton x:Name="RadioButtonVmessWsTls" Content="VMess over WS with TLS" Grid.Column="1" Grid.Row="4" VerticalAlignment="Center" Checked="RadioButtonVmessWsTls_Checked"></RadioButton>
|
||||
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<!-- Trojan-Go客户端配置参数 -->
|
||||
@ -97,17 +109,18 @@
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" ></TextBlock>
|
||||
<TextBox x:Name="TextBoxTrojanGoServerHost" Grid.Column="1" Grid.Row="1" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxTrojanGoServerHost" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="4" MouseDoubleClick="TextBoxTrojanGoServerHost_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Grid.Column="2" Grid.Row="1"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerPort}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTrojanGoServerPort" Grid.Column="1" Grid.Row="2" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxTrojanGoServerPort" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="4" MouseDoubleClick="TextBoxTrojanGoServerPort_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Grid.Column="2" Grid.Row="2"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockHostPassword}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTrojanGoServerPassword" Grid.Column="1" Grid.Row="3" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxTrojanGoServerPassword" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="4" MouseDoubleClick="TextBoxTrojanGoServerPassword_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Grid.Column="2" Grid.Row="3"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockTrojanGoWebSocketPath" Text="{DynamicResource TextBlockTrojanGoWebSocketPath}" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTrojanGoWSPath" Grid.Column="1" Grid.Row="4" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxTrojanGoWSPath" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="4" MouseDoubleClick="TextBoxTrojanGoWSPath_MouseDoubleClick"></TextBox>
|
||||
<TextBlock x:Name="TextBlockTrojanGoCaption" Grid.Column="2" Grid.Row="4"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="2" Margin="5" VerticalAlignment="Center"></TextBlock>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<!-- Trojan客户端配置参数 -->
|
||||
@ -127,14 +140,15 @@
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" ></TextBlock>
|
||||
<TextBox x:Name="TextBoxTrojanServerHost" Grid.Column="1" Grid.Row="1" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxTrojanServerHost" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="4" MouseDoubleClick="TextBoxTrojanServerHost_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Grid.Column="2" Grid.Row="1"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerPort}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTrojanServerPort" Grid.Column="1" Grid.Row="2" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxTrojanServerPort" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="4" MouseDoubleClick="TextBoxTrojanServerPort_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Grid.Column="2" Grid.Row="2"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockHostPassword}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTrojanServerPassword" Grid.Column="1" Grid.Row="3" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxTrojanServerPassword" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="4" MouseDoubleClick="TextBoxTrojanServerPassword_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Grid.Column="2" Grid.Row="3"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="10" Grid.ColumnSpan="2" Margin="5"></TextBlock>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<!-- NaiveProxy客户端配置参数 -->
|
||||
@ -155,15 +169,15 @@
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxNaiveServerHost" Grid.Column="1" Grid.Row="1" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxNaiveServerHost" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="4" MouseDoubleClick="TextBoxNaiveServerHost_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Text="{DynamicResource TextBlockHostPart}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxNaivePort" Text="443" Grid.Column="1" Grid.Row="2" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxNaivePort" Text="443" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="4" MouseDoubleClick="TextBoxNaivePort_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Text="{DynamicResource TextBlockHostUser}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxNaiveUser" Grid.Column="1" Grid.Row="3" Margin="4"></TextBox>
|
||||
<TextBox x:Name="TextBoxNaiveUser" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="4" MouseDoubleClick="TextBoxNaiveUser_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockHostPassword}" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxNaivePassword" Grid.Column="1" Grid.Row="4" Margin="4"></TextBox>
|
||||
|
||||
<TextBox x:Name="TextBoxNaivePassword" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="4" MouseDoubleClick="TextBoxNaivePassword_MouseDoubleClick"></TextBox>
|
||||
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="6" Grid.ColumnSpan="2" Margin="5"></TextBlock>
|
||||
<!--<Button x:Name="ButtonOpenDir" Content="确定" Grid.Column="1" Grid.Row="4" Margin="40,3,40,3" Click="ButtonOpenDir_Click"></Button>-->
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
@ -176,37 +190,35 @@
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="0" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRHostAddress" IsReadOnly="True" Grid.Column="1" Grid.Row="0" Margin="2"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="0"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerPort}" Grid.Column="0" Grid.Row="1" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRPort" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="2"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="1"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockTrojanGoPassword}" Grid.Column="0" Grid.Row="2" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRUUID" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="2"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="2"></TextBlock>
|
||||
<!--<TextBlock x:Name="TextBlockSSRUUIDextra" Text="{DynamicResource TextBlockV2RayAlterId}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRUUIDextra" IsReadOnly="False" Grid.Column="1" Grid.Row="3" Margin="2"></TextBox>
|
||||
<TextBlock x:Name="TextBlockSSRUUIDextraExplanation" Text="{DynamicResource TextBlockV2RayAlterIdExplain}" TextWrapping="Wrap" Grid.Column="2" Grid.Row="3"></TextBlock>-->
|
||||
<TextBlock Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSREncryption" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="2"></TextBox>
|
||||
<!--<TextBlock Text="{DynamicResource TextBlockEncryptionIsAuto}" Grid.Column="2" Grid.Row="3"></TextBlock>-->
|
||||
<TextBlock Text="{DynamicResource TextBlockTransferProtocol}" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRTransmission" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="4"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockCamouflageType}" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRCamouflageType" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="2"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="5"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="1" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRHostAddress" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="4" MouseDoubleClick="TextBoxSSRHostAddress_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockServerPort}" Grid.Column="0" Grid.Row="2" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRPort" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="4" MouseDoubleClick="TextBoxSSRPort_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockTrojanGoPassword}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRUUID" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="4" MouseDoubleClick="TextBoxSSRUUID_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSREncryption" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="4" MouseDoubleClick="TextBoxSSREncryption_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockTransferProtocol}" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRTransmission" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="4" MouseDoubleClick="TextBoxSSRTransmission_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockCamouflageType}" Grid.Column="0" Grid.Row="6" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRCamouflageType" IsReadOnly="True" Grid.Column="1" Grid.Row="6" Margin="4" MouseDoubleClick="TextBoxSSRCamouflageType_MouseDoubleClick"></TextBox>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="2" Margin="5" VerticalAlignment="Bottom"></TextBlock>
|
||||
<!--<TextBlock x:Name="TextBlocSSRTLSonOrNo" Text="{DynamicResource TextBlockIsOrNotTLS}" Grid.Column="0" Grid.Row="7" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRTLS" IsReadOnly="True" Grid.Column="1" Grid.Row="7" Margin="2"></TextBox>
|
||||
<TextBlock x:Name="TextBlocSSRTLSonOrNoExplain" Text="" Grid.Column="2" Grid.Row="7"></TextBlock>
|
||||
@ -225,7 +237,7 @@
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<!-- SS客户端配置参数 -->
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClientSS" Visibility="Collapsed" Grid.Row="0">
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClientSS" Visibility="Visible" Grid.Row="0">
|
||||
<Grid >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.6*"></ColumnDefinition>
|
||||
@ -244,27 +256,28 @@
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="0" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxHostAddressSS" IsReadOnly="True" Grid.Column="1" Grid.Row="0" Margin="2" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="TextBoxHostAddressSS" IsReadOnly="True" Grid.Column="1" Grid.Row="0" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxHostAddressSS_MouseDoubleClick"/>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="0"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerPort}" Grid.Column="0" Grid.Row="1" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPortSS" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="2" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="TextBoxPortSS" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxPortSS_MouseDoubleClick"/>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="1"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockTrojanGoPassword}" Grid.Column="0" Grid.Row="2" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPasswordSS" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="2" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="TextBoxPasswordSS" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxPasswordSS_MouseDoubleClick"/>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="2"></TextBlock>
|
||||
<!--<TextBlock x:Name="TextBlockSSRUUIDextra" Text="{DynamicResource TextBlockV2RayAlterId}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxSSRUUIDextra" IsReadOnly="False" Grid.Column="1" Grid.Row="3" Margin="2"></TextBox>
|
||||
<TextBlock x:Name="TextBlockSSRUUIDextraExplanation" Text="{DynamicResource TextBlockV2RayAlterIdExplain}" TextWrapping="Wrap" Grid.Column="2" Grid.Row="3"></TextBlock>-->
|
||||
<TextBlock Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxEncryptionSS" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="2" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="TextBoxEncryptionSS" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxEncryptionSS_MouseDoubleClick"/>
|
||||
<!--<TextBlock Text="{DynamicResource TextBlockEncryptionIsAuto}" Grid.Column="2" Grid.Row="3"></TextBlock>-->
|
||||
<TextBlock x:Name="TextBlockPluginNameExplainSS" Text="{DynamicResource TextBlockPluginNameExplainSS}" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPluginNameExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="TextBoxPluginNameExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxPluginNameExplainSS_MouseDoubleClick"/>
|
||||
<TextBox x:Name="TextBoxPluginNameExplainSSpc" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" Visibility="Collapsed" VerticalAlignment="Center"/>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="4"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockPluginOptionExplainSS" Text="{DynamicResource TextBlockPluginOptionExplainSS}" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPluginOptionExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="2" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="TextBoxPluginOptionExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxPluginOptionExplainSS_MouseDoubleClick"/>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="5"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="6" Grid.ColumnSpan="2" Margin="5"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockClientPromptSS" Text="{DynamicResource TextBlockClientPromptSS}" Foreground="Red" TextWrapping="Wrap" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" Margin="10,0,0,0"></TextBlock>
|
||||
<RadioButton x:Name="RadioButtonMobile" Content="{DynamicResource RadioButtonMobileSS}" Grid.Column="1" Grid.Row="8" HorizontalAlignment="Left" VerticalAlignment="Center" Checked="RadioButtonMobile_Checked"></RadioButton>
|
||||
<RadioButton x:Name="RadioButtonPC" Content="{DynamicResource RadioButtonPCSS}" Grid.Column="2" Grid.Row="8" HorizontalAlignment="Left" VerticalAlignment="Center" Checked="RadioButtonPC_Checked"></RadioButton>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -111,8 +111,9 @@
|
||||
<sys:String x:Key="ButtonTrojanGoTemplateOK">OK</sys:String>
|
||||
<sys:String x:Key="ButtonTrojanGoTemplateCancel">Cancel</sys:String>
|
||||
<!-- The following V2Ray template library interface -->
|
||||
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray template library</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHotPlan">Popular Plan</sys:String>
|
||||
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray Templates</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHotPlan">Recommend</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayEarlyPlan">EarlyPlan</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayVlessProtocol">VLESS</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessExplain">VLESS is a lightweight transmission protocol. Unlike VMess, VLESS don't depend on the system time. The authentication method is also UUID, but alterId is not required. Currently VLESS does not have its own encryption, please use it for reliable channels, such as TLS. Advantages: It can effectively reduce host resource consumption. Currently VLESS does not support sharing. Please ensure that both the client and server v2ray-core are the latest version.</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessXtlsTcpExplain">XTLS works well on devices with low performance or without AES hard-decoding. For example, XTLS is used on hard routers, and the network speed can be doubled when the CPU is full, or the same The CPU occupancy rate is halved at Internet speed, and for mobile devices, the reduction in the amount of calculation means power saving.Version requires 4.29+ (Domain required) Not support CDN.</sys:String>
|
||||
@ -133,12 +134,16 @@
|
||||
<sys:String x:Key="TextBlockV2RayMkcpSeedUUID">mKCP Seed:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMkcpExplain">Enable the mKCP Seed key to enhance anti-recognition, leave it blank to disable it. Version 4.24.2+</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayPath">Path:</sys:String>
|
||||
<sys:String x:Key="TextBlockQuicEncryption">QUIC Encryption:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVlessWsPath">VLESS ws path:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVmessTcpPath">VMESS tcp path:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVmessWsPath">VMESS ws path:</sys:String>
|
||||
<sys:String x:Key="TextBlockQuicEncryption">QUIC Encryption:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayDomain">Domain name:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMaskSites">Mask a website:</sys:String>
|
||||
<sys:String x:Key="TextBoxV2RayMaskSitesTag">Set this item to increase the concealment of the agent (may be empty)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketTlsWebExplain">Strong stability, Caddy2 as the front, hidden proxy feature, recognized as https traffic to the website, the strongest anti-blocking recognition, domain name is required, CDN support</sys:String >
|
||||
<sys:String x:Key="TextBlockV2RayHttp2TlsWebExplain">based on HTTP/2 transmission. Completely implemented in accordance with the HTTP/2 standard, with Caddy2 as the front, hidden proxy features, H2C protocol forwarding to V2Ray, domain name is required, and CloudFlare CDN is not currently supported</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + fallback and shunt to WHATEVER (ultimate configuration), configured and recommended by rprx boss (author of xtls), configure the following five solutions at the same time on the server side, sharing the same domain name and port 443, WS can pass through CDN.Option 4 has a special configuration, there is no graphics client support at present, you can use the official V2Ray client.</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpExplain">Encrypted data transmission will be recognized as unknown tcp traffic</sys:String>
|
||||
<sys:String x:Key="RadioButtonV2RayTcpHttp">TCP+Http camouflage</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpHttpExplain">Encrypted data transmission and HTTP disguise will be recognized as http traffic, but not real http access</sys:String>
|
||||
@ -190,7 +195,7 @@
|
||||
<sys:String x:Key="TextBlockEncryption">Encryption method:</sys:String>
|
||||
<sys:String x:Key="TextBlockTransferProtocol">Transfer Protocol:</sys:String>
|
||||
<sys:String x:Key="TextBlockCamouflageType">Camouflage type(Confuse):</sys:String>
|
||||
<sys:String x:Key="TextBlockIsOrNotTLS">TLS:</sys:String>
|
||||
<sys:String x:Key="TextBlockIsOrNotTLS">TLS Set:</sys:String>
|
||||
<sys:String x:Key="TextBlockCopyToClipExplain">Tip: Double-click the above content window to copy it to the clipboard.</sys:String>
|
||||
<sys:String x:Key="TextBlockClientPath">Path:</sys:String>
|
||||
<sys:String x:Key="TextBlockClientMkcpQuicKey">mKCP Seed/QUIC key:</sys:String>
|
||||
|
@ -118,6 +118,7 @@
|
||||
<!-- 以下V2Ray模板库界面 -->
|
||||
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray 模板库</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHotPlan">推荐方案</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayEarlyPlan">尝鲜方案</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayVlessProtocol">VLESS协议</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessExplain">VLESS 是一个无状态的轻量传输协议,与 VMess 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID,但不需要 alterId。目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。优点:可以有效的降低主机资源消耗。目前 VLESS 不支持分享。VLESS 处于公测阶段,测试期间请确保客户端与服务端的 v2ray-core 均为最新版本。</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessXtlsTcpExplain">XTLS 在低性能或没有 AES 硬解的设备上效果出众,如在硬路由上换用 XTLS,同样跑满 CPU 时实现网速 翻倍,或是相同网速时 CPU 占用率减半,而对于移动设备,计算量减少意味着省电。服务端客户端版本要求4.29+ (需域名)不支持CDN。</sys:String>
|
||||
@ -139,15 +140,20 @@
|
||||
<sys:String x:Key="TextBlockV2RayMkcpSeedUUID">mKCP Seed:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMkcpExplain">启用mKCP Seed密钥,可增强抗识别,留空则禁用,要求版本4.24.2+</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayPath">路径:</sys:String>
|
||||
<sys:String x:Key="TextBlockQuicEncryption">QUIC加密方式:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVlessWsPath">VLESS ws路径:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVmessTcpPath">VMESS tcp路径:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVmessWsPath">VMESS ws路径:</sys:String>
|
||||
|
||||
<sys:String x:Key="TextBlockQuicEncryption">QUIC加密方式:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayDomain">域名:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMaskSites">伪装网站:</sys:String>
|
||||
<sys:String x:Key="TextBoxV2RayMaskSitesTag">设置此项可增加代理的隐蔽(可为空)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketTlsWebExplain">稳定性强,Caddy2做前置,隐藏代理特征,被识别为访问网站的https流量,抗封锁识别最强,需要域名,支持CDN</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayHttp2TlsWebExplain">基于 HTTP/2 传输。完整按 HTTP/2 标准实现,Caddy2做前置,隐藏代理特征,H2C协议转发到V2Ray,需要域名,暂不支持CloudFlare的CDN</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpExplain">数据加密传输,会被识别为未知的tcp流量</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + 回落 and 分流 to WHATEVER(终极配置),由rprx大佬 (xtls作者) 配置并推荐,在服务端同时配置以下五种方案,共用同一域名与443端口,其中 WS 都可以通过 CDN。方案4 配置特别,目前尚无图形客户端支持,可使用V2Ray官方客户端。</sys:String>
|
||||
<sys:String x:Key="RadioButtonV2RayTcpHttp">TCP+Http伪装</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpHttpExplain">数据加密传输,并做http伪装,会被识别为http流量,但并不是真正的http访问</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpExplain">数据加密传输,会被识别为未知的tcp流量</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpHttpExplain">数据加密传输,并做http伪装,会被识别为http流量,但并不是真正的http访问</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpTlsExplain">数据加密传输,传输协议使用TLS,会被识别为TLS流量,不等同于https流量特征 (需域名)</sys:String>
|
||||
<sys:String x:Key="RadioButtonV2RayTcpTlsSelfSigned">TCP+TLS(自签证书)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpTlsSelfSignedExplain">数据加密传输,传输协议使用TLS,会被识别为TLS流量,不等同于https流量特征 (无需域名)</sys:String>
|
||||
@ -196,7 +202,7 @@
|
||||
<sys:String x:Key="TextBlockEncryption">加密方式:</sys:String>
|
||||
<sys:String x:Key="TextBlockTransferProtocol">传输协议:</sys:String>
|
||||
<sys:String x:Key="TextBlockCamouflageType">伪装类型(混淆):</sys:String>
|
||||
<sys:String x:Key="TextBlockIsOrNotTLS">是否使用TLS:</sys:String>
|
||||
<sys:String x:Key="TextBlockIsOrNotTLS">TLS设置:</sys:String>
|
||||
<sys:String x:Key="TextBlockCopyToClipExplain">提示:双击以上内容窗,即可复制到剪贴板中。</sys:String>
|
||||
<sys:String x:Key="TextBlockClientPath">路径(Path):</sys:String>
|
||||
<sys:String x:Key="TextBlockClientQuicKey">QUIC密钥:</sys:String>
|
||||
@ -350,7 +356,7 @@
|
||||
<sys:String x:Key="readmeTxtV2RayExplainLine09">v2rayNG(Android)在Google Play下载网址:https://play.google.com/store/apps/details?id=com.v2ray.ang</sys:String>
|
||||
<sys:String x:Key="readmeTxtV2RayExplainLine10">Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。</sys:String>
|
||||
<sys:String x:Key="readmeTxtV2RayExplainLine11">此文件为v2rayN、Trojan-QT5、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址</sys:String>
|
||||
<sys:String x:Key="readmeTxtV2RayExplainLine12">服务器通用连接配置参数</sys:String>
|
||||
<sys:String x:Key="readmeTxtV2RayExplainLine12">服务器通用连接配置参数:</sys:String>
|
||||
<!--以下为Trojan-go客户端说明文件-->
|
||||
<sys:String x:Key="readmeTxtTrojan-goExplainLine01">此文件为Trojan-go官方程序所使用的客户端配置文件,配置为全局模式,http与socks5地址:127.0.0.1:1080</sys:String>
|
||||
<sys:String x:Key="readmeTxtTrojan-goExplainLine02">Trojan-go官方网站:https://github.com/p4gefau1t/trojan-go</sys:String>
|
||||
|
@ -115,6 +115,7 @@
|
||||
<!-- 以下V2Ray模板庫界面 -->
|
||||
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray 模板庫</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHotPlan">推薦方案</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayEarlyPlan">嚐鮮方案</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayVlessProtocol">VLESS協議</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessExplain">VLESS 是一個無狀態的輕量傳輸協議,與 VMess 不同,VLESS 不依賴於系統時間,認證方式同樣為 UUID,但不需要 alterId。目前 VLESS 沒有自帶加密,請用於可靠信道,如 TLS。優點:可以有效的降低主機資源消耗。目前 VLESS 不支持分享。 VLESS 處於公測階段,測試期間請確保客戶端與服務端的 v2ray-core 均為最新版本。</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessXtlsTcpExplain">XTLS 在低性能或沒有AES 硬解的設備上效果出眾,如在硬路由上換用XTLS,同樣跑滿CPU 時實現網速翻倍,或是相同網速時CPU 佔用率減半,而對於移動設備,計算量減少意味著省電。服務端客戶端版本要求4.29+ (需域名)不支持CDN。</sys:String>
|
||||
@ -135,12 +136,16 @@
|
||||
<sys:String x:Key="TextBlockV2RayMkcpSeedUUID">mKCP Seed:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMkcpExplain">啟用mKCP Seed密鑰,可增強抗識別,留空則禁用,要求版本4.24.2+</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayPath">路徑:</sys:String>
|
||||
<sys:String x:Key="TextBlockQuicEncryption">QUIC加密方式:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVlessWsPath">VLESS ws路徑:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVmessTcpPath">VMESS tcp路徑:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVmessWsPath">VMESS ws路徑:</sys:String>
|
||||
<sys:String x:Key="TextBlockQuicEncryption">QUIC加密方式:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayDomain">域名:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMaskSites">偽裝網站:</sys:String>
|
||||
<sys:String x:Key="TextBoxV2RayMaskSitesTag">設置此項可增加代理的隱蔽(可為空)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketTlsWebExplain">穩定性強,Caddy2做前置,隱藏代理特徵,被識別為訪問網站的https流量,抗封鎖識別最強,需要域名,支持CDN</sys:String >
|
||||
<sys:String x:Key="TextBlockV2RayHttp2TlsWebExplain">基於 HTTP/2 傳輸。完整按 HTTP/2 標準實現,Caddy2做前置,隱藏代理特徵,H2C協議轉發到V2Ray,需要域名,暫不支持CloudFlare的CDN</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + 回落and 分流to WHATEVER(終極配置),由rprx大佬(xtls作者)配置並推薦,在服務端同時配置以下五種方案,共用同一域名與443端口,其中 WS 都可以通過 CDN。方案4 配置特別,目前尚無圖形客戶端支持,可使用V2Ray官方客戶端。</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpExplain">數據加密傳輸,會被識別為未知的tcp流量</sys:String>
|
||||
<sys:String x:Key="RadioButtonV2RayTcpHttp">TCP+Http偽裝</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpHttpExplain">數據加密傳輸,並做http偽裝,會被識別為http流量,但並不是真正的http訪問</sys:String>
|
||||
@ -192,7 +197,7 @@
|
||||
<sys:String x:Key="TextBlockEncryption">加密方式:</sys:String>
|
||||
<sys:String x:Key="TextBlockTransferProtocol">傳輸協議:</sys:String>
|
||||
<sys:String x:Key="TextBlockCamouflageType">偽裝類型(混淆):</sys:String>
|
||||
<sys:String x:Key="TextBlockIsOrNotTLS">是否使用TLS:</sys:String>
|
||||
<sys:String x:Key="TextBlockIsOrNotTLS">TLS設置:</sys:String>
|
||||
<sys:String x:Key="TextBlockCopyToClipExplain">提示:雙擊以上內容窗,即可複製到剪貼板中。</sys:String>
|
||||
<sys:String x:Key="TextBlockClientPath">路徑(Path):</sys:String>
|
||||
<sys:String x:Key="TextBlockClientMkcpQuicKey">mKCP Seed/QUIC密鑰:</sys:String>
|
||||
|
@ -5,7 +5,7 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ProxySU"
|
||||
mc:Ignorable="d"
|
||||
Title="V2RayTemplateConfiguration" Height="600" Width="850">
|
||||
Title="V2RayTemplateConfiguration" Height="600" Width="950">
|
||||
<Window.Resources>
|
||||
<Style BasedOn="{StaticResource {x:Type TextBox}}"
|
||||
TargetType="TextBox"
|
||||
@ -42,7 +42,7 @@
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderV2RayTemplates}" Grid.Row="0" Grid.RowSpan="3">
|
||||
<Grid>
|
||||
<TabControl x:Name="TabControlTemplate">
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayHotPlan}" Width="110" Height="30">
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayHotPlan}" Width="100" Height="30">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.8*"></ColumnDefinition>
|
||||
@ -52,9 +52,7 @@
|
||||
<ColumnDefinition Width="0.3*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition Height="1.2*"></RowDefinition>
|
||||
<RowDefinition Height="1.2*"></RowDefinition>
|
||||
<RowDefinition Height="0.2*"></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
@ -64,11 +62,58 @@
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayWebSocketTlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
<RadioButton x:Name="RadioButtonHTTP2WebHot" Content="HTTP2+TLS+Web" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonWebSocketTLS2Web_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayHttp2TlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
|
||||
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayVlessProtocol}" Width="110" Height="30">
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayEarlyPlan}" Width="100" Height="30">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="10"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition Width="10"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="10"></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition Height="0.4*"></RowDefinition>
|
||||
<RowDefinition Height="10"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Column="1" Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.2*"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockVlessVmessXtlsTcpWebSocketExplainHot}" TextWrapping="Wrap" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
<TextBlock Text="1. VLESS over TCP with XTLS" Grid.Column="1" Grid.Row="1" VerticalAlignment="Bottom"></TextBlock>
|
||||
<TextBlock Text="2. VLESS over TCP with TLS" Grid.Column="1" Grid.Row="2" VerticalAlignment="Bottom"></TextBlock>
|
||||
<TextBlock Text="3. VLESS over WS with TLS" Grid.Column="1" Grid.Row="3" VerticalAlignment="Bottom"></TextBlock>
|
||||
<TextBlock Text="4. VMess over TCP with TLS" Grid.Column="1" Grid.Row="4" VerticalAlignment="Bottom"></TextBlock>
|
||||
<TextBlock Text="5. VMess over WS with TLS" Grid.Column="1" Grid.Row="5" VerticalAlignment="Bottom"></TextBlock>
|
||||
</Grid>
|
||||
<RadioButton x:Name="RadioButtonVlessVmessXtlsTcpWebSocketHot" Content="VLESS+VMESS+XTLS+TCP+WebSocket+Web" GroupName="TemplateGroup" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" Checked="RadioButtonVlessVmessXtlsTcpWebSocketHot_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
|
||||
<!--<Grid Grid.Column="0" Grid.Row="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.15*"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock x:Name="TextBlockVlessVmessXtlsTcpWebSocket" Text="VLESS+VMESS+XTLS+TCP+WebSocket+Web" TextWrapping="Wrap" Margin="0,0,8,0" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Left" MouseDown="TextBlockVlessVmessXtlsTcpWebSocket_MouseDown"></TextBlock>
|
||||
</Grid>-->
|
||||
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayVlessProtocol}" Width="100" Height="30">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
@ -301,14 +346,21 @@
|
||||
<Button x:Name="ButtonQuicAndmKcpSeedUUID" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="4" Grid.Row="2" Margin="2" Click="ButtonQuicAndMkcpSeedUUID_Click"></Button>
|
||||
<TextBlock x:Name="TextBlockMkcpUUID" Text="{DynamicResource TextBlockV2RayMkcpExplain}" TextWrapping="Wrap" Grid.Column="5" Grid.Row="2" Grid.ColumnSpan="2"></TextBlock>
|
||||
|
||||
<TextBlock x:Name="TextBlockPath" Text="{DynamicResource TextBlockV2RayPath}" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPath" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" Margin="3"></TextBox>
|
||||
<Button x:Name="ButtonPath" Content="{DynamicResource ButtonNaiveProxyChangeUser}" Grid.Column="4" Grid.Row="3" Margin="2" Click="ButtonPath_Click"></Button>
|
||||
<TextBlock x:Name="TextBlockPath" Text="{DynamicResource TextBlockV2RayPath}" Visibility="Collapsed" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPath" Visibility="Collapsed" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" Margin="3"></TextBox>
|
||||
<Button x:Name="ButtonPath" Content="{DynamicResource ButtonNaiveProxyChangeUser}" Visibility="Collapsed" Grid.Column="4" Grid.Row="3" Margin="2" Click="ButtonPath_Click"></Button>
|
||||
|
||||
<TextBlock x:Name="TextBlockPathVlessWs" Text="{DynamicResource TextBlockV2RayVlessWsPath}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPathVlessWS" Grid.Column="1" Grid.Row="3" Margin="3"></TextBox>
|
||||
<TextBlock x:Name="TextBlockPathVmessTcp" Text="{DynamicResource TextBlockV2RayVmessTcpPath}" Grid.Column="2" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPathVmessTcp" Grid.Column="3" Grid.Row="3" Margin="3"></TextBox>
|
||||
<TextBlock x:Name="TextBlockPathVmessWs" Text="{DynamicResource TextBlockV2RayVmessWsPath}" Grid.Column="4" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPathVmessWS" Grid.Column="5" Grid.Row="3" Margin="3"></TextBox>
|
||||
<Button x:Name="ButtonVlessVmessPath" Content="{DynamicResource ButtonNaiveProxyChangeUser}" Grid.Column="6" Grid.Row="3" Margin="2" Click="ButtonVlessVmessPath_Click"></Button>
|
||||
|
||||
<TextBlock x:Name="TextBlockQuicEncryption" Text="{DynamicResource TextBlockQuicEncryption}" Visibility="Collapsed" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<ComboBox x:Name="ComboBoxEncryptionMethodInfo" Visibility="Collapsed" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Height="25" Margin="3,0,0,0" SelectionChanged="ComboBoxEncryptionMethodInfo_SelectionChanged"></ComboBox>
|
||||
|
||||
|
||||
<TextBlock x:Name="TextBlockDomain" Text="{DynamicResource TextBlockV2RayDomain}" Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxDomain" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxDomainPrompt}" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3" Margin="3"></TextBox>
|
||||
<Button x:Name="ButtonDomain" Content="检测" Visibility="Collapsed" Grid.Column="4" Grid.Row="4" Margin="2" Click="ButtonDomain_Click"></Button>
|
||||
|
@ -209,6 +209,28 @@ namespace ProxySU
|
||||
DisguiseURLprocessing();
|
||||
}
|
||||
|
||||
//VLESS+VMESS+XTLS+TCP+WebSocket+Web模式被选中
|
||||
else if (RadioButtonVlessVmessXtlsTcpWebSocketHot.IsChecked == true)
|
||||
{
|
||||
domainNotEmpty = TestDomainIsEmpty();
|
||||
//传递模板类型
|
||||
MainWindow.ReceiveConfigurationParameters[0] = "VlessVmessXtlsTcpWebSocketWeb";
|
||||
//传递方案名称
|
||||
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessVmessXtlsTcpWebSocketHot.Content.ToString();
|
||||
//传递路径
|
||||
MainWindow.ReceiveConfigurationParameters[3] = TextBoxPathVlessWS.Text.ToString();//VLESS ws Path
|
||||
MainWindow.ReceiveConfigurationParameters[9] = TextBoxPathVmessTcp.Text.ToString();//VMESS tcp Path
|
||||
MainWindow.ReceiveConfigurationParameters[6] = TextBoxPathVmessWS.Text.ToString();//VMESS ws Path
|
||||
|
||||
//传递域名
|
||||
MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString();
|
||||
//传递伪装网站
|
||||
MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString();
|
||||
//处理伪装网站域名中的前缀
|
||||
DisguiseURLprocessing();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region WebSocket传输协议(VMESS)
|
||||
@ -575,6 +597,7 @@ namespace ProxySU
|
||||
|
||||
//隐藏Path
|
||||
HidePath();
|
||||
HideVlessVmessMultiplePath();
|
||||
|
||||
//隐藏域名
|
||||
HideDomain();
|
||||
@ -583,8 +606,8 @@ namespace ProxySU
|
||||
HideMaskSites();
|
||||
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//Random random = new Random();
|
||||
int randomServerPort = GetRandomPort();
|
||||
TextBoxServerListenPort.Text = randomServerPort.ToString();
|
||||
@ -603,6 +626,7 @@ namespace ProxySU
|
||||
|
||||
//隐藏Path
|
||||
HidePath();
|
||||
HideVlessVmessMultiplePath();
|
||||
|
||||
//隐藏域名
|
||||
HideDomain();
|
||||
@ -610,8 +634,8 @@ namespace ProxySU
|
||||
//隐藏伪装网站
|
||||
HideMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
@ -627,6 +651,7 @@ namespace ProxySU
|
||||
|
||||
//隐藏Path
|
||||
HidePath();
|
||||
HideVlessVmessMultiplePath();
|
||||
|
||||
//显示域名
|
||||
ShowDomain();
|
||||
@ -634,8 +659,8 @@ namespace ProxySU
|
||||
//隐藏伪装网站
|
||||
HideMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
@ -651,6 +676,7 @@ namespace ProxySU
|
||||
|
||||
//隐藏Path
|
||||
HidePath();
|
||||
HideVlessVmessMultiplePath();
|
||||
|
||||
//显示域名
|
||||
ShowDomain();
|
||||
@ -658,11 +684,41 @@ namespace ProxySU
|
||||
//显示伪装网站
|
||||
ShowMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
private void RadioButtonVlessVmessXtlsTcpWebSocketHot_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
TextBoxServerListenPort.Text = "443";
|
||||
|
||||
//隐藏mKCP项
|
||||
HideMkcpSeed();
|
||||
|
||||
//隐藏QUIC密钥
|
||||
HideQuic();
|
||||
|
||||
//显示复合路径
|
||||
ShowVlessVmessMultiplePath();
|
||||
|
||||
//显示域名
|
||||
ShowDomain();
|
||||
|
||||
//显示伪装网站
|
||||
ShowMaskSites();
|
||||
|
||||
//生成UUID
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
//单击TextBlockVlessVmessXtlsTcpWebSocket标签则选中RadioButtonVlessVmessXtlsTcpWebSocketHot
|
||||
private void TextBlockVlessVmessXtlsTcpWebSocket_MouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
RadioButtonVlessVmessXtlsTcpWebSocketHot.IsChecked = true;
|
||||
}
|
||||
private void RadioButtonTCP2TLSnoDomain_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
TextBoxServerListenPort.Text = "443";
|
||||
@ -675,6 +731,7 @@ namespace ProxySU
|
||||
|
||||
//隐藏Path
|
||||
HidePath();
|
||||
HideVlessVmessMultiplePath();
|
||||
|
||||
//隐藏域名
|
||||
HideDomain();
|
||||
@ -682,8 +739,8 @@ namespace ProxySU
|
||||
//隐藏伪装网站
|
||||
HideMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
@ -706,8 +763,8 @@ namespace ProxySU
|
||||
//显示伪装网站
|
||||
ShowMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
@ -730,8 +787,8 @@ namespace ProxySU
|
||||
//隐藏伪装网站
|
||||
HideMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
@ -754,8 +811,8 @@ namespace ProxySU
|
||||
//隐藏伪装网站
|
||||
HideMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
//清除其他选项卡中的选项
|
||||
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
}
|
||||
@ -771,6 +828,7 @@ namespace ProxySU
|
||||
|
||||
//隐藏Path
|
||||
HidePath();
|
||||
HideVlessVmessMultiplePath();
|
||||
|
||||
//隐藏域名
|
||||
HideDomain();
|
||||
@ -778,11 +836,11 @@ namespace ProxySU
|
||||
//隐藏伪装网站
|
||||
HideMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
|
||||
uuid = Guid.NewGuid();
|
||||
TextBoxQuicAndMkcpSeedUUID.Text = uuid.ToString();
|
||||
//uuid = Guid.NewGuid();
|
||||
TextBoxQuicAndMkcpSeedUUID.Text = GenerateRandomUUID();
|
||||
|
||||
//Random random = new Random();
|
||||
int randomServerPort = GetRandomPort();
|
||||
@ -802,6 +860,7 @@ namespace ProxySU
|
||||
|
||||
//隐藏Path
|
||||
HidePath();
|
||||
HideVlessVmessMultiplePath();
|
||||
|
||||
//隐藏域名
|
||||
HideDomain();
|
||||
@ -809,11 +868,11 @@ namespace ProxySU
|
||||
//隐藏伪装网站
|
||||
HideMaskSites();
|
||||
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
|
||||
uuid = Guid.NewGuid();
|
||||
TextBoxQuicAndMkcpSeedUUID.Text = uuid.ToString();
|
||||
//uuid = Guid.NewGuid();
|
||||
TextBoxQuicAndMkcpSeedUUID.Text = GenerateRandomUUID();
|
||||
|
||||
//Random random = new Random();
|
||||
int randomServerPort = GetRandomPort();
|
||||
@ -889,12 +948,43 @@ namespace ProxySU
|
||||
//显示路径相关项
|
||||
private void ShowPath()
|
||||
{
|
||||
HideVlessVmessMultiplePath();//隐藏VLESS VMESS多种方案的路径Path
|
||||
//显示Path
|
||||
TextBlockPath.Visibility = Visibility.Visible;
|
||||
TextBoxPath.Visibility = Visibility.Visible;
|
||||
TextBoxPath.Text = "/ray";
|
||||
ButtonPath.Visibility = Visibility.Visible;
|
||||
}
|
||||
//隐藏VLESS VMESS复合方案路径
|
||||
private void HideVlessVmessMultiplePath()
|
||||
{
|
||||
TextBlockPathVlessWs.Visibility = Visibility.Collapsed;
|
||||
TextBoxPathVlessWS.Visibility = Visibility.Collapsed;
|
||||
TextBlockPathVmessTcp.Visibility = Visibility.Collapsed;
|
||||
TextBoxPathVmessTcp.Visibility = Visibility.Collapsed;
|
||||
TextBlockPathVmessWs.Visibility = Visibility.Collapsed;
|
||||
TextBoxPathVmessWS.Visibility = Visibility.Collapsed;
|
||||
ButtonVlessVmessPath.Visibility = Visibility.Collapsed;
|
||||
|
||||
}
|
||||
//显示VLESS VMESS复合方案路径
|
||||
private void ShowVlessVmessMultiplePath()
|
||||
{
|
||||
HidePath();//隐藏普通路径Path
|
||||
TextBlockPathVlessWs.Visibility = Visibility.Visible;
|
||||
TextBoxPathVlessWS.Visibility = Visibility.Visible;
|
||||
TextBoxPathVlessWS.Text = "/vlessws";
|
||||
|
||||
TextBlockPathVmessTcp.Visibility = Visibility.Visible;
|
||||
TextBoxPathVmessTcp.Visibility = Visibility.Visible;
|
||||
TextBoxPathVmessTcp.Text = "/vmesstcp";
|
||||
|
||||
TextBlockPathVmessWs.Visibility = Visibility.Visible;
|
||||
TextBoxPathVmessWS.Visibility = Visibility.Visible;
|
||||
TextBoxPathVmessWS.Text = "/vmessws";
|
||||
|
||||
ButtonVlessVmessPath.Visibility = Visibility.Visible;
|
||||
}
|
||||
//隐藏域名相关项
|
||||
private void HideDomain()
|
||||
{
|
||||
@ -928,18 +1018,18 @@ namespace ProxySU
|
||||
//产生随机的uuid
|
||||
private void ButtonNewUUID_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxNewUUID.Text = GenerateRandomUUID();
|
||||
}
|
||||
|
||||
//产生QUIC密钥/mKCP Seed所用的UUID
|
||||
private void ButtonQuicAndMkcpSeedUUID_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Guid uuid = Guid.NewGuid();
|
||||
TextBoxQuicAndMkcpSeedUUID.Text = uuid.ToString();
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
TextBoxQuicAndMkcpSeedUUID.Text = GenerateRandomUUID();
|
||||
}
|
||||
|
||||
//产生随机服务端口
|
||||
//更新随机服务端口
|
||||
private void ButtonServerListenPort_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//Random random = new Random();
|
||||
@ -947,25 +1037,56 @@ namespace ProxySU
|
||||
TextBoxServerListenPort.Text = randomServerPort.ToString();
|
||||
}
|
||||
|
||||
//产生随机的Path
|
||||
//更新单方案随机的Path
|
||||
private void ButtonPath_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Random random = new Random();
|
||||
int randomSerialNum = random.Next(0, 4);
|
||||
Guid uuid = Guid.NewGuid();
|
||||
string[] pathArray = uuid.ToString().Split('-');
|
||||
string path = pathArray[randomSerialNum];
|
||||
//Random random = new Random();
|
||||
//int randomSerialNum = random.Next(0, 4);
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
//string[] pathArray = uuid.ToString().Split('-');
|
||||
string path = GenerateRandomPath();
|
||||
TextBoxPath.Text = $"/{path}";
|
||||
//MessageBox.Show(path);
|
||||
}
|
||||
|
||||
//产生随机端口
|
||||
|
||||
//更新多方案共存的Path
|
||||
private void ButtonVlessVmessPath_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
string path = GenerateRandomPath();
|
||||
TextBoxPathVlessWS.Text = $"/{path}";
|
||||
|
||||
path = GenerateRandomPath();
|
||||
TextBoxPathVmessTcp.Text = $"/{path}";
|
||||
|
||||
path = GenerateRandomPath();
|
||||
TextBoxPathVmessWS.Text = $"/{path}";
|
||||
}
|
||||
|
||||
//生成随机端口
|
||||
private int GetRandomPort()
|
||||
{
|
||||
Random random = new Random();
|
||||
return random.Next(10001, 60000);
|
||||
}
|
||||
|
||||
//生成随机UUID
|
||||
private string GenerateRandomUUID()
|
||||
{
|
||||
Guid uuid = Guid.NewGuid();
|
||||
return uuid.ToString();
|
||||
}
|
||||
|
||||
//生成随机Path
|
||||
private string GenerateRandomPath()
|
||||
{
|
||||
Random random = new Random();
|
||||
int randomSerialNum = random.Next(0, 4);
|
||||
//Guid uuid = Guid.NewGuid();
|
||||
string uuid = GenerateRandomUUID();
|
||||
string[] pathArray = uuid.Split('-');
|
||||
string path = pathArray[randomSerialNum];
|
||||
return path;
|
||||
}
|
||||
//域名检测是否为空
|
||||
private bool TestDomainIsEmpty()
|
||||
{
|
||||
@ -1015,6 +1136,12 @@ namespace ProxySU
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//private void ButtonTestChecked_Click(object sender, RoutedEventArgs e)
|
||||
//{
|
||||
// UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
|
||||
|
Binary file not shown.
@ -10,8 +10,8 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"security": "auto"
|
||||
"alterId": 0,
|
||||
"security": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
|
@ -6,12 +6,12 @@
|
||||
"vnext": [
|
||||
{
|
||||
"address": null,
|
||||
"port": null,
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"security": "auto"
|
||||
"alterId": 0,
|
||||
"security": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
|
@ -10,8 +10,8 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"security": "auto"
|
||||
"alterId": 0,
|
||||
"security": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
"security": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
|
@ -10,7 +10,8 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
|
@ -10,8 +10,8 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"security": "auto"
|
||||
"alterId": 0,
|
||||
"security": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
|
@ -10,7 +10,8 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -10,8 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"encryption": "none",
|
||||
"level": 0
|
||||
"encryption": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -10,8 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"encryption": "none",
|
||||
"level": 0
|
||||
"encryption": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -19,10 +19,7 @@
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "xtls",
|
||||
"xtlsSettings": {
|
||||
"serverName": ""
|
||||
}
|
||||
"security": "xtls"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -10,8 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"encryption": "none",
|
||||
"level": 0
|
||||
"encryption": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -20,11 +19,8 @@
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "tls",
|
||||
"tlsSettings": {
|
||||
"serverName": ""
|
||||
},
|
||||
"wsSettings": {
|
||||
"path": ""
|
||||
"path": null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,36 @@
|
||||
{
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": null,
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 0,
|
||||
"security": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "tls",
|
||||
"tcpSettings": {
|
||||
"header": {
|
||||
"type": "http",
|
||||
"request": {
|
||||
"path": [
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 16,
|
||||
"alterId": 0,
|
||||
"security": "auto"
|
||||
}
|
||||
]
|
||||
|
@ -7,7 +7,7 @@
|
||||
"clients": [
|
||||
{
|
||||
"id": null,
|
||||
"alterId": 0
|
||||
"alterId": 64
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -6,7 +6,7 @@
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": "",
|
||||
"id": null,
|
||||
"flow": "xtls-rprx-origin"
|
||||
}
|
||||
],
|
||||
|
@ -0,0 +1,120 @@
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"port": 443,
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": null,
|
||||
"flow": "xtls-rprx-origin"
|
||||
}
|
||||
],
|
||||
"decryption": "none",
|
||||
"fallbacks": [
|
||||
{
|
||||
"dest": null
|
||||
},
|
||||
{
|
||||
"path": "/websocket",
|
||||
"dest": 1234,
|
||||
"xver": 1
|
||||
},
|
||||
{
|
||||
"path": "/vmesstcp",
|
||||
"dest": 2345,
|
||||
"xver": 1
|
||||
},
|
||||
{
|
||||
"path": "/vmessws",
|
||||
"dest": 3456,
|
||||
"xver": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "xtls",
|
||||
"xtlsSettings": {
|
||||
"alpn": [
|
||||
"http/1.1"
|
||||
],
|
||||
"certificates": [
|
||||
{
|
||||
"certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt",
|
||||
"keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"port": 1234,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": null
|
||||
}
|
||||
],
|
||||
"decryption": "none"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "none",
|
||||
"wsSettings": {
|
||||
"acceptProxyProtocol": true,
|
||||
"path": "/websocket"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"port": 2345,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "none",
|
||||
"tcpSettings": {
|
||||
"acceptProxyProtocol": true,
|
||||
"header": {
|
||||
"type": "http",
|
||||
"request": {
|
||||
"path": [
|
||||
"/vmesstcp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"port": 3456,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "none",
|
||||
"wsSettings": {
|
||||
"acceptProxyProtocol": true,
|
||||
"path": "/vmessws"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user