1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2025-02-19 16:03:17 +03:00

增加Trojan over TCP with TLS

This commit is contained in:
ProxySU 2020-11-07 21:16:17 +08:00
parent 5b2cf29e6f
commit 2dcbcd1b16
13 changed files with 302 additions and 137 deletions

View File

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ProxySU"
mc:Ignorable="d"
Title="ProxySU - v2.4.20" Height="675" Width="650">
Title="ProxySU - v2.4.21 Beta1" Height="675" Width="650">
<!--以下样式参考自https://yq.aliyun.com/articles/331878
https://docs.microsoft.co/en-us/dotnet/desktop-wpf/fundamentals/styles-templates-overview-->
<Window.Resources>

View File

@ -1316,7 +1316,7 @@ namespace ProxySU
// SetUpProgressBarProcessing(40);
// return true;
//}
//生成V2Ray服务端配置 44--46
//functionResult = GenerateServerConfiguration(client);
//if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; }
@ -1538,8 +1538,7 @@ namespace ProxySU
//设置VLESS协议的回落端口指向Caddy
if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true
|| String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
{
//设置Caddy随机监听的端口
randomCaddyListenPort = GetRandomPort();
@ -1547,14 +1546,19 @@ namespace ProxySU
//指向Caddy监听的随机端口
jObjectJson["inbounds"][0]["settings"]["fallbacks"][0]["dest"] = randomCaddyListenPort;
}
//
//设置VLESS+VMESS+Trojan+XTLS+TCP+WebSocket+Web协议
if (String.Equals(ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == true)
{
//设置Caddy随机监听的端口
randomCaddyListenPort = GetRandomPort();
//指向Caddy监听的随机端口
jObjectJson["inbounds"][1]["settings"]["fallbacks"][0]["dest"] = randomCaddyListenPort;
//设置其他模式的UUID
jObjectJson["inbounds"][1]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
jObjectJson["inbounds"][1]["settings"]["clients"][0]["password"] = ReceiveConfigurationParameters[2];
jObjectJson["inbounds"][2]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
jObjectJson["inbounds"][3]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
jObjectJson["inbounds"][4]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
//设置Vless回落与分流的Path
jObjectJson["inbounds"][0]["settings"]["fallbacks"][1]["path"] = ReceiveConfigurationParameters[3];
@ -1939,8 +1943,8 @@ namespace ProxySU
{
//复合方案所需要的配置文件
//VLESS over TCP with XTLS模式
string outboundsConfigJsonVlessXtls = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_xtls_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVlessXtls))
string outboundsConfigJsons = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_xtls_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsons))
{
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
@ -1961,8 +1965,8 @@ namespace ProxySU
}
//VLESS over TCP with TLS模式
string outboundsConfigJsonVlessTcpTls = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_tls_caddy_cilent_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVlessTcpTls))
outboundsConfigJsons = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_tls_caddy_cilent_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsons))
{
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
@ -1983,8 +1987,8 @@ namespace ProxySU
}
//VLESS over WS with TLS 模式
string outboundsConfigJsonVlessWsTls = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vless_ws_tls_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVlessWsTls))
outboundsConfigJsons = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vless_ws_tls_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsons))
{
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
@ -2006,8 +2010,8 @@ namespace ProxySU
}
//VMess over TCP with TLS模式
string outboundsConfigJsonVmessTcpTls = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vmess_tcp_tls_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVmessTcpTls))
outboundsConfigJsons = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\vmess_tcp_tls_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsons))
{
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
@ -2029,8 +2033,8 @@ namespace ProxySU
}
//VMess over WS with TLS模式
string outboundsConfigJsonVmessWsTls = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsonVmessWsTls))
outboundsConfigJsons = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsons))
{
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
@ -2051,6 +2055,29 @@ namespace ProxySU
}
}
//Trojan over TCP with TLS模式
outboundsConfigJsons = $"{pwdir}" + @"TemplateConfg\v2ray\client\06_outbounds\trojan_tcp_tls.json";
using (StreamReader readerJson = File.OpenText(outboundsConfigJsons))
{
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
//设置客户端的地址/端口/id
jObjectJson["outbounds"][0]["settings"]["servers"][0]["address"] = ReceiveConfigurationParameters[4];
jObjectJson["outbounds"][0]["settings"]["servers"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
jObjectJson["outbounds"][0]["settings"]["servers"][0]["password"] = ReceiveConfigurationParameters[2];
jObjectJson["outbounds"][0]["streamSettings"]["tlsSettings"]["serverName"] = ReceiveConfigurationParameters[4];
clientJson["outbounds"] = jObjectJson["outbounds"];
if (!Directory.Exists(@"v2ray_config\trojan_tcp_tls_client_config"))//如果不存在就创建file文件夹     
{
Directory.CreateDirectory(@"v2ray_config\trojan_tcp_tls_client_config");//创建该文件夹  
}
using (StreamWriter sw = new StreamWriter(@"v2ray_config\trojan_tcp_tls_client_config\config.json"))
{
sw.Write(clientJson.ToString());
}
}
}
}
SetUpProgressBarProcessing(98);
@ -7282,8 +7309,8 @@ namespace ProxySU
#region
private void Button_Click(object sender, RoutedEventArgs e)
{
string host = ClassModel.DisguiseURLprocessing("www.google.com/accout/");
MessageBox.Show(host);
//string host = ClassModel.DisguiseURLprocessing("www.google.com/accout/");
//MessageBox.Show(host);
//saveShellScriptFileName = GenerateRandomScriptFileName(GenerateRandomStr(10));
//saveShellScriptFileName = "tmp." + saveShellScriptFileName + ".sh";
//MessageBox.Show(saveShellScriptFileName);
@ -7293,9 +7320,9 @@ namespace ProxySU
//string randStr = Convert.ToBase64String(bytes);
//randStr = randStr.Replace("+","").Replace("/", "").Replace("=","");
//MessageBox.Show(randStr);
//proxyType = "TrojanGo";
//ResultClientInformation resultClientInformation = new ResultClientInformation();
//resultClientInformation.ShowDialog();
proxyType = "V2Ray";
ResultClientInformation resultClientInformation = new ResultClientInformation();
resultClientInformation.ShowDialog();
//return;
//string pwdir = AppDomain.CurrentDomain.BaseDirectory;
//MessageBox.Show(pwdir);

View File

@ -51,5 +51,5 @@ using System.Windows;
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.4.20.0")]
[assembly: AssemblyFileVersion("2.4.20.0")]
[assembly: AssemblyVersion("2.4.21.0")]
[assembly: AssemblyFileVersion("2.4.21.0")]

View File

@ -42,32 +42,44 @@
<TextBlock Text="{DynamicResource TextBlockUserUUID}" Grid.Column="0" Grid.Row="2" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxUUID" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="2" MouseDoubleClick="TextBoxUUID_MouseDoubleClick"></TextBox>
<TextBlock x:Name="TextBlockUUIDextra" Text="{DynamicResource TextBlockV2RayAlterId}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<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>
<Grid x:Name="GridNotTrojanParameters" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2" Grid.RowSpan="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock x:Name="TextBlockUUIDextra" Text="{DynamicResource TextBlockV2RayAlterId}" Grid.Column="0" Grid.Row="0" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxUUIDextra" IsReadOnly="False" Grid.Column="1" Grid.Row="0" Margin="2" MouseDoubleClick="TextBoxUUIDextra_MouseDoubleClick"></TextBox>
<TextBlock x:Name="TextBlockEncryption" Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="1" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxEncryption" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="2" MouseDoubleClick="TextBoxEncryption_MouseDoubleClick"></TextBox>
<TextBlock x:Name="TextBlockTransferProtocol" Text="{DynamicResource TextBlockTransferProtocol}" Grid.Column="0" Grid.Row="2" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxTransmission" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="2" MouseDoubleClick="TextBoxTransmission_MouseDoubleClick"></TextBox>
<TextBlock x:Name="TextBlockCamouflageType" Text="{DynamicResource TextBlockCamouflageType}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxCamouflageType" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="2" MouseDoubleClick="TextBoxCamouflageType_MouseDoubleClick"></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>
<TextBlock Text="{DynamicResource TextBlockTransferProtocol}" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxTransmission" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="2" MouseDoubleClick="TextBoxTransmission_MouseDoubleClick"></TextBox>
<TextBlock x:Name="TextBlockQuicEncryption" Text="{DynamicResource TextBlockQuicEncryption}" Visibility="Collapsed" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBlock x:Name="TextBlockHost" Text="Host:" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxHostQuicEncryption" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" MouseDoubleClick="TextBoxHostQuicEncryption_MouseDoubleClick"></TextBox>
<TextBlock Text="{DynamicResource TextBlockCamouflageType}" Grid.Column="0" Grid.Row="6" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxCamouflageType" IsReadOnly="True" Grid.Column="1" Grid.Row="6" Margin="2" MouseDoubleClick="TextBoxCamouflageType_MouseDoubleClick"></TextBox>
<TextBlock x:Name="TextBlockQuicEncryption" Text="{DynamicResource TextBlockQuicEncryption}" Visibility="Collapsed" Grid.Column="0" Grid.Row="7" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<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>
<TextBlock x:Name="TextBlockPath" Text="{DynamicResource TextBlockClientPath}" Visibility="Visible" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBlock x:Name="TextBlockMkcpSeed" Text="{DynamicResource TextBlockClientMkcpSeed}" Visibility="Collapsed" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBlock x:Name="TextBlockQuicKey" Text="{DynamicResource TextBlockClientQuicKey}" Visibility="Collapsed" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxQuicKeyMkcpSeedPath" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="2" MouseDoubleClick="TextBoxQuicKeyMkcpSeedPath_MouseDoubleClick"></TextBox>
<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>
<TextBox x:Name="TextBoxQuicKeyMkcpSeedPath" IsReadOnly="True" Grid.Column="1" Grid.Row="8" Margin="2" MouseDoubleClick="TextBoxQuicKeyMkcpSeedPath_MouseDoubleClick"></TextBox>
<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 x:Name="TextBlocTLSonOrNo" Text="{DynamicResource TextBlockIsOrNotTLS}" Grid.Column="0" Grid.Row="6" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxTLS" IsReadOnly="True" Grid.Column="1" Grid.Row="6" Margin="2" MouseDoubleClick="TextBoxTLS_MouseDoubleClick"></TextBox>
</Grid>
<TextBlock x:Name="TextBlockUUIDextraExplanation" Text="{DynamicResource TextBlockV2RayAlterIdExplain}" TextWrapping="Wrap" Grid.Column="2" Grid.Row="3" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockEncryptionIsAuto}" Grid.Column="2" Grid.Row="4" Visibility="Collapsed" VerticalAlignment="Center"></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>
@ -81,12 +93,14 @@
<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>
<RadioButton x:Name="RadioButtonTrojanTcpTls" Content="Trojan over TCP with TLS" Grid.Column="1" Grid.Row="5" VerticalAlignment="Center" Checked="RadioButtonTrojanTcpTls_Checked" ></RadioButton>
</Grid>
</GroupBox>

