1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-11-22 21:26:09 +03:00

add MTProto+TLS fix some bugs

This commit is contained in:
ProxySU 2020-10-09 21:25:59 +08:00
parent 251782a410
commit 82d458cbce
12 changed files with 1807 additions and 144 deletions

View File

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ProxySU"
mc:Ignorable="d"
Title="ProxySU - v2.3.1" Height="675" Width="620">
Title="ProxySU - v2.4.0" Height="675" Width="650">
<!--以下样式参考自https://yq.aliyun.com/articles/331878
https://docs.microsoft.com/en-us/dotnet/desktop-wpf/fundamentals/styles-templates-overview-->
<Window.Resources>
@ -415,6 +415,7 @@
<Button x:Name="ButtonNaiveCancel" Content="{DynamicResource ButtonNaiveCancel}" Grid.ColumnSpan="1" Margin="10" Grid.Column="2" Grid.Row="2" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem Header="SSR" Width="60" Height="30">
<Grid>
<Grid.ColumnDefinitions>
@ -466,6 +467,7 @@
<Button x:Name="ButtonSSRCancel" Content="{DynamicResource ButtonTrojanCancel}" Grid.Column="2" Grid.Row="2" Margin="10" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem Header="SS" Width="60" Height="30">
<Grid>
<Grid.ColumnDefinitions>
@ -518,6 +520,61 @@
<Button x:Name="Button_canelSS" Content="{DynamicResource Button_canel}" Margin="10" Grid.Column="2" Grid.Row="2" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem Header="MTProto" Width="70" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<GroupBox Header="{DynamicResource GroupBoxHeaderParameterTrojan}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Grid.RowSpan="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"></ColumnDefinition>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockMtgTemplateExplanation}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockHostPart}" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxMtgHostDomain" Text="443" Grid.Column="1" Grid.Row="1" Margin="3"></TextBox>
<TextBlock Text="{DynamicResource TextBlockMtgPortExplanation}" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockHostCert}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5"></TextBlock>
<TextBlock Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" Text="{DynamicResource TextBlockMtgSecretExplanation}" VerticalAlignment="Center"></TextBlock>
<!--<TextBox x:Name="TextBoxMtgPassword" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonMtgPassword" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonSSRPassword_Click" ></Button>-->
<TextBlock Text="{DynamicResource TextBlockMtgFakeDomainExplanation}" Grid.Column="0" Grid.Row="3" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
<TextBox x:Name="TextBoxMtgSites" Style="{StaticResource TitleText}" Tag="azure.microsoft.com" Grid.Column="1" Grid.Row="3" Margin="3" ></TextBox>
<TextBlock Text="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="2" Grid.Row="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
<TextBlock Text="TAG" Grid.Column="0" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Right" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxMtgTag" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="4" Margin="3" Visibility="Collapsed"></TextBox>
</Grid>
</GroupBox>
<Button x:Name="ButtonMtgSetUp" Content="{DynamicResource ButtonMtgSetUp}" Grid.Column="0" Grid.Row="2" Margin="10" Click="ButtonMtgSetUp_Click" />
<!--<Button x:Name="ButtonUpdateTrojan" Content="{DynamicResource ButtonUpdateTrojan}" Grid.Column="1" Grid.Row="2" Margin="10" Click="ButtonUpdateTrojan_Click"></Button>-->
<Button x:Name="ButtonMtgCancel" Content="{DynamicResource ButtonTrojanCancel}" Grid.Column="2" Grid.Row="2" Margin="10" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<!--<TabItem Header="三合一" Width="100" Height="30" Visibility="Collapsed">
<Grid>
<Grid.ColumnDefinitions>

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -13,7 +13,7 @@
<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.5*"></ColumnDefinition>
@ -237,7 +237,7 @@
</Grid>
</GroupBox>
<!-- SS客户端配置参数 -->
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClientSS" Visibility="Visible" Grid.Row="0">
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClientSS" Visibility="Collapsed" Grid.Row="0">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.6*"></ColumnDefinition>
@ -272,7 +272,7 @@
<!--<TextBlock Text="{DynamicResource TextBlockEncryptionIsAuto}" Grid.Column="2" Grid.Row="3"></TextBlock>-->
<TextBlock x:Name="TextBlockPluginNameExplainSS" Text="{DynamicResource TextBlockPluginNameExplainSS}" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxPluginNameExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxPluginNameExplainSS_MouseDoubleClick"/>
<TextBox x:Name="TextBoxPluginNameExplainSSpc" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" Visibility="Collapsed" VerticalAlignment="Center"/>
<TextBox x:Name="TextBoxPluginNameExplainSSpc" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" Visibility="Collapsed" VerticalAlignment="Center" MouseDoubleClick="TextBoxPluginNameExplainSSpc_MouseDoubleClick"/>
<TextBlock Text="" Grid.Column="2" Grid.Row="4"></TextBlock>
<TextBlock x:Name="TextBlockPluginOptionExplainSS" Text="{DynamicResource TextBlockPluginOptionExplainSS}" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxPluginOptionExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="2" VerticalAlignment="Center" MouseDoubleClick="TextBoxPluginOptionExplainSS_MouseDoubleClick"/>
@ -285,6 +285,68 @@
</Grid>
</GroupBox>
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClientMTProto" Visibility="Collapsed" Grid.Row="0" Grid.RowSpan="2">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<RadioButton x:Name="RadioButtonMtgIpv4" Content="IPV4" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Checked="RadioButtonMtgIpv4_Checked"></RadioButton>
<RadioButton x:Name="RadioButtonMtgIpv6" Content="IPV6" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Checked="RadioButtonMtgIpv6_Checked"></RadioButton>
<Grid x:Name="GridMtgIpv4" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="0.3*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="0.3*"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockShareQRcodeMtgTgIpv4}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<Image x:Name="ImageShareQRcodeMtgTgIpv4" Grid.Column="1" Grid.Row="0"></Image>
<TextBlock Text="{DynamicResource TextBlockURLMtgTgIpv4}" TextWrapping="Wrap" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxURLMtgTgIpv4" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" MouseDoubleClick="TextBoxURLMtgTgIpv4_MouseDoubleClick"></TextBox>
<TextBlock Text="{DynamicResource TextBlockShareQRcodeMtgTmeIpv4}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<Image x:Name="ImageShareQRcodeMtgTmeIpv4" Grid.Column="1" Grid.Row="2"></Image>
<TextBlock Text="{DynamicResource TextBlockURLMtgTmeIpv4}" TextWrapping="Wrap" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxURLMtgTmeIpv4" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" MouseDoubleClick="TextBoxURLMtgTmeIpv4_MouseDoubleClick"></TextBox>
</Grid>
<Grid x:Name="GridMtgIpv6" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="0.3*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="0.3*"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockShareQRcodeMtgTgIpv4}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<Image x:Name="ImageShareQRcodeMtgTgIpv6" Grid.Column="1" Grid.Row="0"></Image>
<TextBlock Text="{DynamicResource TextBlockURLMtgTgIpv4}" TextWrapping="Wrap" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxURLMtgTgIpv6" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" MouseDoubleClick="TextBoxURLMtgTgIpv6_MouseDoubleClick"></TextBox>
<TextBlock Text="{DynamicResource TextBlockShareQRcodeMtgTmeIpv4}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<Image x:Name="ImageShareQRcodeMtgTmeIpv6" Grid.Column="1" Grid.Row="2"></Image>
<TextBlock Text="{DynamicResource TextBlockURLMtgTmeIpv4}" TextWrapping="Wrap" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxURLMtgTmeIpv6" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" MouseDoubleClick="TextBoxURLMtgTmeIpv6_MouseDoubleClick"></TextBox>
</Grid>
</Grid>
</GroupBox>
<!--<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClient" Visibility="Collapsed" Grid.Row="0">
<Grid >
@ -342,7 +404,14 @@
</Grid.ColumnDefinitions>
<TextBlock x:Name="TextBlockQrURLexplainSSpc" TextWrapping="Wrap" Grid.Column="0"></TextBlock>
<Image x:Name="ImageShareQRcodeSSpc" Grid.Column="1"></Image>
<TextBox x:Name="TextBoxURLpcSS" TextWrapping="Wrap" Grid.Column="2"></TextBox>
<Grid x:Name="GridShareURLpc" Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="0.15*"></RowDefinition>
</Grid.RowDefinitions>
<TextBox x:Name="TextBoxURLpcSS" TextWrapping="Wrap" Grid.Column="2" MouseDoubleClick="TextBoxURLpcSS_MouseDoubleClick"></TextBox>
<TextBlock Text="{DynamicResource TextBlockCopyToClipExplain}" TextWrapping="Wrap" Grid.Row="1"></TextBlock>
</Grid>
</Grid>
</GroupBox>
@ -357,4 +426,5 @@
</Grid>
</Grid>
</Window>

