mirror of
https://github.com/proxysu/ProxySU.git
synced 2025-04-01 21:06:18 +03:00
添加VLESS相关模式,优化代码结构
This commit is contained in:
parent
b1a7c2149b
commit
7e187bbdd4
20 changed files with 1462 additions and 728 deletions
|
@ -5,7 +5,7 @@
|
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ProxySU"
|
||||
mc:Ignorable="d"
|
||||
Title="ProxySU - v2.2.3" Height="675" Width="620">
|
||||
Title="ProxySU - v2.3.0" 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>
|
||||
|
@ -204,19 +204,34 @@
|
|||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockCurrentlySelectedPlan}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
|
||||
<TextBlock x:Name="TextBlockV2RayShowPort" Text="{DynamicResource TextBlockV2RayServerPort}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockV2RayShowUUID" Text="UUID:" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockV2RayShowPathSeedKey" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockV2RayShowCurrentlySelectedPlanDomain" Text="{DynamicResource TextBlockV2RayDomain}" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite" Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="5" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlan" Text="{DynamicResource TextBlockCurrentlySelectedPlanNo}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanPort" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanUUID" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanPathSeedKey" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanDomain" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanFakeWebsite" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
|
||||
|
||||
<Grid x:Name="GridV2rayCurrentlyPlan" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Grid.RowSpan="5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.5*"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock x:Name="TextBlockV2RayShowPort" Text="{DynamicResource TextBlockV2RayServerPort}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanPort" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
|
||||
<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="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>
|
||||
|
||||
<TextBlock x:Name="TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite" Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockCurrentlySelectedPlanFakeWebsite" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Button x:Name="Button_Login" Content="{DynamicResource ButtonV2RayOneKeyInstall}" Margin="10" Grid.Column="0" Grid.Row="2" Click="Button_Login_Click"></Button>
|
||||
|
@ -574,6 +589,7 @@
|
|||
<Button x:Name="ButtonClearOccupiedPorts" Content="{DynamicResource ButtonClearOccupiedPorts}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonClearOccupiedPorts_Click"></Button>
|
||||
<Button x:Name="ButtonTestAndEnableBBR" Content="{DynamicResource ButtonTestAndEnableBBR}" Grid.Column="2" Grid.Row="0" Margin="5" Click="ButtonTestAndEnableBBR_Click"></Button>
|
||||
<Button x:Name="ButtonRemoveAllSoft" Content="{DynamicResource ButtonRemoveAllSoft}" Grid.Column="3" Grid.Row="0" Margin="5" Click="ButtonRemoveAllSoft_Click"></Button>
|
||||
<Button Content="test" Grid.Column="0" Grid.Row="1" Margin="10" Click="Button_Click"></Button>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
|
|
|
@ -45,10 +45,10 @@ namespace ProxySU
|
|||
//ReceiveConfigurationParameters[0]----模板类型
|
||||
//ReceiveConfigurationParameters[1]----服务端口
|
||||
//ReceiveConfigurationParameters[2]----V2Ray uuid/(naive/Trojan-go/Trojan/SSR/SS)' Password
|
||||
//ReceiveConfigurationParameters[3]----Websocket'Path/http2'Path/naive'user
|
||||
//ReceiveConfigurationParameters[3]----QUIC加密方式/SSR 加密方法/naive'user
|
||||
//ReceiveConfigurationParameters[4]----Domain
|
||||
//ReceiveConfigurationParameters[5]----伪装类型/插件名称
|
||||
//ReceiveConfigurationParameters[6]----QUIC密钥/mKCP Seed/SS 加密方式
|
||||
//ReceiveConfigurationParameters[6]----Websocket'Path/http2'Path/QUIC密钥/mKCP Seed/SS 加密方式
|
||||
//ReceiveConfigurationParameters[7]----伪装网站
|
||||
//ReceiveConfigurationParameters[8]----方案名称
|
||||
//ReceiveConfigurationParameters[9]----插件参数选项
|
||||
|
@ -113,6 +113,9 @@ namespace ProxySU
|
|||
//初始化SSR的密码
|
||||
TextBoxSSRPassword.Text = RandomUUID();
|
||||
|
||||
//初始化所选方案面板为不显示
|
||||
GridV2rayCurrentlyPlan.Visibility = Visibility.Hidden;
|
||||
|
||||
//初始化三合一的所有内容
|
||||
//TextBoxV2rayUUID3in1.Text = RandomUUID();
|
||||
//TextBoxV2rayPath3in1.Text = "/ray";
|
||||
|
@ -698,152 +701,202 @@ namespace ProxySU
|
|||
//显示"未选择方案!"
|
||||
TextBlockCurrentlySelectedPlan.Text = Application.Current.FindResource("TextBlockCurrentlySelectedPlanNo").ToString();
|
||||
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Hidden;
|
||||
GridV2rayCurrentlyPlan.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
GridV2rayCurrentlyPlan.Visibility = Visibility.Visible;
|
||||
}
|
||||
TextBlockCurrentlySelectedPlan.Text = ReceiveConfigurationParameters[8]; //所选方案名称
|
||||
TextBlockCurrentlySelectedPlanPort.Text = ReceiveConfigurationParameters[1]; //服务器端口
|
||||
TextBlockCurrentlySelectedPlanUUID.Text = ReceiveConfigurationParameters[2]; //UUID
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Text = ReceiveConfigurationParameters[7]; //伪装网站
|
||||
|
||||
if (String.Equals(ReceiveConfigurationParameters[0],"TCP")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "webSocket"))
|
||||
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)
|
||||
{
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible;
|
||||
//隐藏Path/mKCP Seed/Quic Key
|
||||
HideV2RayPathSeedKey();
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible;
|
||||
//隐藏域名/Quic加密方式
|
||||
HideV2RayDomainQuicEncrypt();
|
||||
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
//隐藏伪装网站
|
||||
HideV2RayMaskSites();
|
||||
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") || String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true)
|
||||
{
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible;
|
||||
//隐藏Path/mKCP Seed/Quic Key
|
||||
HideV2RayPathSeedKey();
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible;
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
//隐藏伪装网站
|
||||
HideV2RayMaskSites();
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "Http2")
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
{
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible;
|
||||
//隐藏Path/mKCP Seed/Quic Key
|
||||
HideV2RayPathSeedKey();
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible;
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
|
||||
//显示伪装网站(暂时不显示)
|
||||
ShowV2RayMaskSites();
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "Http2") == true)
|
||||
{
|
||||
//显示Path
|
||||
ShowV2RayPathSeedKey();
|
||||
TextBlockV2RayShowPathSeedKey.Text = "Path:";
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[3]; //mKCP Seed\Quic Key\Path
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path
|
||||
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
//显示伪装网站(暂时不显示)
|
||||
HideV2RayMaskSites();
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible;
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible;
|
||||
|
||||
//显示Path
|
||||
ShowV2RayPathSeedKey();
|
||||
TextBlockV2RayShowPathSeedKey.Text = "Path:";
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[3]; //mKCP Seed\Quic Key\Path
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path
|
||||
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible;
|
||||
//显示域名
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
//显示伪装网站(暂时不显示)
|
||||
ShowV2RayMaskSites();
|
||||
}
|
||||
else if (ReceiveConfigurationParameters[0].Contains("mKCP"))
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true)
|
||||
{
|
||||
//显示Path
|
||||
ShowV2RayPathSeedKey();
|
||||
TextBlockV2RayShowPathSeedKey.Text = "Path:";
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path
|
||||
|
||||
//隐藏域名/Quic加密方式
|
||||
HideV2RayDomainQuicEncrypt();
|
||||
|
||||
//隐藏伪装网站
|
||||
HideV2RayMaskSites();
|
||||
}
|
||||
else if (ReceiveConfigurationParameters[0].Contains("mKCP") == true)
|
||||
{
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible;
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible;
|
||||
|
||||
//显示mKCP Seed
|
||||
ShowV2RayPathSeedKey();
|
||||
TextBlockV2RayShowPathSeedKey.Text = "mKCP Seed:";
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path
|
||||
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible;
|
||||
//隐藏域名/Quic加密方式
|
||||
HideV2RayDomainQuicEncrypt();
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
//隐藏伪装网站
|
||||
HideV2RayMaskSites();
|
||||
}
|
||||
else if (ReceiveConfigurationParameters[0].Contains("Quic"))
|
||||
else if (ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible;
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible;
|
||||
|
||||
//显示QUIC Key
|
||||
ShowV2RayPathSeedKey();
|
||||
TextBlockV2RayShowPathSeedKey.Text = "QUIC Key:";
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path
|
||||
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible;
|
||||
//显示Quic加密方式
|
||||
ShowV2RayDomainQuicEncrypt();
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockQuicEncryption").ToString();
|
||||
TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[3]; //Quic加密方式
|
||||
if (String.Equals(TextBlockCurrentlySelectedPlanDomain.Text,"none")==true)
|
||||
{
|
||||
HideV2RayPathSeedKey();
|
||||
}
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
//隐藏伪装网站
|
||||
HideV2RayMaskSites();
|
||||
}
|
||||
}
|
||||
|
||||
#region 当前方案界面控制
|
||||
//显示端口与UUID
|
||||
private void ShowV2RayCurrentPortUUID()
|
||||
{
|
||||
TextBlockV2RayShowPort.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible;
|
||||
|
||||
TextBlockV2RayShowUUID.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
//显示Path/mKCP Seed/Quic Key
|
||||
private void ShowV2RayPathSeedKey()
|
||||
{
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
//隐藏Path/mKCP Seed/Quic Key
|
||||
private void HideV2RayPathSeedKey()
|
||||
{
|
||||
TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden;
|
||||
}
|
||||
|
||||
//显示域名/Quic加密方式
|
||||
private void ShowV2RayDomainQuicEncrypt()
|
||||
{
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
//隐藏域名/Quic加密方式
|
||||
private void HideV2RayDomainQuicEncrypt()
|
||||
{
|
||||
TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden;
|
||||
}
|
||||
//显示伪装网站(暂时不显示)
|
||||
private void ShowV2RayMaskSites()
|
||||
{
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
}
|
||||
|
||||
//隐藏伪装网站
|
||||
private void HideV2RayMaskSites()
|
||||
{
|
||||
TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden;
|
||||
}
|
||||
#endregion
|
||||
|
||||
//传送V2Ray模板参数,启动V2Ray安装进程
|
||||
private void Button_Login_Click(object sender, RoutedEventArgs e)
|
||||
|
||||
|
@ -1700,89 +1753,73 @@ namespace ProxySU
|
|||
if (String.Equals(ReceiveConfigurationParameters[0], "TCP"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_http_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_http_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_http_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_TLS_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_TLS_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcpTLSselfSigned_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcpTLSselfSigned_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_tcp_xtls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_vless_tls_caddy_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_vless_tls_caddy_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_vless_tls_caddy_cilent_config.json";
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_tcp_tls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_ws_tls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_http2_tls_server_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\webSocket_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\webSocket_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\webSocket_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocket_TLS_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLS_selfSigned_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLSWeb_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "Http2"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\http2_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\http2_server_config.json";
|
||||
//clientConfig = @"TemplateConfg\http2_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\Http2Web_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\Http2Web_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\Http2Web_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\Http2selfSigned_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\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"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\mkcp_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\mkcp_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\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"))
|
||||
{
|
||||
inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\quic_server_config.json";
|
||||
//serverConfig = "TemplateConfg\\quic_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\quic_client_config.json";
|
||||
}
|
||||
|
||||
//读取"inbounds"
|
||||
|
@ -1802,21 +1839,27 @@ namespace ProxySU
|
|||
|
||||
//设置uuid
|
||||
jObjectJson["inbounds"][0]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
//除WebSocketTLSWeb/http2Web/VlessTcpTlsWeb模式外设置监听端口
|
||||
|
||||
//除WebSocketTLSWeb/http2Web/VLESS+WebSocket+TLS+Web/VLESS+http2+TLS+Web模式外设置监听端口
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == false
|
||||
&& String.Equals(ReceiveConfigurationParameters[0], "http2Web") == false
|
||||
&& String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == false)
|
||||
&& String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == false
|
||||
&& String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == false)
|
||||
{
|
||||
jObjectJson["inbounds"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]);
|
||||
}
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true)
|
||||
|
||||
//设置VLESS协议的回落端口,指向Caddy
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true)
|
||||
{
|
||||
//设置Caddy随机监听的端口,用于Trojan-go,Trojan,V2Ray vless TLS
|
||||
//Random random = new Random();
|
||||
//设置Caddy随机监听的端口
|
||||
randomCaddyListenPort = GetRandomPort();
|
||||
|
||||
//指向Caddy监听的随机端口
|
||||
jObjectJson["inbounds"][0]["settings"]["fallbacks"][0]["dest"] = randomCaddyListenPort;
|
||||
}
|
||||
|
||||
//TLS自签证书/WebSocketTLS(自签证书)/http2自签证书模式下,使用v2ctl 生成自签证书
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true
|
||||
|
@ -1826,26 +1869,32 @@ namespace ProxySU
|
|||
JObject selfSignedCaJObject = JObject.Parse(selfSignedCa);
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["tlsSettings"]["certificates"][0] = selfSignedCaJObject;
|
||||
}
|
||||
//如果是WebSocketTLSWeb/WebSocketTLS/WebSocketTLS(自签证书)模式,则设置路径
|
||||
|
||||
//如果是WebSocketTLSWeb/WebSocketTLS/WebSocketTLS(自签证书)/VLESS+WebSocket+TLS+Web模式,则设置路径
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true)
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb")==true)
|
||||
{
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3];
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
//如果是Http2/http2Web/http2自签模式下,设置路径
|
||||
|
||||
//如果是Http2/http2Web/http2自签/VLESS+http2+TLS+Web模式下,设置路径
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true)
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3];
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
//如果是Http2Web模式下,设置host
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true)
|
||||
|
||||
//如果是Http2+Web/VLESS+http2+TLS+Web模式下,设置host
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
// jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3];
|
||||
jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4];
|
||||
}
|
||||
|
||||
//mkcp模式下,设置伪装类型
|
||||
if (ReceiveConfigurationParameters[0].Contains("mKCP") == true)
|
||||
{
|
||||
|
@ -1855,12 +1904,20 @@ namespace ProxySU
|
|||
jObjectJson["inbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
}
|
||||
|
||||
//quic模式下设置伪装类型及密钥
|
||||
if (ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
jObjectJson["inbounds"][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["inbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
|
||||
serverJson["inbounds"] = jObjectJson["inbounds"];
|
||||
}
|
||||
|
||||
|
@ -1874,8 +1931,12 @@ namespace ProxySU
|
|||
|
||||
File.Delete(@"config.json");
|
||||
|
||||
//如果使用http2/WebSocketTLS/tcpTLS/VlessTcpTlsWeb模式,先要安装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], "VlessTcpTlsWeb") == true)
|
||||
//如果使用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)
|
||||
{
|
||||
//****** "正在安装acme.sh......" ******22
|
||||
SetUpProgressBarProcessing(55);
|
||||
|
@ -2030,10 +2091,13 @@ namespace ProxySU
|
|||
|
||||
}
|
||||
|
||||
//如果是WebSocket+TLS+Web/http2Web/vlessTcpTlsWeb模式,需要安装Caddy
|
||||
if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") ==true
|
||||
|| ReceiveConfigurationParameters[0].Contains("http2Web") == true
|
||||
|| ReceiveConfigurationParameters[0].Contains("VlessTcpTlsWeb") == true)
|
||||
//如果是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)
|
||||
{
|
||||
//****** "安装Caddy......" ******28
|
||||
SetUpProgressBarProcessing(70);
|
||||
|
@ -2155,7 +2219,8 @@ namespace ProxySU
|
|||
TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果
|
||||
|
||||
//在Caddy 2还未推出2.2.0的正式版之前,先用测试版替代
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "http2Web"))
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true)
|
||||
{
|
||||
//****** "正在为Http2Web模式升级Caddy v2.2.0测试版!" ******30
|
||||
SetUpProgressBarProcessing(77);
|
||||
|
@ -2211,18 +2276,22 @@ namespace ProxySU
|
|||
currentShellCommandResult = client.RunCommand(sshShellCommand).Result;
|
||||
TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果
|
||||
|
||||
if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") == true)
|
||||
{
|
||||
serverConfig = @"TemplateConfg\v2ray\caddy\WebSocketTLSWeb.caddyfile";
|
||||
}
|
||||
else if (ReceiveConfigurationParameters[0].Contains("http2Web") == true)
|
||||
{
|
||||
serverConfig = @"TemplateConfg\v2ray\caddy\Http2Web.caddyfile";
|
||||
}
|
||||
else if(ReceiveConfigurationParameters[0].Contains("VlessTcpTlsWeb")==true)
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true)
|
||||
{
|
||||
serverConfig = @"TemplateConfg\v2ray\caddy\vlessTcpTlsWeb.caddyfile";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true)
|
||||
{
|
||||
serverConfig = @"TemplateConfg\v2ray\caddy\WebSocketTLSWeb.caddyfile";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true
|
||||
|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true)
|
||||
{
|
||||
serverConfig = @"TemplateConfg\v2ray\caddy\Http2Web.caddyfile";
|
||||
}
|
||||
|
||||
string upLoadPath = "/etc/caddy/Caddyfile";
|
||||
client.RunCommand("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak");
|
||||
UploadConfig(connectionInfo, serverConfig, upLoadPath);
|
||||
|
@ -2244,7 +2313,7 @@ namespace ProxySU
|
|||
TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果
|
||||
|
||||
//设置Path
|
||||
sshShellCommand = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[3]}/' {upLoadPath}";
|
||||
sshShellCommand = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[6]}/' {upLoadPath}";
|
||||
TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令
|
||||
currentShellCommandResult = client.RunCommand(sshShellCommand).Result;
|
||||
TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果
|
||||
|
@ -2616,117 +2685,120 @@ namespace ProxySU
|
|||
clientJson["reverse"] = jObjectJson["reverse"];
|
||||
}
|
||||
|
||||
//根据选择的不同模式,选择相应的配置文件
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "TCP"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_http_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_http_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_http_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_TLS_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_TLS_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcpTLSselfSigned_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\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\tcp_vless_tls_caddy_cilent_config.json";
|
||||
//serverConfig = "TemplateConfg\\tcp_vless_tls_caddy_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\tcp_vless_tls_caddy_cilent_config.json";
|
||||
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";
|
||||
//serverConfig = "TemplateConfg\\webSocket_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\webSocket_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocket_TLS_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLS_selfSigned_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "Http2"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\http2_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\http2_server_config.json";
|
||||
//clientConfig = @"TemplateConfg\http2_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2Web_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\Http2Web_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\Http2Web_client_config.json";
|
||||
}
|
||||
else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned"))
|
||||
{
|
||||
outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2selfSigned_client_config.json";
|
||||
//serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\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";
|
||||
//serverConfig = "TemplateConfg\\mkcp_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\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";
|
||||
//serverConfig = "TemplateConfg\\quic_server_config.json";
|
||||
//clientConfig = "TemplateConfg\\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)
|
||||
|
||||
//设置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[3];
|
||||
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)
|
||||
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[3];
|
||||
jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[6];
|
||||
}
|
||||
//设置http2web模式下的host
|
||||
if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true)
|
||||
|
||||
//设置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];
|
||||
|
@ -2735,9 +2807,16 @@ namespace ProxySU
|
|||
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];
|
||||
}
|
||||
|
||||
|
@ -12153,12 +12232,19 @@ namespace ProxySU
|
|||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
// #region 三合一安装过程
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//显示服务端连接参数
|
||||
proxyType = "V2Ray";
|
||||
ResultClientInformation resultClientInformation = new ResultClientInformation();
|
||||
resultClientInformation.ShowDialog();
|
||||
}
|
||||
|
||||
#region 三合一安装过程
|
||||
|
||||
// //生成三合一的v2ray路径
|
||||
// private void ButtonV2rayPath3in1_Click(object sender, RoutedEventArgs e)
|
||||
|
@ -13141,7 +13227,7 @@ namespace ProxySU
|
|||
// }
|
||||
|
||||
|
||||
// #endregion
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -51,5 +51,5 @@ using System.Windows;
|
|||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.2.3.0")]
|
||||
[assembly: AssemblyFileVersion("2.2.3.0")]
|
||||
[assembly: AssemblyVersion("2.3.0.0")]
|
||||
[assembly: AssemblyFileVersion("2.3.0.0")]
|
||||
|
|
|
@ -13,18 +13,18 @@
|
|||
<RowDefinition Height="0.12*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<!-- V2Ray客户端配置参数 -->
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxV2rayClient" Visibility="Collapsed" Grid.Row="0">
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxV2rayClient" Visibility="Visible" Grid.Row="0">
|
||||
<Grid >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.6*"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.7*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition Height="1.2*"></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
|
@ -34,39 +34,48 @@
|
|||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="0" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxHostAddress" IsReadOnly="True" Grid.Column="1" Grid.Row="0" Margin="2"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="0"></TextBlock>
|
||||
<TextBox x:Name="TextBoxHostAddress" IsReadOnly="True" Grid.Column="1" Grid.Row="0" Margin="2" MouseDoubleClick="TextBoxHostAddress_MouseDoubleClick"></TextBox>
|
||||
<TextBlock x:Name="TextBlockVmessOrVless" Text="" Grid.Column="2" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
|
||||
|
||||
<TextBlock Text="{DynamicResource TextBlockServerPort}" Grid.Column="0" Grid.Row="1" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPort" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="2"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="1"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPort" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="2" MouseDoubleClick="TextBoxPort_MouseDoubleClick"></TextBox>
|
||||
|
||||
<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"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="2"></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"></TextBox>
|
||||
<TextBlock x:Name="TextBlockUUIDextraExplanation" Text="{DynamicResource TextBlockV2RayAlterIdExplain}" TextWrapping="Wrap" Grid.Column="2" Grid.Row="3"></TextBlock>
|
||||
<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"></TextBox>
|
||||
<TextBlock Text="{DynamicResource TextBlockEncryptionIsAuto}" Grid.Column="2" Grid.Row="4"></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"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="5"></TextBlock>
|
||||
<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"></TextBox>
|
||||
<TextBlock Text="" Grid.Column="2" Grid.Row="6"></TextBlock>
|
||||
<TextBlock x:Name="TextBlocTLSonOrNo" Text="{DynamicResource TextBlockIsOrNotTLS}" Grid.Column="0" Grid.Row="7" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTLS" IsReadOnly="True" Grid.Column="1" Grid.Row="7" Margin="2"></TextBox>
|
||||
<TextBlock x:Name="TextBlocTLSonOrNoExplain" Text="" Grid.Column="2" Grid.Row="7"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockHost" Text="Host:" Grid.Column="0" Grid.Row="8" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxHost" IsReadOnly="True" Grid.Column="1" Grid.Row="8" Margin="2"></TextBox>
|
||||
<TextBlock x:Name="TextBlockHostExplain" Text="" Grid.Column="2" Grid.Row="8"></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>
|
||||
|
||||
<TextBlock x:Name="TextBlockPath" Text="{DynamicResource TextBlockClientPath}" Grid.Column="0" Grid.Row="9" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<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="TextBlockQuicKey" Text="{DynamicResource TextBlockClientMkcpQuicKey}" Grid.Column="0" Grid.Row="10" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxQuicKey" IsReadOnly="True" Grid.Column="1" Grid.Row="10" Margin="2"></TextBox>
|
||||
<TextBlock x:Name="TextBlockQuicKeyExplain" Text="" Grid.Column="2" Grid.Row="10"></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" 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 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>
|
||||
|
||||
|
||||
<!--<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>
|
||||
<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 Text="{DynamicResource TextBlockCopyToClipExplain}" Grid.Column="0" Grid.Row="10" Grid.ColumnSpan="3" Margin="5"></TextBlock>
|
||||
|
||||
|
||||
</Grid>
|
||||
|
@ -129,7 +138,7 @@
|
|||
</Grid>
|
||||
</GroupBox>
|
||||
<!-- NaiveProxy客户端配置参数 -->
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxNaiveProxyClient" Visibility="Visible" Grid.Row="0">
|
||||
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxNaiveProxyClient" Visibility="Collapsed" Grid.Row="0">
|
||||
<Grid >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.5*"></ColumnDefinition>
|
||||
|
|
|
@ -53,68 +53,111 @@ namespace ProxySU
|
|||
TextBoxUUIDextra.Text = "16";
|
||||
//加密方式,一般都为auto
|
||||
TextBoxEncryption.Text = "auto";
|
||||
|
||||
//传输协议
|
||||
TextBoxTransmission.Text = "";
|
||||
//伪装类型
|
||||
TextBoxCamouflageType.Text = MainWindow.ReceiveConfigurationParameters[5];
|
||||
|
||||
//TLS的Host /Quic 加密方式
|
||||
TextBoxHostQuicEncryption.Text = "";
|
||||
|
||||
//QUIC密钥/mKCP Seed/路径Path
|
||||
TextBoxQuicKeyMkcpSeedPath.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
|
||||
//是否启用TLS
|
||||
TextBoxTLS.Text = "none";
|
||||
//TLS的Host
|
||||
TextBoxHost.Text = "";
|
||||
//路径Path
|
||||
TextBoxPath.Text = MainWindow.ReceiveConfigurationParameters[3];
|
||||
//QUIC密钥/mKCP Seed
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
|
||||
if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLS2Web"))
|
||||
{
|
||||
TextBoxTransmission.Text = "ws"; //传输协议
|
||||
TextBoxCamouflageType.Text = "none"; //伪装类型
|
||||
TextBoxTLS.Text = "tls"; //是否启用TLS
|
||||
ShowPath(); //显示路径
|
||||
HideQuicKey(); //隐藏Quic\mKCP密钥
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCP"))
|
||||
if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCP"))
|
||||
{
|
||||
TextBoxTransmission.Text = "tcp";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCPhttp"))
|
||||
{
|
||||
TextBoxTransmission.Text = "tcp";
|
||||
TextBoxCamouflageType.Text = "http";
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "tcpTLS"))
|
||||
{
|
||||
TextBoxTransmission.Text = "tcp";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
HidePath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "tcpTLSselfSigned"))
|
||||
{
|
||||
TextBoxTransmission.Text = "tcp";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
HidePath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessTcpTlsWeb"))
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessXtlsTcp"))
|
||||
{
|
||||
TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
|
||||
TextBoxTransmission.Text = "tcp";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxEncryption.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
HideAlterId();
|
||||
HidePath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
//TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
ImageShareQRcode.Visibility = Visibility.Collapsed;
|
||||
TextBoxURL.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessTcpTlsWeb"))
|
||||
{
|
||||
TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
|
||||
TextBoxTransmission.Text = "tcp";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxEncryption.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
HideAlterId();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
//TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
ImageShareQRcode.Visibility = Visibility.Collapsed;
|
||||
TextBoxURL.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb"))
|
||||
{
|
||||
TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
|
||||
TextBoxTransmission.Text = "ws";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxEncryption.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
HideAlterId();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
//TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
ImageShareQRcode.Visibility = Visibility.Collapsed;
|
||||
TextBoxURL.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessHttp2Web"))
|
||||
{
|
||||
TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
|
||||
TextBoxTransmission.Text = "h2";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxEncryption.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
HideAlterId();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
//TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString();
|
||||
ImageShareQRcode.Visibility = Visibility.Collapsed;
|
||||
TextBoxURL.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
@ -123,157 +166,125 @@ namespace ProxySU
|
|||
TextBoxTransmission.Text = "ws";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLS"))
|
||||
{
|
||||
TextBoxTransmission.Text = "ws";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
ShowPath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLS2Web"))
|
||||
{
|
||||
TextBoxTransmission.Text = "ws";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned"))
|
||||
{
|
||||
TextBoxTransmission.Text = "ws";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
ShowPath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "Http2"))
|
||||
{
|
||||
TextBoxTransmission.Text = "h2";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
ShowPath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "http2Web"))
|
||||
{
|
||||
TextBoxTransmission.Text = "h2";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxHost.Text = MainWindow.ReceiveConfigurationParameters[4];
|
||||
TextBoxHostQuicEncryption.Text = MainWindow.ReceiveConfigurationParameters[4];//获取Host
|
||||
TextBoxTLS.Text = "tls";
|
||||
ShowPath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "http2selfSigned"))
|
||||
{
|
||||
TextBoxTransmission.Text = "h2";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "tls";
|
||||
ShowPath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPNone"))
|
||||
else if (MainWindow.ReceiveConfigurationParameters[0].Contains("mKCP"))
|
||||
{
|
||||
if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPNone"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2SRTP"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "srtp";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPuTP"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "utp";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WechatVideo"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "wechat-video";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2DTLS"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "dtls";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WireGuard"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "wireguard";
|
||||
}
|
||||
|
||||
TextBoxTransmission.Text = "kcp";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxQuicKeyMkcpSeedPath.Text = MainWindow.ReceiveConfigurationParameters[6];//获取mkcp Seed
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示mKCP Seed
|
||||
ShowHostName();
|
||||
ShowMkcpSeed();
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2SRTP"))
|
||||
{
|
||||
TextBoxTransmission.Text = "kcp";
|
||||
TextBoxCamouflageType.Text = "srtp";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示mKCP Seed
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPuTP"))
|
||||
{
|
||||
TextBoxTransmission.Text = "kcp";
|
||||
TextBoxCamouflageType.Text = "utp";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示mKCP Seed
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WechatVideo"))
|
||||
{
|
||||
TextBoxTransmission.Text = "kcp";
|
||||
TextBoxCamouflageType.Text = "wechat-video";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示mKCP Seed
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2DTLS"))
|
||||
{
|
||||
TextBoxTransmission.Text = "kcp";
|
||||
TextBoxCamouflageType.Text = "dtls";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示mKCP Seed
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WireGuard"))
|
||||
{
|
||||
TextBoxTransmission.Text = "kcp";
|
||||
TextBoxCamouflageType.Text = "wireguard";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示mKCP Seed
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicNone"))
|
||||
else if (MainWindow.ReceiveConfigurationParameters[0].Contains("Quic") == true)
|
||||
{
|
||||
if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicNone"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicSRTP"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "srtp";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "Quic2uTP"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "utp";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWechatVideo"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "wechat-video";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicDTLS"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "dtls";
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWireGuard"))
|
||||
{
|
||||
TextBoxCamouflageType.Text = "wireguard";
|
||||
}
|
||||
|
||||
TextBoxTransmission.Text = "quic";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxHostQuicEncryption.Text = MainWindow.ReceiveConfigurationParameters[3];//获取Quic加密方式
|
||||
TextBoxQuicKeyMkcpSeedPath.Text = MainWindow.ReceiveConfigurationParameters[6];//获取Quic加密密钥
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示QUIC密钥
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicSRTP"))
|
||||
{
|
||||
TextBoxTransmission.Text = "quic";
|
||||
TextBoxCamouflageType.Text = "srtp";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示QUIC密钥
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "Quic2uTP"))
|
||||
{
|
||||
TextBoxTransmission.Text = "quic";
|
||||
TextBoxCamouflageType.Text = "utp";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示QUIC密钥
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWechatVideo"))
|
||||
{
|
||||
TextBoxTransmission.Text = "quic";
|
||||
TextBoxCamouflageType.Text = "wechat-video";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示QUIC密钥
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicDTLS"))
|
||||
{
|
||||
TextBoxTransmission.Text = "quic";
|
||||
TextBoxCamouflageType.Text = "dtls";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示QUIC密钥
|
||||
}
|
||||
else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWireGuard"))
|
||||
{
|
||||
TextBoxTransmission.Text = "quic";
|
||||
TextBoxCamouflageType.Text = "wireguard";
|
||||
TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6];
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
ShowQuicKey();//显示QUIC密钥
|
||||
ShowQuicEncryption();
|
||||
ShowQuicKey();
|
||||
}
|
||||
|
||||
else
|
||||
|
@ -281,8 +292,8 @@ namespace ProxySU
|
|||
TextBoxTransmission.Text = "tcp";
|
||||
TextBoxCamouflageType.Text = "none";
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePath();
|
||||
HideQuicKey();
|
||||
ShowHostName();
|
||||
ShowPathV2ray();
|
||||
}
|
||||
CheckDir("v2ray_config");
|
||||
|
||||
|
@ -492,27 +503,46 @@ namespace ProxySU
|
|||
|
||||
}
|
||||
#region 界面控制相关
|
||||
private void HidePath()
|
||||
|
||||
//显示Quic 加密方式
|
||||
private void ShowQuicEncryption()
|
||||
{
|
||||
TextBlockPath.Visibility = Visibility.Collapsed;
|
||||
TextBoxPath.Visibility = Visibility.Collapsed;
|
||||
TextBlockPathExplain.Visibility = Visibility.Collapsed;
|
||||
|
||||
TextBlockQuicEncryption.Visibility = Visibility.Visible;
|
||||
TextBlockHost.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
private void ShowPath()
|
||||
|
||||
//显示Host隐藏Quic加密方式
|
||||
private void ShowHostName()
|
||||
{
|
||||
TextBlockHost.Visibility = Visibility.Visible;
|
||||
TextBlockQuicEncryption.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
//显示路径Path,隐藏mKCP/Quic Key/复制按钮
|
||||
private void ShowPathV2ray()
|
||||
{
|
||||
TextBlockPath.Visibility = Visibility.Visible;
|
||||
TextBoxPath.Visibility = Visibility.Visible;
|
||||
TextBlockPathExplain.Visibility = Visibility.Visible;
|
||||
|
||||
}
|
||||
private void HideQuicKey()
|
||||
{
|
||||
TextBlockMkcpSeed.Visibility = Visibility.Collapsed;
|
||||
TextBlockQuicKey.Visibility = Visibility.Collapsed;
|
||||
TextBoxQuicKey.Visibility = Visibility.Collapsed;
|
||||
TextBlockQuicKeyExplain.Visibility = Visibility.Collapsed;
|
||||
|
||||
}
|
||||
|
||||
//显示mKCP Seed/复制按钮,隐藏Path/Quic Key
|
||||
private void ShowMkcpSeed()
|
||||
{
|
||||
TextBlockPath.Visibility = Visibility.Collapsed;
|
||||
TextBlockMkcpSeed.Visibility = Visibility.Visible;
|
||||
TextBlockQuicKey.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
//显示Quic Key/复制按钮 隐藏Path/mKcp Seed
|
||||
private void ShowQuicKey()
|
||||
{
|
||||
TextBlockPath.Visibility = Visibility.Collapsed;
|
||||
TextBlockMkcpSeed.Visibility = Visibility.Collapsed;
|
||||
TextBlockQuicKey.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
//显示额外ID
|
||||
private void ShowAlterId()
|
||||
{
|
||||
TextBlockUUIDextra.Visibility = Visibility.Visible;
|
||||
|
@ -520,6 +550,8 @@ namespace ProxySU
|
|||
TextBlockUUIDextraExplanation.Visibility = Visibility.Visible;
|
||||
|
||||
}
|
||||
|
||||
//隐藏额外ID
|
||||
private void HideAlterId()
|
||||
{
|
||||
TextBlockUUIDextra.Visibility = Visibility.Collapsed;
|
||||
|
@ -527,15 +559,109 @@ namespace ProxySU
|
|||
TextBlockUUIDextraExplanation.Visibility = Visibility.Collapsed;
|
||||
|
||||
}
|
||||
private void ShowQuicKey()
|
||||
{
|
||||
TextBlockQuicKey.Visibility = Visibility.Visible;
|
||||
TextBoxQuicKey.Visibility = Visibility.Visible;
|
||||
TextBlockQuicKeyExplain.Visibility = Visibility.Visible;
|
||||
|
||||
}
|
||||
|
||||
//private void HidePath()
|
||||
//{
|
||||
// TextBlockPath.Visibility = Visibility.Collapsed;
|
||||
// TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Collapsed;
|
||||
//}
|
||||
//private void ShowPath()
|
||||
//{
|
||||
// TextBlockPath.Visibility = Visibility.Visible;
|
||||
// TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Visible;
|
||||
|
||||
//}
|
||||
//private void HideQuicKey()
|
||||
//{
|
||||
// TextBlockQuicKey.Visibility = Visibility.Collapsed;
|
||||
// TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Collapsed;
|
||||
//}
|
||||
|
||||
//private void ShowQuicKey()
|
||||
//{
|
||||
// TextBlockQuicKey.Visibility = Visibility.Visible;
|
||||
// TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Visible;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 复制参数到剪贴板中
|
||||
|
||||
//复制内容到剪贴板函数
|
||||
private void CopyToClipboard(string content)
|
||||
{
|
||||
if (content != "")
|
||||
{
|
||||
Clipboard.SetDataObject(content);
|
||||
MessageBox.Show(Application.Current.FindResource("MessageBoxShow_V2RayUUIDcopyedToClip").ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(Application.Current.FindResource("MessageBoxShow_V2RayEmptyToClip").ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//复制服务器地址到剪贴板
|
||||
private void TextBoxHostAddress_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxHostAddress.Text);
|
||||
}
|
||||
|
||||
|
||||
//复制服务器端口到剪贴板
|
||||
private void TextBoxPort_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxPort.Text);
|
||||
}
|
||||
|
||||
//复制UUID到剪贴板
|
||||
private void TextBoxUUID_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxUUID.Text);
|
||||
}
|
||||
|
||||
//复制额外ID到剪贴板
|
||||
private void TextBoxUUIDextra_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxUUIDextra.Text);
|
||||
}
|
||||
|
||||
//复制加密方式到剪贴板
|
||||
private void TextBoxEncryption_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxEncryption.Text);
|
||||
}
|
||||
|
||||
//复制传输协议到剪贴板
|
||||
private void TextBoxTransmission_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxTransmission.Text);
|
||||
}
|
||||
|
||||
//复制伪装方式到剪贴板
|
||||
private void TextBoxCamouflageType_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxCamouflageType.Text);
|
||||
}
|
||||
|
||||
//复制Host/Quic加密方法到剪贴板
|
||||
private void TextBoxHostQuicEncryption_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxHostQuicEncryption.Text);
|
||||
}
|
||||
|
||||
private void TextBoxQuicKeyMkcpSeedPath_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxQuicKeyMkcpSeedPath.Text);
|
||||
}
|
||||
|
||||
private void TextBoxTLS_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
CopyToClipboard(TextBoxTLS.Text);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//生成v2rayN客户端导入文件
|
||||
private void GenerateV2rayShareQRcodeAndBase64Url()
|
||||
{
|
||||
|
@ -566,17 +692,17 @@ namespace ProxySU
|
|||
|
||||
if (TextBoxTransmission.Text.Contains("kcp") == true)
|
||||
{
|
||||
v2rayNjsonObject["path"] = TextBoxQuicKey.Text;//设置mKCP Seed
|
||||
v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置mKCP Seed
|
||||
}
|
||||
else if (TextBoxTransmission.Text.Contains("quic")==true)
|
||||
{
|
||||
v2rayNjsonObject["path"] = TextBoxQuicKey.Text;//设置quic密钥
|
||||
v2rayNjsonObject["host"] = "chacha20-poly1305";
|
||||
v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置quic密钥
|
||||
v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//Quic加密方式
|
||||
}
|
||||
else
|
||||
{
|
||||
v2rayNjsonObject["path"] = TextBoxPath.Text; //设置路径
|
||||
v2rayNjsonObject["host"] = TextBoxHost.Text;//设置TLS的Host
|
||||
v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text; //设置路径
|
||||
v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//设置TLS的Host
|
||||
}
|
||||
|
||||
v2rayNjsonObject["tls"] = TextBoxTLS.Text; //设置是否启用TLS
|
||||
|
@ -670,8 +796,8 @@ namespace ProxySU
|
|||
sw.WriteLine(Application.Current.FindResource("TextBlockCamouflageType").ToString() + $"{TextBoxCamouflageType.Text}");
|
||||
sw.WriteLine(Application.Current.FindResource("TextBlockIsOrNotTLS").ToString() + $"{TextBoxTLS.Text}");
|
||||
sw.WriteLine("host:" + $"{TextBoxHostAddress.Text}");
|
||||
sw.WriteLine(Application.Current.FindResource("TextBlockClientPath").ToString() + $"{TextBoxPath.Text}");
|
||||
sw.WriteLine(Application.Current.FindResource("TextBlockClientMkcpQuicKey").ToString() + $"{TextBoxQuicKey.Text}");
|
||||
sw.WriteLine(Application.Current.FindResource("TextBlockClientPath").ToString() + $"{TextBoxQuicKeyMkcpSeedPath.Text}");
|
||||
sw.WriteLine(Application.Current.FindResource("TextBlockClientMkcpQuicKey").ToString() + $"{TextBoxQuicKeyMkcpSeedPath.Text}");
|
||||
|
||||
}
|
||||
|
||||
|
@ -1435,7 +1561,8 @@ namespace ProxySU
|
|||
GroupBoxClientSSpc.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace ProxySU
|
|||
/// </summary>
|
||||
public partial class SSpluginWindow : Window
|
||||
{
|
||||
|
||||
//SS加密方法设定
|
||||
public class EncryptionMethodInfo
|
||||
{
|
||||
public string Name { get; set; }
|
||||
|
@ -144,12 +144,6 @@ namespace ProxySU
|
|||
//V2Ray-Plugin SS+WebSocket+TLS+Web模式被选中
|
||||
else if (RadioButtonWebSocketTLSWebFrontSS.IsChecked == true || RadioButtonWebSocketTLSWebFrontSSHot.IsChecked == true)
|
||||
{
|
||||
//if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true)
|
||||
//{
|
||||
// //****** "域名不能为空,请检查相关参数设置!" ******
|
||||
// MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString());
|
||||
// return;
|
||||
//}
|
||||
testDomain = TestDomainIsEmpty();
|
||||
//传递模板类型
|
||||
MainWindow.ReceiveConfigurationParameters[0] = "WebSocketTLSWebFrontSS";
|
||||
|
@ -203,12 +197,6 @@ namespace ProxySU
|
|||
//SS+GoQuiet-Plugin模式被选中
|
||||
else if (RadioButtonGoQuietPluginSS.IsChecked == true)
|
||||
{
|
||||
//if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true)
|
||||
//{
|
||||
// //****** "域名不能为空,请检查相关参数设置!" ******
|
||||
// MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString());
|
||||
// return;
|
||||
//}
|
||||
testDomain = TestDomainIsEmpty();
|
||||
//传递模板类型
|
||||
MainWindow.ReceiveConfigurationParameters[0] = "GoQuietPluginSS";
|
||||
|
@ -221,12 +209,6 @@ namespace ProxySU
|
|||
//SS+Cloak-Plugin模式被选中
|
||||
else if (RadioButtonCloakPluginSS.IsChecked == true)
|
||||
{
|
||||
//if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true)
|
||||
//{
|
||||
// //****** "域名不能为空,请检查相关参数设置!" ******
|
||||
// MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString());
|
||||
// return;
|
||||
//}
|
||||
testDomain = TestDomainIsEmpty();
|
||||
//传递模板类型
|
||||
MainWindow.ReceiveConfigurationParameters[0] = "CloakPluginSS";
|
||||
|
@ -259,10 +241,6 @@ namespace ProxySU
|
|||
//无插件的界面
|
||||
private void RadioButtonNonePluginSS_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//TextBlockServerListenPort.Visibility = Visibility.Visible;
|
||||
//TextBoxServerListenPort.Visibility = Visibility.Visible;
|
||||
//ButtonServerListenPort.Visibility = Visibility.Visible;
|
||||
|
||||
//隐藏Websocket Path
|
||||
TextBlockWebSocketPathSS.Visibility = Visibility.Collapsed;
|
||||
TextBoxWebSocketPathSS.Visibility = Visibility.Collapsed;
|
||||
|
|
|
@ -93,8 +93,6 @@
|
|||
<sys:String x:Key="MessageBoxShow_RemoveAllSoft">Only the proxy software installed by ProxySU and related configurations are supported. Please make sure that important configurations have been backed up. Uninstalling agents installed using other methods or scripts is not supported. Are you sure you want to uninstall the agent software on the remote host?</sys:String>
|
||||
<sys:String x:Key="DisplayInstallInfo_StartRemoveProxy">Start uninstall......</sys:String>
|
||||
|
||||
|
||||
|
||||
<!-- The following resource tool tab interface -->
|
||||
<sys:String x:Key="ButtonWebBrowserHomePage">Home</sys:String>
|
||||
<sys:String x:Key="ButtonWebBrowserForward">Forward</sys:String>
|
||||
|
@ -115,6 +113,12 @@
|
|||
<!-- 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="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>
|
||||
<sys:String x:Key="TextBlockV2RayVlessTcpTlsWebExplain">Lightweight protocol VLESS, occupies less host resources, data TLS encrypted transmission, and Caddy2 is used as a disguised website on the node. Suitable for VPS with low configuration, or shared nodes by multiple people, the server client version requires 4.27+ (Domain required) Notsupport CDN.</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessWebSocketTlsWebExplain">VLESS protocol, this type of solution with VMESS is more lightweight. Stability is strong, Caddy2 is front-facing, hidden proxy features, it is recognized as https traffic visiting the website, the strongest anti-blocking recognition, (Domain required) CDN is supported</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessHttp2WebExplain">VLESS protocol, this type of solution with VMESS is more lightweight. 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 required) CloudFlare CDN is not supported</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayTcpProtocol">TCP</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayWebSocketProtocol">WebSocket</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHttp2Protocol">Http/2</sys:String>
|
||||
|
@ -125,9 +129,11 @@
|
|||
<sys:String x:Key="ButtonV2RayServerPortChange">Random</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayServerPortExplain">If TLS encryption is used, please keep the default port 443</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayUUIDExplain">Use the existing UUID and paste it directly into the box</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayQuicUUID">mKCP Seed/QUIC key</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayQuicUUID">QUIC Key:</sys:String>
|
||||
<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="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>
|
||||
|
@ -140,8 +146,7 @@
|
|||
<sys:String x:Key="RadioButtonV2RayTcpTlsSelfSigned">TCP+TLS (self-signed certificate)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpTlsSelfSignedExplain">Data encrypted transmission, the transmission protocol uses TLS, it will be recognized as TLS traffic, not equivalent to https traffic characteristics (no domain name required)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RaySelfSignedShadowrocketExplain">Shadowrocket (ios) needs to manually open the "Allow Unsafe" option</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVlessTcpTlsWebExplain">Lightweight protocol VLESS, occupies less host resources, data TLS encrypted transmission, and Caddy2 is used as a disguised website on the node. Suitable for low-profile VPS, or shared nodes by multiple people, the server client version requires 4.27+ (domain name required)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketExplain">Data encrypted transmission, the transmission protocol uses WebSocket, if TLS is not enabled, it will be recognized as WebSocket traffic.</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketExplain">Data encrypted transmission, the transmission protocol uses WebSocket, if TLS is not enabled, it will be recognized as WebSocket traffic.</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketTlsExplain">Data encrypted transmission, the transmission protocol uses WebSocket, and TLS is enabled, it will be recognized as TLS traffic. (Domain name required),Support CDN.</sys:String>
|
||||
<sys:String x:Key="RadioButtonV2RayWebSocketTlsSelfSigned">WebSocket+TLS (self-signed certificate)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketTlsSelfSignedExplain">Data encrypted transmission, the transmission protocol uses WebSocket, and TLS is enabled, and it will be recognized as TLS traffic. (No domain name required)</sys:String>
|
||||
|
@ -177,12 +182,16 @@
|
|||
<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="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>
|
||||
<sys:String x:Key="TextBlockV2RayAlterId">alterId:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayAlterIdExplain">The default is 16, and you can fill in a value not exceeding 64. If the client does not have this option, leave it blank</sys:String>
|
||||
<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="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>
|
||||
<sys:String x:Key="TextBlockEncryptionIsAuto">default auto</sys:String>
|
||||
|
|
|
@ -118,6 +118,13 @@
|
|||
<!-- 以下V2Ray模板库界面 -->
|
||||
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray 模板库</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHotPlan">推荐方案</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>
|
||||
<sys:String x:Key="TextBlockV2RayVlessTcpTlsWebExplain">轻量协议VLESS,占用更少主机资源,数据TLS加密传输,用Caddy2在节点上做伪装网站。适合配置低的VPS,或多人共用节点,服务端客户端版本要求4.27+ (需域名)不支持CDN。</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessWebSocketTlsWebExplain">使用VLESS协议,与VMESS的此类型方案,更轻量。稳定性强,Caddy2做前置,隐藏代理特征,被识别为访问网站的https流量,抗封锁识别最强,需要域名,支持CDN</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessHttp2WebExplain">使用VLESS协议,与VMESS的此类型方案,更轻量。基于 HTTP/2 传输。完整按 HTTP/2 标准实现,Caddy2做前置,隐藏代理特征,H2C协议转发到V2Ray,需要域名,暂不支持CloudFlare的CDN</sys:String>
|
||||
|
||||
<sys:String x:Key="TabItemHeaderV2RayTcpProtocol">TCP传输协议</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayWebSocketProtocol">WebSocket传输协议</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHttp2Protocol">Http/2传输协议</sys:String>
|
||||
|
@ -128,9 +135,11 @@
|
|||
<sys:String x:Key="ButtonV2RayServerPortChange">随机选择</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayServerPortExplain">若使用TLS加密,请保持默认的443端口</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayUUIDExplain">使用已有UUID,直接粘贴到框中</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayQuicUUID">mKCP Seed/QUIC密钥</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayQuicUUID">QUIC密钥:</sys:String>
|
||||
<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="TextBlockV2RayDomain">域名:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMaskSites">伪装网站:</sys:String>
|
||||
<sys:String x:Key="TextBoxV2RayMaskSitesTag">设置此项可增加代理的隐蔽(可为空)</sys:String>
|
||||
|
@ -143,7 +152,6 @@
|
|||
<sys:String x:Key="RadioButtonV2RayTcpTlsSelfSigned">TCP+TLS(自签证书)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpTlsSelfSignedExplain">数据加密传输,传输协议使用TLS,会被识别为TLS流量,不等同于https流量特征 (无需域名)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RaySelfSignedShadowrocketExplain">Shadowrocket (ios)需要手动打开“允许不安全”选项</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVlessTcpTlsWebExplain">轻量协议VLESS,占用更少主机资源,数据TLS加密传输,用Caddy2在节点上做伪装网站。适合配置低的VPS,或多人共用节点,服务端客户端版本要求4.27+ (需域名)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketExplain">数据加密传输,传输协议使用WebSocket,未启用TLS,将被识别为WebSocket流量。</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketTlsExplain">数据加密传输,传输协议使用WebSocket,启用TLS,将被识别为TLS流量。(需要域名)支持CDN。</sys:String>
|
||||
<sys:String x:Key="RadioButtonV2RayWebSocketTlsSelfSigned">WebSocket+TLS(自签证书)</sys:String>
|
||||
|
@ -180,14 +188,19 @@
|
|||
<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="ButtonCopyV2RayUUIDtoClip">复制</sys:String>
|
||||
<sys:String x:Key="MessageBoxShow_V2RayUUIDcopyedToClip">已复制到剪贴板中!</sys:String>
|
||||
<sys:String x:Key="MessageBoxShow_V2RayEmptyToClip">空内容!</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayAlterId">额外ID:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayAlterIdExplain">默认16,可以填不超过64的值,客户端没有此选项可不填</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayAlterIdExplain">不超过64,客户端没此项可不填</sys:String>
|
||||
<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="TextBlockCopyToClipExplain">提示:双击以上内容窗,即可复制到剪贴板中。</sys:String>
|
||||
<sys:String x:Key="TextBlockClientPath">路径(Path):</sys:String>
|
||||
<sys:String x:Key="TextBlockClientMkcpQuicKey">mKCP Seed/QUIC密钥:</sys:String>
|
||||
<sys:String x:Key="TextBlockClientQuicKey">QUIC密钥:</sys:String>
|
||||
<sys:String x:Key="TextBlockClientMkcpSeed">mKCP Seed:</sys:String>
|
||||
<sys:String x:Key="TextBlockEncryptionIsAuto">默认auto</sys:String>
|
||||
<sys:String x:Key="GrouBoxHeaderUrlOrQR">二维码/URL</sys:String>
|
||||
<sys:String x:Key="TextBlockUsedParameter">以上参数可以手动或扫描输入客户端,用于官方客户端的配置和相关文件已经存放入目录下,点击 确定 按扭可打开</sys:String>
|
||||
|
|
|
@ -115,6 +115,12 @@
|
|||
<!-- 以下V2Ray模板庫界面 -->
|
||||
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray 模板庫</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHotPlan">推薦方案</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>
|
||||
<sys:String x:Key="TextBlockV2RayVlessTcpTlsWebExplain">輕量協議VLESS,佔用更少主機資源,數據TLS加密傳輸,用Caddy2在節點上做偽裝網站。適合配置低的VPS,或多人共用節點,服務端客戶端版本要求4.27+ (需域名)不支持CDN。</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessWebSocketTlsWebExplain">使用VLESS協議,與VMESS的此類型方案,更輕量。穩定性強,Caddy2做前置,隱藏代理特徵,被識別為訪問網站的https流量,抗封鎖識別最強,需要域名,支持CDN</sys:String>
|
||||
<sys:String x:Key="TextBlockVlessHttp2WebExplain">使用VLESS協議,與VMESS的此類型方案,更輕量。基於 HTTP/2 傳輸。完整按 HTTP/2 標準實現,Caddy2做前置,隱藏代理特徵,H2C協議轉發到V2Ray,需要域名,暫不支持CloudFlare的CDN</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayTcpProtocol">TCP傳輸協議</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayWebSocketProtocol">WebSocket傳輸協議</sys:String>
|
||||
<sys:String x:Key="TabItemHeaderV2RayHttp2Protocol">Http/2傳輸協議</sys:String>
|
||||
|
@ -125,9 +131,11 @@
|
|||
<sys:String x:Key="ButtonV2RayServerPortChange">隨機選擇</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayServerPortExplain">若使用TLS加密,請保持默認的443端口</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayUUIDExplain">使用已有UUID,直接粘貼到框中</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayQuicUUID">mKCP Seed/QUIC密鑰</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayQuicUUID">QUIC密鑰:</sys:String>
|
||||
<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="TextBlockV2RayDomain">域名:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayMaskSites">偽裝網站:</sys:String>
|
||||
<sys:String x:Key="TextBoxV2RayMaskSitesTag">設置此項可增加代理的隱蔽(可為空)</sys:String>
|
||||
|
@ -140,7 +148,6 @@
|
|||
<sys:String x:Key="RadioButtonV2RayTcpTlsSelfSigned">TCP+TLS(自簽證書)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayTcpTlsSelfSignedExplain">數據加密傳輸,傳輸協議使用TLS,會被識別為TLS流量,不等同於https流量特徵 (無需域名)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RaySelfSignedShadowrocketExplain">Shadowrocket (ios)需要手動打開“允許不安全”選項</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayVlessTcpTlsWebExplain">輕量協議VLESS,佔用更少主機資源,數據TLS加密傳輸,用Caddy2在節點上做偽裝網站。適合配置低的VPS,或多人共用節點,服務端客戶端版本要求4.27+ (需域名)</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketExplain">數據加密傳輸,傳輸協議使用WebSocket,未啟用TLS,將被識別為WebSocket流量。</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayWebSocketTlsExplain">數據加密傳輸,傳輸協議使用WebSocket,啟用TLS,將被識別為TLS流量。 (需要域名)支持CDN。</sys:String>
|
||||
<sys:String x:Key="RadioButtonV2RayWebSocketTlsSelfSigned">WebSocket+TLS(自簽證書)</sys:String>
|
||||
|
@ -177,12 +184,16 @@
|
|||
<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="ButtonCopyV2RayUUIDtoClip">複製</sys:String>
|
||||
<sys:String x:Key="MessageBoxShow_V2RayUUIDcopyedToClip">已復製到剪貼板中!</sys:String>
|
||||
<sys:String x:Key="MessageBoxShow_V2RayEmptyToClip">空內容!</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayAlterId">額外ID:</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayAlterIdExplain">默認16,可以填不超過64的值,客戶端沒有此選項可不填</sys:String>
|
||||
<sys:String x:Key="TextBlockV2RayAlterIdExplain">不超過64,客戶端沒此項可不填</sys:String>
|
||||
<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="TextBlockCopyToClipExplain">提示:雙擊以上內容窗,即可複製到剪貼板中。</sys:String>
|
||||
<sys:String x:Key="TextBlockClientPath">路徑(Path):</sys:String>
|
||||
<sys:String x:Key="TextBlockClientMkcpQuicKey">mKCP Seed/QUIC密鑰:</sys:String>
|
||||
<sys:String x:Key="TextBlockEncryptionIsAuto">默認auto</sys:String>
|
||||
|
|
|
@ -67,6 +67,43 @@
|
|||
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayVlessProtocol}" Width="110" Height="30">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1.2*"></RowDefinition>
|
||||
<RowDefinition Height="1.2*"></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition Height="3"></RowDefinition>
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{DynamicResource TextBlockVlessExplain}" TextWrapping="Wrap" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="4" Margin="5,3,5,0"></TextBlock>
|
||||
|
||||
<RadioButton x:Name="RadioButtonVlessXtlsTcp" Content="VLESS+TCP+XTLS+Web" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonVlessTcpTlsWeb_Checked" VerticalAlignment="Center" HorizontalAlignment="Left" ></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockVlessXtlsTcpExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" Margin="0,0,5,0" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
|
||||
<RadioButton x:Name="RadioButtonVlessTcpTlsWeb" Content="VLESS+TCP+TLS+Web" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Checked="RadioButtonVlessTcpTlsWeb_Checked" ></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayVlessTcpTlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" Margin="0,0,5,0" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
|
||||
<RadioButton x:Name="RadioButtonVlessWebSocketTlsWeb" Content="VLESS+WebSocket+TLS+Web" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="3" Checked="RadioButtonWebSocketTLS2Web_Checked" VerticalAlignment="Center" HorizontalAlignment="Left" />
|
||||
<TextBlock Text="{DynamicResource TextBlockVlessWebSocketTlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" Margin="0,0,8,0" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
|
||||
<RadioButton x:Name="RadioButtonVlessHttp2Web" Content="VLESS+http2+TLS+Web" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="4" Checked="RadioButtonWebSocketTLS2Web_Checked" VerticalAlignment="Center" HorizontalAlignment="Left"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockVlessHttp2WebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3" Margin="0,0,5,0" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayTcpProtocol}" Width="110" Height="30">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
|
@ -94,11 +131,10 @@
|
|||
<RadioButton x:Name="RadioButtonTcpTLS2SelfSigned" Content="{DynamicResource RadioButtonV2RayTcpTlsSelfSigned}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="4" Checked="RadioButtonTCP2TLSnoDomain_Checked" VerticalAlignment="Center" HorizontalAlignment="Left" />
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayTcpTlsSelfSignedExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RaySelfSignedShadowrocketExplain}" TextWrapping="Wrap" Grid.Column="4" Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center" ></TextBlock>
|
||||
<RadioButton x:Name="RadioButtonVlessTcpTlsWeb" Content="VLESS+TCP+TLS+Web" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="5" Checked="RadioButtonTCP2TLS_Checked" VerticalAlignment="Center" HorizontalAlignment="Left" ></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayVlessTcpTlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="5" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
|
||||
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="{DynamicResource TabItemHeaderV2RayWebSocketProtocol}" Width="150" Height="30">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
|
@ -177,17 +213,17 @@
|
|||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<RadioButton x:Name="RadioButtonMkcpNone" Content="{DynamicResource RadioButtonV2RayMkcpNone}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<RadioButton x:Name="RadioButtonMkcpNone" Content="{DynamicResource RadioButtonV2RayMkcpNone}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonMkcp_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayMkcpNoneExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
<RadioButton x:Name="RadioButton2mKCP2SRTP" Content="mKCP+SRTP" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<RadioButton x:Name="RadioButton2mKCP2SRTP" Content="mKCP+SRTP" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonMkcp_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayMkcpSRTPExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
<RadioButton x:Name="RadioButton2mKCPuTP" Content="mKCP+uTP" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="3" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<RadioButton x:Name="RadioButton2mKCPuTP" Content="mKCP+uTP" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="3" Checked="RadioButtonMkcp_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayMkcpuTPExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
<RadioButton x:Name="RadioButton2mKCP2WechatVideo" Content="mKCP+WechatVideo" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="4" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<RadioButton x:Name="RadioButton2mKCP2WechatVideo" Content="mKCP+WechatVideo" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="4" Checked="RadioButtonMkcp_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayMkcpWeChatExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
<RadioButton x:Name="RadioButton2mKCP2DTLS" Content="mKCP+DTLS 1.2" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="5" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<RadioButton x:Name="RadioButton2mKCP2DTLS" Content="mKCP+DTLS 1.2" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="5" Checked="RadioButtonMkcp_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayMkcpDTLSExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="5" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
<RadioButton x:Name="RadioButton2mKCP2WireGuard" Content="mKCP+WireGuard" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="6" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<RadioButton x:Name="RadioButton2mKCP2WireGuard" Content="mKCP+WireGuard" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="6" Checked="RadioButtonMkcp_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayMkcpWireGuardExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="6" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
|
||||
|
||||
</Grid>
|
||||
|
@ -259,14 +295,20 @@
|
|||
<TextBox x:Name="TextBoxNewUUID" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" Margin="3"></TextBox>
|
||||
<Button x:Name="ButtonNewUUID" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="4" Grid.Row="1" Margin="2" Click="ButtonNewUUID_Click"></Button>
|
||||
<TextBlock Text="{DynamicResource TextBlockV2RayUUIDExplain}" TextWrapping="Wrap" Grid.Column="5" Grid.Row="1" Grid.ColumnSpan="2" Margin="0"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockQuicUUID" Text="{DynamicResource TextBlockV2RayQuicUUID}" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxQuicUUID" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" Margin="3"></TextBox>
|
||||
<Button x:Name="ButtonQuicUUID" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="4" Grid.Row="2" Margin="2" Click="ButtonQuicUUID_Click"></Button>
|
||||
<TextBlock x:Name="TextBlockQuicUUID" Text="{DynamicResource TextBlockV2RayQuicUUID}" Visibility="Collapsed" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockMkcpSeedUUID" Text="{DynamicResource TextBlockV2RayMkcpSeedUUID}" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox x:Name="TextBoxQuicAndMkcpSeedUUID" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" Margin="3"></TextBox>
|
||||
<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="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>
|
||||
|
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": null,
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"encryption": "none",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "h2",
|
||||
"security": "tls",
|
||||
"httpSettings": {
|
||||
"path": null,
|
||||
"host": [
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": null,
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"flow": "xtls-rprx-origin",
|
||||
"encryption": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "tcp",
|
||||
"security": "xtls",
|
||||
"xtlsSettings": {
|
||||
"serverName": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": null,
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": null,
|
||||
"encryption": "none",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "tls",
|
||||
"tlsSettings": {
|
||||
"serverName": ""
|
||||
},
|
||||
"wsSettings": {
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"port": 10000,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
],
|
||||
"decryption": "none"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "h2",
|
||||
"security": "none",
|
||||
"httpSettings": {
|
||||
"path": null,
|
||||
"host": [
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"port": 443,
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": "",
|
||||
"flow": "xtls-rprx-origin"
|
||||
}
|
||||
],
|
||||
"decryption": "none",
|
||||
"fallbacks": [
|
||||
{
|
||||
"dest": 8800
|
||||
}
|
||||
]
|
||||
},
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"port": 10000,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": ""
|
||||
}
|
||||
],
|
||||
"decryption": "none"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "ws",
|
||||
"security": "none",
|
||||
"wsSettings": {
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Add table
Reference in a new issue