View File

@ -56,7 +56,7 @@ namespace ProxySU
TextBoxHostAddress.Text = MainWindow.ReceiveConfigurationParameters[4];
//主机端口
TextBoxPort.Text = MainWindow.ReceiveConfigurationParameters[1];
//用户ID(uuid)
//用户ID(uuid)/Trojan密码
TextBoxUUID.Text = MainWindow.ReceiveConfigurationParameters[2];
//额外ID
TextBoxUUIDextra.Text = "0";
@ -79,6 +79,8 @@ namespace ProxySU
//初始化时,隐藏多方案客户端选择面板
GroupBoxSelectVlessVmessXtlsTcpWs.Visibility = Visibility.Collapsed;
//显示非Trojan的所有参数
GridNotTrojanParameters.Visibility = Visibility.Visible;
if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessVmessXtlsTcpWebSocketWeb") == false)
{
@ -343,6 +345,7 @@ namespace ProxySU
}
else
{
//显示多方案客户端选择面板
GroupBoxSelectVlessVmessXtlsTcpWs.Visibility = Visibility.Visible;
string proxyfolder = CheckDir("v2ray_config");
@ -363,6 +366,7 @@ namespace ProxySU
V2raySetVmessWsTls();
GenerateV2rayVmessWsTlsShareQRcodeAndBase64Url();
GenerateV2rayTrojanShareQRcodeAndBase64Url();
RadioButtonVlessTcpXtls.IsChecked = true;
}
@ -688,6 +692,7 @@ namespace ProxySU
//设置VLESS over TCP with XTLS
private void V2raySetVlessTcpXtls()
{
GridNotTrojanParameters.Visibility = Visibility.Visible;
TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
TextBlockVmessOrVless.Visibility = Visibility.Visible;
//隐藏下面的二维码显示
@ -709,6 +714,7 @@ namespace ProxySU
//设置VLESS over TCP with TLS
private void V2raySetVlessTcpTls()
{
GridNotTrojanParameters.Visibility = Visibility.Visible;
TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
TextBlockVmessOrVless.Visibility = Visibility.Visible;
//隐藏下面的二维码显示
@ -729,6 +735,7 @@ namespace ProxySU
//设置VLESS over WS with TLS
private void V2raySetVlessWsTls()
{
GridNotTrojanParameters.Visibility = Visibility.Visible;
TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
TextBlockVmessOrVless.Visibility = Visibility.Visible;
//隐藏下面的二维码显示
@ -750,6 +757,7 @@ namespace ProxySU
//设置VMess over TCP with TLS
private void V2raySetVmessTcpTls()
{
GridNotTrojanParameters.Visibility = Visibility.Visible;
TextBoxEncryption.Text = "none";
TextBoxTransmission.Text = "tcp";
TextBoxCamouflageType.Text = "http";
@ -769,6 +777,7 @@ namespace ProxySU
//设置VMess over WS with TLS
private void V2raySetVmessWsTls()
{
GridNotTrojanParameters.Visibility = Visibility.Visible;
TextBoxEncryption.Text = "none";
TextBoxTransmission.Text = "ws";
TextBoxCamouflageType.Text = "none";
@ -782,6 +791,15 @@ namespace ProxySU
TextBlockVmessOrVless.Visibility = Visibility.Collapsed;
ShowGroupBoxClientQRandURL();
}
//设置Trojan over TCP with TLS
private void V2raySetTrojanTcpTls()
{
//隐藏所有不是Trojan的参数
GridNotTrojanParameters.Visibility = Visibility.Collapsed;
//显示下面的二维码与分享链接
ShowGroupBoxClientQRandURL();
}
#endregion
#region
@ -842,6 +860,44 @@ namespace ProxySU
}
//显示加密方式
private void ShowEncryption()
{
TextBlockEncryption.Visibility = Visibility.Visible;
TextBoxEncryption.Visibility = Visibility.Visible;
}
//隐藏加密方式
private void HideEncryption()
{
TextBlockEncryption.Visibility = Visibility.Collapsed;
TextBoxEncryption.Visibility = Visibility.Collapsed;
}
//显示传输协议
private void ShowTransferProtocol()
{
TextBlockTransferProtocol.Visibility = Visibility.Visible;
TextBoxTransmission.Visibility = Visibility.Visible;
}
//隐藏传输协议
private void HideTransferProtocol()
{
TextBlockTransferProtocol.Visibility = Visibility.Collapsed;
TextBoxTransmission.Visibility = Visibility.Collapsed;
}
//显示伪装类型
private void ShowTextBlockCamouflageType()
{
TextBlockCamouflageType.Visibility = Visibility.Visible;
TextBoxCamouflageType.Visibility = Visibility.Visible;
}
//隐藏伪装类型
private void HideTextBlockCamouflageType()
{
TextBlockCamouflageType.Visibility = Visibility.Collapsed;
TextBoxCamouflageType.Visibility = Visibility.Collapsed;
}
//显示二维码与链接分享
private void ShowGroupBoxClientQRandURL()
{
@ -878,6 +934,11 @@ namespace ProxySU
{
V2raySetVmessWsTls();
}
private void RadioButtonTrojanTcpTls_Checked(object sender, RoutedEventArgs e)
{
V2raySetTrojanTcpTls();
}
#endregion
#region
@ -1730,48 +1791,6 @@ namespace ProxySU
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\readme.txt"))
{
ReadmeTxtWriteGenerate(sw);
//sw.WriteLine("config.json");
////****** "此文件为v2ray官方程序所使用的客户端配置文件配置为全局模式socks5地址127.0.0.1:1080http代理地址127.0.0.1:1081" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine01").ToString());
////****** "v2ray官方网站https://www.v2ray.com/" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine02").ToString());
////****** "v2ray官方程序下载地址https://github.com/v2ray/v2ray-core/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine03").ToString());
////****** "下载相应版本Windows选择v2ray-windows-64.zip或者v2ray-windows-32.zip解压后提取v2ctl.exe和v2ray.exe。与config.json放在同一目录运行v2ray.exe即可。" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine04").ToString());
//sw.WriteLine("-----------------------------------------");
//sw.WriteLine("QR.bmp");
////******"此文件为v2rayN、Qv2ray、v2rayNG(Android)、Shadowrocket(ios)扫码导入节点" * *****
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine05").ToString());
////****** "v2rayN下载网址https://github.com/2dust/v2rayN/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine06").ToString());
////****** "Qv2rayhttps://github.com/Qv2ray/Qv2ray/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine07").ToString());
////****** "v2rayNG(Android)下载网址https://github.com/2dust/v2rayNG/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine08").ToString());
////****** "v2rayNG(Android)在Google Play下载网址https://play.google.com/store/apps/details?id=com.v2ray.ang" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine09").ToString());
////****** "Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine10").ToString());
//sw.WriteLine("-----------------------------------------");
//sw.WriteLine("url.txt");
////******"此文件为v2rayN、Qv2ray、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址" * *****
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine11").ToString());
////写入通用配置参数--
//TxtWriteGeneralParameters(sw);
}
}
@ -1858,50 +1877,100 @@ namespace ProxySU
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\readme.txt"))
{
ReadmeTxtWriteGenerate(sw);
//sw.WriteLine("config.json");
////****** "此文件为v2ray官方程序所使用的客户端配置文件配置为全局模式socks5地址127.0.0.1:1080http代理地址127.0.0.1:1081" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine01").ToString());
}
}
////****** "v2ray官方网站https://www.v2ray.com/" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine02").ToString());
//生成Trojan over TCP with TLS的配置保存
private void GenerateV2rayTrojanShareQRcodeAndBase64Url()
{
//创建保存目录
string plainSavePath = @"trojan_tcp_tls_client_config";
string configSavePath = CheckDir($"{configDomainSavePath}\\{plainSavePath}");
////****** "v2ray官方程序下载地址https://github.com/v2ray/v2ray-core/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine03").ToString());
string trojanUrl = $"trojan://{TextBoxUUID.Text}@{TextBoxHostAddress.Text}:{TextBoxPort.Text}#{TextBoxHostAddress.Text}";
////****** "下载相应版本Windows选择v2ray-windows-64.zip或者v2ray-windows-32.zip解压后提取v2ctl.exe和v2ray.exe。与config.json放在同一目录运行v2ray.exe即可。" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine04").ToString());
//sw.WriteLine("-----------------------------------------");
//sw.WriteLine("QR.bmp");
////****** "此文件为v2rayN、Qv2ray、v2rayNG(Android)、Shadowrocket(ios)扫码导入节点" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine05").ToString());
////****** "v2rayN下载网址https://github.com/2dust/v2rayN/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine06").ToString());
////****** "Qv2rayhttps://github.com/Qv2ray/Qv2ray/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine07").ToString());
////****** "v2rayNG(Android)下载网址https://github.com/2dust/v2rayNG/releases" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine08").ToString());
////****** "v2rayNG(Android)在Google Play下载网址https://play.google.com/store/apps/details?id=com.v2ray.ang" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine09").ToString());
////****** "Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine10").ToString());
//sw.WriteLine("-----------------------------------------");
//sw.WriteLine("url.txt");
////****** "此文件为v2rayN、Qv2ray、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine11").ToString());
////写入通用配置参数--
//TxtWriteGeneralParameters(sw);
TextBoxURL.Text = trojanUrl;
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\url.txt"))
{
sw.WriteLine(trojanUrl);
}
ImageShareQRcode.Source = CreateQRCode(trojanUrl, $"{configSavePath}\\QR.bmp");
//移动官方程序配置文件到相应目录
if (File.Exists($"v2ray_config\\{plainSavePath}\\config.json"))
{
File.Move($"v2ray_config\\{plainSavePath}\\config.json", $"{configSavePath}\\config.json");
Directory.Delete($"v2ray_config\\{plainSavePath}");
}
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\readme.txt"))
{
//ReadmeTxtWriteGenerate(sw);
sw.WriteLine("config.json");
//****** "此文件为v2ray官方程序所使用的客户端配置文件配置为全局模式socks5地址127.0.0.1:1080http代理地址127.0.0.1:1081" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine01").ToString());
//****** "v2ray官方网站https://www.v2ray.com/" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine02").ToString());
//****** "v2ray官方程序下载地址https://github.com/v2ray/v2ray-core/releases" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine03").ToString());
//****** "下载相应版本Windows选择v2ray-windows-64.zip或者v2ray-windows-32.zip解压后提取v2ctl.exe和v2ray.exe。与config.json放在同一目录运行v2ray.exe即可。" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine04").ToString());
sw.WriteLine("-----------------------------------------");
sw.WriteLine("QR.bmp");
//****** "此文件为v2rayN(windows)、Qv2ray(windows)、v2rayNG(Android)、Shadowrocket(ios)扫码导入节点" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine05").ToString());
//****** "v2rayN下载网址https://github.com/2dust/v2rayN/releases" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine06").ToString());
//****** "Qv2ray下载网址https://github.com/Qv2ray/Qv2ray/releases" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine07").ToString());
//****** "v2rayNG(Android)下载网址https://github.com/2dust/v2rayNG/releases" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine08").ToString());
//****** "v2rayNG(Android)在Google Play下载网址https://play.google.com/store/apps/details?id=com.v2ray.ang" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine09").ToString());
//****** "Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine10").ToString());
sw.WriteLine("-----------------------------------------");
sw.WriteLine("url.txt");
//****** "此文件为v2rayN、Qv2ray、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine11").ToString());
sw.WriteLine("-----------------------------------------\n");
string strApplicat = "";
string strParam = "";
int strLenth = 20;
//****** "服务器通用连接配置参数:" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine12").ToString());
sw.WriteLine("");
strApplicat = "TextBlockServerAddress";
strParam = TextBoxHostAddress.Text;
sw.WriteLine(AlignmentStrFunc(Application.Current.FindResource($"{strApplicat}").ToString(), strLenth) + strParam);
strApplicat = "TextBlockServerPort";
strParam = TextBoxPort.Text;
sw.WriteLine(AlignmentStrFunc(Application.Current.FindResource($"{strApplicat}").ToString(), strLenth) + strParam);
strApplicat = "TextBlockUserUUID";
strParam = TextBoxUUID.Text;
sw.WriteLine(AlignmentStrFunc(Application.Current.FindResource($"{strApplicat}").ToString(), strLenth) + strParam);
}
}
//写入VMESS的readme.txt文件
@ -3155,8 +3224,6 @@ namespace ProxySU
return spaceString + strTemp;
}
}