View File

@ -42,6 +42,9 @@ namespace ProxySU
if (String.Equals(MainWindow.proxyType, "V2Ray"))
{
//显示V2Ray参数隐藏其他
GroupBoxClientMTProto.Visibility = Visibility.Collapsed;
GroupBoxClientQRandURL.Visibility = Visibility.Visible;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
GroupBoxV2rayClient.Visibility = Visibility.Visible;
GroupBoxTrojanGoClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
@ -338,6 +341,9 @@ namespace ProxySU
else if (String.Equals(MainWindow.proxyType, "TrojanGo"))
{
//GroupBoxTrojanClient.Header = "Trojan-go 客户端配置参数";
GroupBoxClientMTProto.Visibility = Visibility.Collapsed;
GroupBoxClientQRandURL.Visibility = Visibility.Visible;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
GroupBoxV2rayClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanGoClient.Visibility = Visibility.Visible;
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
@ -372,6 +378,9 @@ namespace ProxySU
}
else if (String.Equals(MainWindow.proxyType, "Trojan"))
{
GroupBoxClientMTProto.Visibility = Visibility.Collapsed;
GroupBoxClientQRandURL.Visibility = Visibility.Visible;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
GroupBoxV2rayClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanGoClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanClient.Visibility = Visibility.Visible;
@ -393,6 +402,9 @@ namespace ProxySU
}
else if (String.Equals(MainWindow.proxyType, "NaiveProxy"))
{
GroupBoxClientMTProto.Visibility = Visibility.Collapsed;
GroupBoxClientQRandURL.Visibility = Visibility.Visible;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
GroupBoxV2rayClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanGoClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
@ -409,6 +421,9 @@ namespace ProxySU
}
else if (String.Equals(MainWindow.proxyType, "SSR"))
{
GroupBoxClientMTProto.Visibility = Visibility.Collapsed;
GroupBoxClientQRandURL.Visibility = Visibility.Visible;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
GroupBoxV2rayClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanGoClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
@ -436,6 +451,9 @@ namespace ProxySU
}
else if (String.Equals(MainWindow.proxyType, "SS"))
{
GroupBoxClientMTProto.Visibility = Visibility.Collapsed;
GroupBoxClientQRandURL.Visibility = Visibility.Visible;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
GroupBoxV2rayClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanGoClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
@ -536,7 +554,72 @@ namespace ProxySU
}
}
else if(String.Equals(MainWindow.proxyType, "MTProto"))
{
//显示MTProto参数隐藏其他
GroupBoxClientMTProto.Visibility = Visibility.Visible;
GroupBoxClientQRandURL.Visibility = Visibility.Collapsed;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
GroupBoxV2rayClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanGoClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
GroupBoxNaiveProxyClient.Visibility = Visibility.Collapsed;
GroupBoxSSRClient.Visibility = Visibility.Collapsed;
GroupBoxClientSS.Visibility = Visibility.Collapsed;
string proxyfolder = CheckDir("mtproto_config");
configDomainSavePath = CreateConfigSaveDir(proxyfolder,MainWindow.ReceiveConfigurationParameters[4]);
string configSavePath = configDomainSavePath;
string mtprotoJsonPath = @"mtproto_config\mtproto_info.json";
using (StreamReader readerJson = File.OpenText(mtprotoJsonPath))
{
JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson));
TextBoxURLMtgTgIpv4.Text = jObjectJson["ipv4"]["tg_url"].ToString();
ImageShareQRcodeMtgTgIpv4.Source = CreateQRCode(TextBoxURLMtgTgIpv4.Text, $"{configSavePath}\\QRIpv4Tg.bmp");
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\urlIpv4Tg.txt"))
{
sw.WriteLine(TextBoxURLMtgTgIpv4.Text);
}
TextBoxURLMtgTmeIpv4.Text = jObjectJson["ipv4"]["tme_url"].ToString();
ImageShareQRcodeMtgTmeIpv4.Source = CreateQRCode(TextBoxURLMtgTmeIpv4.Text, $"{configSavePath}\\QRIpv4Tme.bmp");
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\urlIpv4Tme.txt"))
{
sw.WriteLine(TextBoxURLMtgTmeIpv4.Text);
}
if (jObjectJson["ipv6"]["tg_url"].ToString().Contains("nil")==false)
{
RadioButtonMtgIpv6.Visibility = Visibility.Visible;
TextBoxURLMtgTgIpv6.Text = jObjectJson["ipv6"]["tg_url"].ToString();
ImageShareQRcodeMtgTgIpv6.Source = CreateQRCode(TextBoxURLMtgTgIpv6.Text, $"{configSavePath}\\QRIpv6Tg.bmp");
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\urlIpv6Tg.txt"))
{
sw.WriteLine(TextBoxURLMtgTgIpv6.Text);
}
TextBoxURLMtgTmeIpv6.Text = jObjectJson["ipv6"]["tme_url"].ToString();
ImageShareQRcodeMtgTmeIpv6.Source = CreateQRCode(TextBoxURLMtgTmeIpv6.Text, $"{configSavePath}\\QRIpv6Tme.bmp");
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\urlIpv6Tme.txt"))
{
sw.WriteLine(TextBoxURLMtgTmeIpv6.Text);
}
}
else
{
RadioButtonMtgIpv6.Visibility = Visibility.Collapsed;
}
RadioButtonMtgIpv4.IsChecked = true;
}
if (File.Exists(@"mtproto_config\mtproto_info.json"))
{
File.Move(@"mtproto_config\mtproto_info.json", $"{configSavePath}\\mtproto_info.json");
//File.Delete(@"config\config.json");//删除该文件
}
}
}
#region V2ray参数设置函数
@ -602,7 +685,7 @@ namespace ProxySU
{
TextBoxEncryption.Text = "none";
TextBoxTransmission.Text = "tcp";
TextBoxCamouflageType.Text = "none";
TextBoxCamouflageType.Text = "http";
TextBoxTLS.Text = "tls";
ShowAlterId();
ShowHostName();
@ -1491,52 +1574,52 @@ namespace ProxySU
}
}
//生成VMess over TCP with TLS的配置保存(暂未有分享链接与二维码)
//生成VMess over TCP with TLS的配置保存
private void GenerateV2rayVmessTcpTlsShareQRcodeAndBase64Url()
{
#region
//生成v2rayN的json文件
// string v2rayNjsonFile = @"
//{
// ""v"": """",
// ""ps"": """",
// ""add"": """",
// ""port"": """",
// ""id"": """",
// ""aid"": """",
// ""net"": """",
// ""type"": """",
// ""host"": """",
// ""path"": """",
// ""tls"": """"
//}";
// //MessageBox.Show(v2rayNjsonFile);
// JObject v2rayNjsonObject = JObject.Parse(v2rayNjsonFile);
// v2rayNjsonObject["v"] = "2";
// v2rayNjsonObject["add"] = TextBoxHostAddress.Text; //设置域名
// v2rayNjsonObject["port"] = TextBoxPort.Text; //设置端口
// v2rayNjsonObject["id"] = TextBoxUUID.Text; //设置uuid
// v2rayNjsonObject["aid"] = TextBoxUUIDextra.Text; //设置额外ID
// v2rayNjsonObject["net"] = TextBoxTransmission.Text; //设置传输模式
// v2rayNjsonObject["type"] = TextBoxCamouflageType.Text; //设置伪装类型
string v2rayNjsonFile = @"
{
""v"": """",
""ps"": """",
""add"": """",
""port"": """",
""id"": """",
""aid"": """",
""net"": """",
""type"": """",
""host"": """",
""path"": """",
""tls"": """"
}";
//MessageBox.Show(v2rayNjsonFile);
JObject v2rayNjsonObject = JObject.Parse(v2rayNjsonFile);
v2rayNjsonObject["v"] = "2";
v2rayNjsonObject["add"] = TextBoxHostAddress.Text; //设置域名
v2rayNjsonObject["port"] = TextBoxPort.Text; //设置端口
v2rayNjsonObject["id"] = TextBoxUUID.Text; //设置uuid
v2rayNjsonObject["aid"] = TextBoxUUIDextra.Text; //设置额外ID
v2rayNjsonObject["net"] = TextBoxTransmission.Text; //设置传输模式
v2rayNjsonObject["type"] = TextBoxCamouflageType.Text; //设置伪装类型
// if (TextBoxTransmission.Text.Contains("kcp") == true)
// {
// v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置mKCP Seed
// }
// else if (TextBoxTransmission.Text.Contains("quic") == true)
// {
// v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置quic密钥
// v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//Quic加密方式
// }
// else
// {
// v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text; //设置路径
// v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//设置TLS的Host
// }
if (TextBoxTransmission.Text.Contains("kcp") == true)
{
v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置mKCP Seed
}
else if (TextBoxTransmission.Text.Contains("quic") == true)
{
v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置quic密钥
v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//Quic加密方式
}
else
{
v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text; //设置路径
v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//设置TLS的Host
}
// v2rayNjsonObject["tls"] = TextBoxTLS.Text; //设置是否启用TLS
// v2rayNjsonObject["ps"] = v2rayNjsonObject["add"]; //设置备注
v2rayNjsonObject["tls"] = TextBoxTLS.Text; //设置是否启用TLS
v2rayNjsonObject["ps"] = v2rayNjsonObject["add"]; //设置备注
#endregion
@ -1550,25 +1633,21 @@ namespace ProxySU
//生成二维码与URL跳过VlessTcpTlsWeb暂时未有URL标准
//string vmessUrl = "vmess://" + ToBase64Encode(v2rayNjsonObject.ToString());
//TextBoxURL.Text = vmessUrl;
//using (StreamWriter sw = new StreamWriter($"{configSavePath}\\url.txt"))
//{
//if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == false)
//{
//sw.WriteLine(vmessUrl);
//}
//}
//if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == false)
//{
//ImageShareQRcode.Source = CreateQRCode(vmessUrl, $"{configSavePath}\\QR.bmp");
//}
string vmessUrl = "vmess://" + ToBase64Encode(v2rayNjsonObject.ToString());
TextBoxURL.Text = vmessUrl;
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\url.txt"))
{
sw.WriteLine(vmessUrl);
}
ImageShareQRcode.Source = CreateQRCode(vmessUrl, $"{configSavePath}\\QR.bmp");
if (File.Exists($"v2ray_config\\{plainSavePath}\\config.json"))
{
File.Move($"v2ray_config\\{plainSavePath}\\config.json", $"{configSavePath}\\config.json");
Directory.Delete($"v2ray_config\\{plainSavePath}");
//Directory.Delete($"v2ray_config\\{plainSavePath}");
}
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\readme.txt"))
@ -1586,11 +1665,11 @@ namespace ProxySU
//****** "下载相应版本Windows选择v2ray-windows-64.zip或者v2ray-windows-32.zip解压后提取v2ctl.exe和v2ray.exe。与config.json放在同一目录运行v2ray.exe即可。" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine04").ToString());
//sw.WriteLine("-----------------------------------------");
//sw.WriteLine("QR.bmp");
sw.WriteLine("-----------------------------------------");
sw.WriteLine("QR.bmp");
//****** "此文件为v2rayN、Trojan-QT5、v2rayNG(Android)、Shadowrocket(ios)扫码导入节点" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine05").ToString());
//******"此文件为v2rayN、Trojan-QT5、v2rayNG(Android)、Shadowrocket(ios)扫码导入节点" * *****
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine05").ToString());
//****** "v2rayN下载网址https://github.com/2dust/v2rayN/releases" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine06").ToString());
@ -1607,11 +1686,11 @@ namespace ProxySU
//****** "Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。" ******
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine10").ToString());
//sw.WriteLine("-----------------------------------------");
//sw.WriteLine("url.txt");
sw.WriteLine("-----------------------------------------");
sw.WriteLine("url.txt");
//****** "此文件为v2rayN、Trojan-QT5、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址" ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine11").ToString());
//******"此文件为v2rayN、Trojan-QT5、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址" * *****
sw.WriteLine(Application.Current.FindResource("readmeTxtV2RayExplainLine11").ToString());
//写入通用配置参数--
TxtWriteGeneralParameters(sw);
@ -1619,7 +1698,7 @@ namespace ProxySU
}
}
//生成VMess over WS with TLS的配置保存(暂未有分享链接与二维码)
//生成VMess over WS with TLS的配置保存
private void GenerateV2rayVmessWsTlsShareQRcodeAndBase64Url()
{
#region
@ -2519,6 +2598,7 @@ namespace ProxySU
}
}
#region SS内容双击复制到剪贴板
private void TextBoxHostAddressSS_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
@ -2544,11 +2624,55 @@ namespace ProxySU
{
CopyToClipboard(TextBoxPluginNameExplainSS.Text);
}
private void TextBoxPluginNameExplainSSpc_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboard(TextBoxPluginNameExplainSSpc.Text);
}
private void TextBoxPluginOptionExplainSS_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboard(TextBoxPluginOptionExplainSS.Text);
}
private void TextBoxURLpcSS_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboard(TextBoxURLpcSS.Text);
}
#endregion
#region MTProto
private void RadioButtonMtgIpv4_Checked(object sender, RoutedEventArgs e)
{
GridMtgIpv4.Visibility = Visibility.Visible;
GridMtgIpv6.Visibility = Visibility.Collapsed;
}
private void RadioButtonMtgIpv6_Checked(object sender, RoutedEventArgs e)
{
GridMtgIpv4.Visibility = Visibility.Collapsed;
GridMtgIpv6.Visibility = Visibility.Visible;
}
private void TextBoxURLMtgTgIpv4_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboard(TextBoxURLMtgTgIpv4.Text);
}
private void TextBoxURLMtgTmeIpv4_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboard(TextBoxURLMtgTmeIpv4.Text);
}
private void TextBoxURLMtgTgIpv6_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboard(TextBoxURLMtgTgIpv6.Text);
}
private void TextBoxURLMtgTmeIpv6_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboard(TextBoxURLMtgTmeIpv6.Text);
}
#endregion
//生成base64
@ -2622,42 +2746,51 @@ namespace ProxySU
//打开文件夹
private void ButtonOpenSaveDir_Click(object sender, RoutedEventArgs e)
{
if (String.Equals(MainWindow.proxyType, "V2Ray"))
{
string openFolderPath = @"v2ray_config\" + saveFileFolder;
string openFolderPath = configDomainSavePath;
System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
this.Close();
}
else if (String.Equals(MainWindow.proxyType, "TrojanGo"))
{
string openFolderPath = @"trojan-go_config\" + saveFileFolder;
System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
this.Close();
}
else if (String.Equals(MainWindow.proxyType, "Trojan"))
{
string openFolderPath = @"trojan_config\" + saveFileFolder;
System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
this.Close();
}
else if (String.Equals(MainWindow.proxyType, "NaiveProxy"))
{
string openFolderPath = @"naive_config\" + saveFileFolder;
System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
this.Close();
}
else if (String.Equals(MainWindow.proxyType, "SSR"))
{
string openFolderPath = @"ssr_config\" + saveFileFolder;
System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
this.Close();
}
else if (String.Equals(MainWindow.proxyType, "SS"))
{
string openFolderPath = @"ss_config\" + saveFileFolder;
System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
this.Close();
}
//if (String.Equals(MainWindow.proxyType, "V2Ray"))
//{
// string openFolderPath = configDomainSavePath;
// System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
// this.Close();
//}
//else if (String.Equals(MainWindow.proxyType, "TrojanGo"))
//{
// string openFolderPath = configDomainSavePath;
// System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
// this.Close();
//}
//else if (String.Equals(MainWindow.proxyType, "Trojan"))
//{
// string openFolderPath = configDomainSavePath;
// System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
// this.Close();
//}
//else if (String.Equals(MainWindow.proxyType, "NaiveProxy"))
//{
// string openFolderPath = configDomainSavePath;
// System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
// this.Close();
//}
//else if (String.Equals(MainWindow.proxyType, "SSR"))
//{
// string openFolderPath = configDomainSavePath;
// System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
// this.Close();
//}
//else if (String.Equals(MainWindow.proxyType, "SS"))
//{
// string openFolderPath = configDomainSavePath;
// System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
// this.Close();
//}
//else if (String.Equals(MainWindow.proxyType, "MTProto"))
//{
// string openFolderPath = configDomainSavePath;
// System.Diagnostics.Process.Start("explorer.exe", openFolderPath);
// this.Close();
//}
}
//SSR生成URL链接
@ -2849,6 +2982,7 @@ namespace ProxySU
return spaceString + strTemp;
}
}

View File

@ -56,8 +56,15 @@
<!-- 以下SSR设置参数标签页界面 -->
<sys:String x:Key="TextBlockSSRTemplateExplanation">Mode: SSR+TLS+Caddy</sys:String>
<sys:String x:Key="ButtonSSRSetUp">SSR install</sys:String>
<!-- 以下MTProto设置参数标签页界面 -->
<sys:String x:Key="TextBlockMtgTemplateExplanation">Mode: MTProto+TLS</sys:String>
<sys:String x:Key="ButtonMtgSetUp">MTProto install</sys:String>
<sys:String x:Key="TextBlockMtgFakeDomainExplanation">Making domain name:</sys:String>
<sys:String x:Key="TextBlockMtgPortExplanation">Recommended https ports 443, 2053, 2083, 2087, 2096, 8443</sys:String>
<sys:String x:Key="TextBlockMtgSecretExplanation">The secret key will be randomly generated by the server.</sys:String>
<!-- 以下SS设置参数标签页界面 -->
<sys:String x:Key="ButtonSetUpSS">SS one-click installation</sys:String>
<sys:String x:Key="ButtonSetUpSS">SS install</sys:String>
<sys:String x:Key="ButtonTemplateConfigurationSS">SS plug-in library</sys:String>
<sys:String x:Key="TabItemHeaderNonePluginSS">Classic mode</sys:String>
<sys:String x:Key="TextBlockNonePluginPointSS">Tip: This mode, long time, large traffic use, easy to be blocked and interfered, is not recommended!</sys:String>
@ -140,10 +147,10 @@
<sys:String x:Key="TextBlockQuicEncryption">QUIC Encryption:</sys:String>
<sys:String x:Key="TextBlockV2RayDomain">Domain name:</sys:String>
<sys:String x:Key="TextBlockV2RayMaskSites">Mask a website:</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesTag">Set this item to increase the concealment of the agent (may be empty)</sys:String>
<sys:String x:Key="TextBoxV2RayMaskSitesTag">Set this option to increase proxy concealment (can be empty)</sys:String>
<sys:String x:Key="TextBlockV2RayWebSocketTlsWebExplain">Strong stability, Caddy2 as the front, hidden proxy feature, recognized as https traffic to the website, the strongest anti-blocking recognition, domain name is required, CDN support</sys:String >
<sys:String x:Key="TextBlockV2RayHttp2TlsWebExplain">based on HTTP/2 transmission. Completely implemented in accordance with the HTTP/2 standard, with Caddy2 as the front, hidden proxy features, H2C protocol forwarding to V2Ray, domain name is required, and CloudFlare CDN is not currently supported</sys:String>
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + fallback and shunt to WHATEVER (ultimate configuration), configured and recommended by rprx boss (author of xtls), configure the following five solutions at the same time on the server side, sharing the same domain name and port 443, WS can pass through CDN.Option 4 has a special configuration, there is no graphics client support at present, you can use the official V2Ray client.</sys:String>
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + fallback and shunt to WHATEVER (ultimate configuration), configured and recommended by rprx boss (author of xtls), configure the following five solutions at the same time on the server side, sharing the same domain name and port 443, WS can pass through CDN.</sys:String>
<sys:String x:Key="TextBlockV2RayTcpExplain">Encrypted data transmission will be recognized as unknown tcp traffic</sys:String>
<sys:String x:Key="RadioButtonV2RayTcpHttp">TCP+Http camouflage</sys:String>
<sys:String x:Key="TextBlockV2RayTcpHttpExplain">Encrypted data transmission and HTTP disguise will be recognized as http traffic, but not real http access</sys:String>
@ -207,6 +214,16 @@
<sys:String x:Key="TextBlockQrURLexplainTrojan">"Can be used for ShadowRocket (ios), ignore (Android), Trojan-QT5 (windows) to scan codes and import URLs. Note: Some clients may not support WebSocket mode."</sys:String>
<sys:String x:Key="TextBlockQrURLexplainNaiveProxy">URL import link for NaiveGUI (windows)</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSSR">Used to scan codes and import URL import links for ShadowsocksR (windows), SSRR (android), Shadowrocket (ios)</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSSmobile">For mobile phone client shadowsocks(android), Shadowrocket(ios) scan code and URL import link</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSSpc">For the computer client Shadowsocks (windows) scan code and URL import link</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSS">Scan code and URL import link for Shadowsocks (windows), shadowsocks(android), Shadowrocket(ios)</sys:String>
<sys:String x:Key="TextBlockClientPromptSS">Reminder: The import format of the computer client Shadowsocks (windows) and the mobile client shadowsocks (android) and Shadowrocket (ios) are not compatible. Please select the corresponding format.</sys:String>
<sys:String x:Key="RadioButtonMobileSS">Mobile phone</sys:String>
<sys:String x:Key="RadioButtonPCSS">Computer side</sys:String>
<sys:String x:Key="TextBlockShareQRcodeMtgTgIpv4">TG format QR</sys:String>
<sys:String x:Key="TextBlockURLMtgTgIpv4">TG format URL (double-click to copy to the clipboard)</sys:String>
<sys:String x:Key="TextBlockShareQRcodeMtgTmeIpv4">T.ME format QR</sys:String>
<sys:String x:Key="TextBlockURLMtgTmeIpv4">T.ME format URL (double-click to copy to the clipboard)</sys:String>
<!--The following is in the program-->
<sys:String x:Key="MessageBoxShow_ErrorHostPortUserNotEmpty">Host address, host port, and user name are required and cannot be empty!!</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorHostPasswordNotEmpty">The login password is required and cannot be empty!!</sys:String>

View File

@ -57,6 +57,13 @@
<sys:String x:Key="TextBlockSSRTemplateExplanation">模式SSR+TLS+Caddy</sys:String>
<sys:String x:Key="ButtonSSRSetUp">SSR一键安装</sys:String>
<!-- 以下MTProto设置参数标签页界面 -->
<sys:String x:Key="TextBlockMtgTemplateExplanation">模式MTProto+TLS</sys:String>
<sys:String x:Key="ButtonMtgSetUp">MTProto一键安装</sys:String>
<sys:String x:Key="TextBlockMtgFakeDomainExplanation">伪装域名:</sys:String>
<sys:String x:Key="TextBlockMtgPortExplanation">推荐用常见https端口443、2053、2083、2087、2096、8443</sys:String>
<sys:String x:Key="TextBlockMtgSecretExplanation">密钥将由服务端随机生成,这里无需设置。</sys:String>
<!-- 以下SS设置参数标签页界面 -->
<sys:String x:Key="ButtonSetUpSS">SS 一键安装</sys:String>
<sys:String x:Key="ButtonTemplateConfigurationSS">SS 插件库</sys:String>
@ -150,7 +157,7 @@
<sys:String x:Key="TextBoxV2RayMaskSitesTag">设置此项可增加代理的隐蔽(可为空)</sys:String>
<sys:String x:Key="TextBlockV2RayWebSocketTlsWebExplain">稳定性强Caddy2做前置隐藏代理特征被识别为访问网站的https流量抗封锁识别最强,需要域名,支持CDN</sys:String>
<sys:String x:Key="TextBlockV2RayHttp2TlsWebExplain">基于 HTTP/2 传输。完整按 HTTP/2 标准实现Caddy2做前置隐藏代理特征H2C协议转发到V2Ray需要域名暂不支持CloudFlare的CDN</sys:String>
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + 回落 and 分流 to WHATEVER终极配置由rprx大佬 (xtls作者) 配置并推荐在服务端同时配置以下五种方案共用同一域名与443端口其中 WS 都可以通过 CDN。方案4 配置特别目前尚无图形客户端支持可使用V2Ray官方客户端。</sys:String>
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + 回落 and 分流 to WHATEVER终极配置由rprx大佬 (xtls作者) 配置并推荐在服务端同时配置以下五种方案共用同一域名与443端口其中 WS 都可以通过 CDN。</sys:String>
<sys:String x:Key="RadioButtonV2RayTcpHttp">TCP+Http伪装</sys:String>
<sys:String x:Key="TextBlockV2RayTcpExplain">数据加密传输会被识别为未知的tcp流量</sys:String>
<sys:String x:Key="TextBlockV2RayTcpHttpExplain">数据加密传输并做http伪装会被识别为http流量但并不是真正的http访问</sys:String>
@ -221,6 +228,10 @@
<sys:String x:Key="TextBlockClientPromptSS">提醒: 电脑客户端Shadowsocks (windows)与手机客户端shadowsocks(android)、Shadowrocket(ios)的导入格式不兼容,请选择相应格式。</sys:String>
<sys:String x:Key="RadioButtonMobileSS">手机端</sys:String>
<sys:String x:Key="RadioButtonPCSS">电脑端</sys:String>
<sys:String x:Key="TextBlockShareQRcodeMtgTgIpv4">TG格式QR</sys:String>
<sys:String x:Key="TextBlockURLMtgTgIpv4">TG格式URL(双击复制到剪切板中)</sys:String>
<sys:String x:Key="TextBlockShareQRcodeMtgTmeIpv4">T.ME格式QR</sys:String>
<sys:String x:Key="TextBlockURLMtgTmeIpv4">T.ME格式URL(双击复制到剪切板中)</sys:String>
<!--以下为程序内的-->
<sys:String x:Key="MessageBoxShow_ErrorHostPortUserNotEmpty">主机地址、主机端口、用户名为必填项,不能为空!!</sys:String>

View File

@ -57,6 +57,13 @@
<sys:String x:Key="TextBlockSSRTemplateExplanation">模式SSR+TLS+Caddy</sys:String>
<sys:String x:Key="ButtonSSRSetUp">SSR一鍵安裝</sys:String>
<!-- 以下MTProto设置参数标签页界面 -->
<sys:String x:Key="TextBlockMtgTemplateExplanation">模式MTProto+TLS</sys:String>
<sys:String x:Key="ButtonMtgSetUp">MTProto一鍵安裝</sys:String>
<sys:String x:Key="TextBlockMtgFakeDomainExplanation">偽裝域名:</sys:String>
<sys:String x:Key="TextBlockMtgPortExplanation">推薦用常見https端口443、2053、2083、2087、2096、8443</sys:String>
<sys:String x:Key="TextBlockMtgSecretExplanation">密鑰將由服務端隨機生成,這裡無需設置。</sys:String>
<!-- 以下SS设置参数标签页界面 -->
<sys:String x:Key="ButtonSetUpSS">SS 一鍵安裝</sys:String>
<sys:String x:Key="ButtonTemplateConfigurationSS">SS 插件庫</sys:String>
@ -145,7 +152,7 @@
<sys:String x:Key="TextBoxV2RayMaskSitesTag">設置此項可增加代理的隱蔽(可為空)</sys:String>
<sys:String x:Key="TextBlockV2RayWebSocketTlsWebExplain">穩定性強Caddy2做前置隱藏代理特徵被識別為訪問網站的https流量抗封鎖識別最強,需要域名,支持CDN</sys:String >
<sys:String x:Key="TextBlockV2RayHttp2TlsWebExplain">基於 HTTP/2 傳輸。完整按 HTTP/2 標準實現Caddy2做前置隱藏代理特徵H2C協議轉發到V2Ray需要域名暫不支持CloudFlare的CDN</sys:String>
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + 回落and 分流to WHATEVER終極配置由rprx大佬(xtls作者)配置並推薦在服務端同時配置以下五種方案共用同一域名與443端口其中 WS 都可以通過 CDN。方案4 配置特別目前尚無圖形客戶端支持可使用V2Ray官方客戶端。</sys:String>
<sys:String x:Key="TextBlockVlessVmessXtlsTcpWebSocketExplainHot">VLESS over TCP with XTLS + 回落and 分流to WHATEVER終極配置由rprx大佬(xtls作者)配置並推薦在服務端同時配置以下五種方案共用同一域名與443端口其中 WS 都可以通過 CDN。</sys:String>
<sys:String x:Key="TextBlockV2RayTcpExplain">數據加密傳輸會被識別為未知的tcp流量</sys:String>
<sys:String x:Key="RadioButtonV2RayTcpHttp">TCP+Http偽裝</sys:String>
<sys:String x:Key="TextBlockV2RayTcpHttpExplain">數據加密傳輸並做http偽裝會被識別為http流量但並不是真正的http訪問</sys:String>
@ -209,6 +216,16 @@
<sys:String x:Key="TextBlockQrURLexplainTrojan">"可用於ShadowRocket (ios)、igniterAndroid、Trojan-QT5 (windows) 掃碼和導入url。注意有的客戶端可能不支持WebSocket模式。"</sys:String>
<sys:String x:Key="TextBlockQrURLexplainNaiveProxy">用於NaiveGUI(windows)的URL導入鏈接</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSSR">用於ShadowsocksR(windows)、SSRR(android)、Shadowrocket(ios)的掃碼和導入URL導入鏈接</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSSmobile">用於手機客戶端shadowsocks(android)、Shadowrocket(ios)的掃碼和URL導入鏈接</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSSpc">用於電腦客戶端Shadowsocks (windows)的掃碼和URL導入鏈接</sys:String>
<sys:String x:Key="TextBlockQrURLexplainSS">用於Shadowsocks (windows)、shadowsocks(android)、Shadowrocket(ios)的掃碼和URL導入鏈接</sys:String>
<sys:String x:Key="TextBlockClientPromptSS">提醒: 電腦客戶端Shadowsocks (windows)與手機客戶端shadowsocks(android)、Shadowrocket(ios)的導入格式不兼容,請選擇相應格式。</sys:String>
<sys:String x:Key="RadioButtonMobileSS">手機端</sys:String>
<sys:String x:Key="RadioButtonPCSS">電腦端</sys:String>
<sys:String x:Key="TextBlockShareQRcodeMtgTgIpv4">TG格式QR</sys:String>
<sys:String x:Key="TextBlockURLMtgTgIpv4">TG格式URL(雙擊複製到剪切板中)</sys:String>
<sys:String x:Key="TextBlockShareQRcodeMtgTmeIpv4">T.ME格式QR</sys:String>
<sys:String x:Key="TextBlockURLMtgTmeIpv4">T.ME格式URL(雙擊複製到剪切板中)</sys:String>
<!--以下為程序內的-->
<sys:String x:Key="MessageBoxShow_ErrorHostPortUserNotEmpty">主機地址、主機端口、用戶名為必填項,不能為空!!</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorHostPasswordNotEmpty">登錄密碼為必填項,不能為空!!</sys:String>

View File

@ -224,6 +224,8 @@ namespace ProxySU
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString();
//传递混淆方式(VMESS TCP Path方式所用)
MainWindow.ReceiveConfigurationParameters[5] = "http";
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString();
//处理伪装网站域名中的前缀

Binary file not shown.

View File

@ -2,8 +2,8 @@
[v2ray的TLS流量可被简单特征码匹配精准识别](https://github.com/v2ray/discussion/issues/704)
# ProxySU
V2ray, Trojan, NaiveProxy, Trojan-Go, ShadowsocksR(SSR),Shadowsocks-libev and Plugins,BBR install tools for windows。
V2rayTrojanNaiveProxy, Trojan-Go, ShadowsocksR(SSR),Shadowsocks-libev及相关插件 一键安装工具。
V2ray, Trojan, NaiveProxy, Trojan-Go, ShadowsocksR(SSR),Shadowsocks-libev and Plugins,MTProto+TLS,BBR install tools for windows。
V2rayTrojanNaiveProxy, Trojan-Go, ShadowsocksR(SSR),Shadowsocks-libev及相关插件,MTProto+TLS 一键安装工具。
BBR一键开启仅支持CentOS8/Debian9/10/Ubuntu18.04及以上),支持语言:English、简体中文、正体繁体中文。
编译环境Visual Studio 2017 使用WPF界面。可一键安装V2ray、Trojan、NaiveProxyTrojan-Go,ShadowsocksR(SSR),Shadowsocks-libev and Plugins 后续还会再添加其他。
@ -60,6 +60,9 @@ ProxySU在开发过程中一般都是在vultr的vps中测试测试系统
* SS+obfs+http+Web
* SS+obfs+TLS+Web
##### MTProto+TLS电报代理一键安装
* MTProto+TLS
##### 支持的VPS系统为
* CentOS 7/8
* Debian 8/9/10 (推荐 9)
@ -140,6 +143,7 @@ Let's Encrypt证书申请频率的限制
* 选择NaiveProxy先安装Caddy2,方法源自[Caddy官方文档](https://caddyserver.com/docs/download)。再用自编译的Caddy2(带forward_proxy插件)替换原来的Caddy运行文件。自编译Caddy2文件方法源自[NaiveProxy官方文档](https://github.com/klzgrad/naiveproxy#setup)。
* 选择SSR+TLS+Caddy模式则调用本项目内的ssr.sh安装 `curl -o /tmp/ssr.sh https://raw.githubusercontent.com/proxysu/shellscript/master/ssr/ssr.sh` `yes | bash /tmp/ssr.sh -f` 安装SSR。
* 选择Shadowsocks-libev与插件模式则调用本项目内的ss-install.sh安装`curl -o /tmp/install.sh https://raw.githubusercontent.com/proxysu/shellscript/master/ss/ss-install.sh` `yes | bash /tmp/install.sh`
* 先择MTProto+TLS模式则调用本项目内的mtg_install.sh安装`curl -o /tmp/mtg_install.sh https://raw.githubusercontent.com/proxysu/shellscript/master/MTProto/mtg_install.sh` `yes | bash /tmp/mtg_install.sh`
3. 根据选择读取相应配置模板,调用[Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)生成相应配置文件,并上传到服务器。所有模板及配置文件 [在这里](https://github.com/proxysu/windows/tree/master/TemplateConfg)
4. 如果使用WebSocket+TLS+Web/http2+TLS+Web/Trojan+TLS+Web/Trojan-go+TLS+Web/SSR+TLS+Caddy/SS+WebSocket+TLS+Caddy/SS+obfs+http+Web/SS+obfs+TLS+Web 模式则安装Caddy2,方法源自[Caddy官方文档](https://caddyserver.com/docs/download)。
5. 如果使用Http2/tcp+TLS/WebSocket+TLS/Trojan+TLS+Web/Trojan-go+TLS+Web/SS+QUIC模式则调用 `curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | INSTALLONLINE=1 sh` 安装acme.sh使用acme.sh申请证书.
@ -167,6 +171,10 @@ Let's Encrypt证书申请频率的限制
[Shadowsocks官方文档](https://shadowsocks.org/)
[teddysun大佬的shadowsocks-libev.sh一键脚本](https://github.com/teddysun/shadowsocks_install/blob/master/shadowsocks-libev.sh)
* 注MTProto+TLS安装与配置文件主要参考自
[MTProto go语言版](https://github.com/9seconds/mtg/tree/master)
## License
[(GPL-V3)](https://raw.githubusercontent.com/proxysu/windows/master/LICENSE)

View File

@ -1,13 +1,13 @@
{
"server":"",
"server_port":null,
"password":"",
"timeout":300,
"user":"nobody",
"method":"",
"fast_open":false,
"nameserver":"1.0.0.1",
"mode":"tcp_and_udp",
"plugin":"",
"plugin_opts":""
"server": "",
"server_port": null,
"password": "",
"timeout": 300,
"user": "nobody",
"method": "",
"fast_open": false,
"nameserver": "1.0.0.1",
"mode": "tcp",
"plugin": "",
"plugin_opts": ""
}