View File

@ -173,6 +173,7 @@
<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="TextBlockTrojanPassword">Trojan password is the same as V2ray UUID.</sys:String>
<sys:String x:Key="TextBlockV2RayMaskSites">Mask a website:</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesTag">Set this option to increase proxy concealment (can be empty)</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesToolTip">Enter only the domain name, excluding "http" and "/" etc.</sys:String>
@ -225,7 +226,7 @@
<sys:String x:Key="GroupBoxHeaderClientParameter">Client configuration parameters</sys:String>
<sys:String x:Key="TextBlockServerAddress">Server address:</sys:String>
<sys:String x:Key="TextBlockServerPort">Port:</sys:String>
<sys:String x:Key="TextBlockUserUUID">User ID(uuid):</sys:String>
<sys:String x:Key="TextBlockUserUUID">User ID(uuid)/Password:</sys:String>
<sys:String x:Key="ButtonCopyV2RayUUIDtoClip">Copy</sys:String>
<sys:String x:Key="MessageBoxShow_V2RayUUIDcopyedToClip">Copied to the clipboard!</sys:String>
<sys:String x:Key="MessageBoxShow_V2RayEmptyToClip">Empty content!</sys:String>

View File

@ -176,6 +176,7 @@
<sys:String x:Key="TextBlockQuicEncryption">QUIC加密方式:</sys:String>
<sys:String x:Key="TextBlockV2RayDomain">域名:</sys:String>
<sys:String x:Key="TextBlockTrojanPassword">Trojan密码与V2ray的UUID相同。</sys:String>
<sys:String x:Key="TextBlockV2RayMaskSites">伪装网站:</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesTag">设置此项可增加代理的隐蔽(可为空)</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesToolTip">仅仅输入域名,不包括"http"及"/"等</sys:String>
@ -228,7 +229,7 @@
<sys:String x:Key="GroupBoxHeaderClientParameter">客户端配置参数</sys:String>
<sys:String x:Key="TextBlockServerAddress">服务器地址(address):</sys:String>
<sys:String x:Key="TextBlockServerPort">端口(port):</sys:String>
<sys:String x:Key="TextBlockUserUUID">用户ID(uuid):</sys:String>
<sys:String x:Key="TextBlockUserUUID">用户ID(uuid)/密码:</sys:String>
<sys:String x:Key="ButtonCopyV2RayUUIDtoClip">复制</sys:String>
<sys:String x:Key="MessageBoxShow_V2RayUUIDcopyedToClip">已复制到剪贴板中!</sys:String>
<sys:String x:Key="MessageBoxShow_V2RayEmptyToClip">空内容!</sys:String>

View File

@ -173,6 +173,7 @@
<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="TextBlockTrojanPassword">Trojan密碼與V2ray的UUID相同。</sys:String>
<sys:String x:Key="TextBlockV2RayMaskSites">偽裝網站:</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesTag">設置此項可增加代理的隱蔽(可為空)</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesToolTip">僅僅輸入域名,不包括"http"及"/"等</sys:String>
@ -225,7 +226,7 @@
<sys:String x:Key="GroupBoxHeaderClientParameter">客戶端配置參數</sys:String>
<sys:String x:Key="TextBlockServerAddress">服務器地址(address):</sys:String>
<sys:String x:Key="TextBlockServerPort">端口(port):</sys:String>
<sys:String x:Key="TextBlockUserUUID">用戶ID(uuid):</sys:String>
<sys:String x:Key="TextBlockUserUUID">用戶ID(uuid)/密碼:</sys:String>
<sys:String x:Key="ButtonCopyV2RayUUIDtoClip">複製</sys:String>
<sys:String x:Key="MessageBoxShow_V2RayUUIDcopyedToClip">已復製到剪貼板中!</sys:String>
<sys:String x:Key="MessageBoxShow_V2RayEmptyToClip">空內容!</sys:String>

View File

@ -91,15 +91,18 @@
<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="4. VMess over TCP with TLS (Not Recommended)" 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>
<TextBlock Text="6. Trojan over TCP with TLS" Grid.Column="1" Grid.Row="6" 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>
<RadioButton x:Name="RadioButtonVlessVmessXtlsTcpWebSocketHot" Content="VLESS+VMESS+Trojan+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>
@ -372,6 +375,7 @@
<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>
<TextBlock x:Name="TextBlockTrojanPassword" Text="{DynamicResource TextBlockTrojanPassword}" Grid.Column="5" Grid.Row="4" Grid.ColumnSpan="2" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<TextBlock x:Name="TextBlockMaskSites" Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center" ></TextBlock>
<TextBox x:Name="TextBoxMaskSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" ToolTip="{DynamicResource TextBoxV2RayMaskSitesToolTip}" Grid.Column="1" Grid.Row="5" Grid.ColumnSpan="3" Margin="3" ></TextBox>

View File

@ -203,7 +203,7 @@ namespace ProxySU
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
//VLESS+VMESS+XTLS+TCP+WebSocket+Web模式被选中
//VLESS+VMESS+Trojan+XTLS+TCP+WebSocket+Web模式被选中
else if (RadioButtonVlessVmessXtlsTcpWebSocketHot.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
@ -967,6 +967,7 @@ namespace ProxySU
TextBlockPathVmessWs.Visibility = Visibility.Collapsed;
TextBoxPathVmessWS.Visibility = Visibility.Collapsed;
ButtonVlessVmessPath.Visibility = Visibility.Collapsed;
TextBlockTrojanPassword.Visibility = Visibility.Collapsed;
}
//显示VLESS VMESS复合方案路径
@ -986,6 +987,7 @@ namespace ProxySU
TextBoxPathVmessWS.Text = "/vmessws";
ButtonVlessVmessPath.Visibility = Visibility.Visible;
TextBlockTrojanPassword.Visibility = Visibility.Visible;
}
//隐藏域名相关项
private void HideDomain()

Binary file not shown.

View File

@ -0,0 +1,23 @@
{
"outbounds": [
{
"protocol": "trojan",
"settings": {
"servers": [
{
"address": null,
"port": 443,
"password": null
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"serverName": null
}
}
}
]
}

View File

@ -13,7 +13,8 @@
"decryption": "none",
"fallbacks": [
{
"dest": null
"dest": 1310,
"xver": 1
},
{
"path": "/websocket",
@ -48,6 +49,30 @@
}
}
},
{
"port": 1310,
"listen": "127.0.0.1",
"protocol": "trojan",
"settings": {
"clients": [
{
"password": null
}
],
"fallbacks": [
{
"dest": null
}
]
},
"streamSettings": {
"network": "tcp",
"security": "none",
"tcpSettings": {
"acceptProxyProtocol": true
}
}
},
{
"port": 1234,
"listen": "127.0.0.1",