1
0
Fork 0
mirror of https://github.com/proxysu/ProxySU.git synced 2025-04-01 21:06:18 +03:00

添加SS及插件一键安装,进度条显示百分比

This commit is contained in:
ProxySU 2020-09-23 21:19:02 +08:00
parent ce8b242bfe
commit 8a213cc058
15 changed files with 4549 additions and 960 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.1.0" Height="625" Width="530">
Title="ProxySU - v2.2.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>
@ -49,352 +49,443 @@
<TextBlock x:Name="TextBlockNewVersionDown" Text="{DynamicResource TextBlockNewVersionDown}" Grid.Column="1" Grid.ColumnSpan="1" Margin="3" Visibility="Hidden"></TextBlock>
<Button x:Name="ButtonUpgradeProxySU" Content="{DynamicResource ButtonUpgradeProxySU}" Grid.Column="2" Margin="3" Visibility="Hidden" Click="ButtonUpgradeProxySU_Click"></Button>
<TextBlock Grid.Column="3" Text="{DynamicResource MainWindowsLanguage}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5"></TextBlock>
<ComboBox x:Name="ComboBoxLanguage" Grid.Column="4" Height="25" Width="80" SelectionChanged="ComboBoxLanguage_SelectionChanged"></ComboBox>
<ComboBox x:Name="ComboBoxLanguage" Grid.Column="4" Height="20" Width="80" SelectionChanged="ComboBoxLanguage_SelectionChanged"></ComboBox>
</Grid>
<TabControl Grid.Row="1">
<!--<TabItem Header="V2ray配置生成器" Width="110" Height="30">
<Grid>
</Grid>
</TabItem>-->
<TabItem Header="{DynamicResource TabItemHeaderAppDeployment}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="80"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30" ></RowDefinition>
<RowDefinition ></RowDefinition>
<RowDefinition ></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockHostName}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="0" Grid.Row="0"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockHostPart}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="2" Grid.Row="0"></TextBlock>
<TextBox x:Name="TextBoxHost" Text="" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxHostNamePrompt}" Margin="5" Grid.Column="1" Grid.Row="0"></TextBox>
<TextBox x:Name="TextBoxPort" CommandManager.PreviewExecuted="TextBoxPort_PreviewExecuted" Text="22" Margin="5" Grid.Column="3" Grid.Row="0" PreviewTextInput="TextBoxPort_PreviewTextInput"/>
<TextBlock Text="{DynamicResource TextBlockHostUser}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="0" Grid.Row="1"></TextBlock>
<TextBlock x:Name="TextBlockPassword" Text="{DynamicResource TextBlockHostPassword}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="2" Grid.Row="1"></TextBlock>
<TextBox x:Name="TextBoxUserName" Text="root" Margin="5" Grid.Column="1" Grid.Row="1"></TextBox>
<PasswordBox x:Name="PasswordBoxHostPassword" Password="" Margin="5" Grid.Column="3" Grid.Row="1"></PasswordBox>
<RadioButton x:Name="RadioButtonPasswordLogin" GroupName="CertIsYesNo" Content="密码登录" Visibility="Hidden" Grid.Column="0" Grid.Row="2" Checked="RadioButtonPasswordLogin_Checked"></RadioButton>
<RadioButton x:Name="RadioButtonCertLogin" GroupName="CertIsYesNo" Content="密钥登录" Visibility="Collapsed" Grid.Column="1" Grid.Row="2" Checked="RadioButtonCertLogin_Checked"></RadioButton>
<Button x:Name="ButtonOpenFileDialog" Content="浏览..." Visibility="Collapsed" Margin="8" Grid.Column="2" Grid.Row="2" Click="ButtonOpenFileDialog_Click"></Button>
<TextBox x:Name="TextBoxCertFilePath" Text="" Style="{StaticResource TitleText}" Tag="密钥文件存放路径(不可为空)" Visibility="Collapsed" Margin="10" Grid.Column="3" Grid.Row="2"></TextBox>
<!--代理设置-->
<Grid Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="4" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<RadioButton x:Name="RadioButtonNoProxy" GroupName="ProxyIsYesNo" Content="无代理" Grid.Column="0" Grid.Row="0" Checked="RadioButtonNoProxy_Checked" Unchecked="RadioButtonNoProxy_Unchecked"/>
<RadioButton x:Name="RadioButtonHttp" GroupName="ProxyIsYesNo" Content="Http" Grid.Column="1" Grid.Row="0"/>
<RadioButton x:Name="RadioButtonSocks5" GroupName="ProxyIsYesNo" Content="Socks5" Grid.Column="2" Grid.Row="0"/>
<RadioButton x:Name="RadioButtonSocks4" GroupName="ProxyIsYesNo" Content="Socks4" Grid.Column="3" Grid.Row="0" />
</Grid>
<TextBlock x:Name="TextBlockProxyHost" IsEnabled="False" Text="代理地址" HorizontalAlignment="Left" Margin="5,10,0,5" Grid.Column="0" Grid.Row="4" Visibility="Collapsed"/>
<TextBlock x:Name="TextBlockProxyPort" IsEnabled="False" Text="端口" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="5" Grid.Column="2" Grid.Row="4" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxProxyHost" IsEnabled="False" Text="127.0.0.1" Margin="5" Grid.Column="1" Grid.Row="4" Visibility="Collapsed"></TextBox>
<TextBox x:Name="TextBoxProxyPort" IsEnabled="False" CommandManager.PreviewExecuted="TextBoxPort_PreviewExecuted" Text="1080" Margin="5" Grid.Column="3" Grid.Row="4" PreviewTextInput="TextBoxPort_PreviewTextInput" Visibility="Collapsed"/>
<!--代理用户名密码设置-->
<RadioButton x:Name="RadioButtonProxyNoLogin" Content="不需登录" GroupName="proxyYesNOLogin" Grid.Column="0" Grid.Row="5" Checked="RadioButtonProxyNoLogin_Checked" Visibility="Collapsed"></RadioButton>
<RadioButton x:Name="RadiobuttonProxyYesLogin" Content="需要登录" GroupName="proxyYesNOLogin" Grid.Column="1" Grid.Row="5" Checked="RadiobuttonProxyYesLogin_Checked" Visibility="Collapsed"></RadioButton>
<TextBlock x:Name="TextBlockProxyUser" IsEnabled="False" Text="用户名:" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="5" Grid.Column="0" Grid.Row="6" Visibility="Collapsed"></TextBlock>
<TextBlock x:Name="TextBlockProxyPassword" IsEnabled="False" Text="密码:" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="5" Grid.Column="2" Grid.Row="6" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxProxyUserName" IsEnabled="False" Text="" Margin="5" Grid.Column="1" Grid.Row="6" Visibility="Collapsed"></TextBox>
<PasswordBox x:Name="PasswordBoxProxyPassword" IsEnabled="False" Password="" Margin="5" Grid.Column="3" Grid.Row="6" Visibility="Collapsed"></PasswordBox>
<!--<StatusBar x:Name="StatusBarStatusMonitoring" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="4"></StatusBar>-->
<TextBlock x:Name="TextBlockSetUpProcessing" Text="{DynamicResource TextBlockSetUpProcessing}" Foreground="Blue" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="4"></TextBlock>
<ProgressBar x:Name="ProgressBarSetUpProcessing" Minimum="0" Maximum="100" Value="0" IsIndeterminate="False" Margin="7" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="4"></ProgressBar>
<TextBox x:Name="TextBoxMonitorCommandResults" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="4" Grid.RowSpan="5" Margin="30,0,30,10"></TextBox>
<TabControl Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="4" Grid.RowSpan="3">
<TabItem Header="V2Ray" Width="80" Height="30">
<Grid>
<Grid Grid.Row="1">
<TabControl>
<TabItem Header="{DynamicResource TabItemHeaderAppDeployment}" Width="110" Height="30">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="1.3*"></RowDefinition>
<RowDefinition Height="1.8*"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="2*"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="70"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition Width="110"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{DynamicResource TextBlockHostName}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="0" ></TextBlock>
<TextBox x:Name="TextBoxHost" Text="" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxHostNamePrompt}" Margin="3" Grid.Column="1" VerticalAlignment="Center"></TextBox>
<TextBlock Text="{DynamicResource TextBlockHostPart}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="2"></TextBlock>
<TextBox x:Name="TextBoxPort" CommandManager.PreviewExecuted="TextBoxPort_PreviewExecuted" Text="22" Margin="3" Grid.Column="3" PreviewTextInput="TextBoxPort_PreviewTextInput" VerticalAlignment="Center"/>
<RadioButton x:Name="RadioButtonPasswordLogin" GroupName="CertIsYesNo" Content="{DynamicResource RadioButtonPasswordLogin}" Grid.Column="5" Checked="RadioButtonPasswordLogin_Checked" VerticalAlignment="Center"></RadioButton>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="70"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition Width="110"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{DynamicResource TextBlockHostUser}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3" Grid.Column="0" Grid.Row="1"></TextBlock>
<TextBox x:Name="TextBoxUserName" Text="root" Margin="3" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center"></TextBox>
<TextBlock x:Name="TextBlockPassword" Text="{DynamicResource TextBlockHostPassword}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3" Grid.Column="2" Grid.Row="1"></TextBlock>
<TextBlock x:Name="TextBlockCert" Text="{DynamicResource TextBlockHostCert}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3" Grid.Column="2" Grid.Row="1"></TextBlock>
<PasswordBox x:Name="PasswordBoxHostPassword" Password="" Margin="3" Grid.Column="3" Grid.Row="1" VerticalAlignment="Center"></PasswordBox>
<TextBox x:Name="TextBoxCertFilePath" Text="" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxKeyNotEmptyPrompt}" Margin="3" Grid.Column="3" VerticalAlignment="Center"></TextBox>
<Button x:Name="ButtonOpenFileDialog" Content="{DynamicResource ButtonOpenFileDialog}" Margin="3" Grid.Column="4" Grid.Row="2" Click="ButtonOpenFileDialog_Click"></Button>
<RadioButton x:Name="RadioButtonCertLogin" GroupName="CertIsYesNo" Content="{DynamicResource RadioButtonCertLogin}" Grid.Column="5" Checked="RadioButtonCertLogin_Checked" VerticalAlignment="Center"></RadioButton>
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75"></ColumnDefinition>
<ColumnDefinition Width="70"></ColumnDefinition>
<ColumnDefinition Width="70"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="1.2*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<RadioButton x:Name="RadioButtonNoProxy" GroupName="ProxyIsYesNo" Content="{DynamicResource RadioButtonNoProxy}" Grid.Column="0" Grid.Row="0" Checked="RadioButtonNoProxy_Checked" Unchecked="RadioButtonNoProxy_Unchecked" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<RadioButton x:Name="RadioButtonHttp" GroupName="ProxyIsYesNo" Content="Http" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<RadioButton x:Name="RadioButtonSocks5" GroupName="ProxyIsYesNo" Content="Socks5" Grid.Column="2" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<RadioButton x:Name="RadioButtonSocks4" GroupName="ProxyIsYesNo" Content="Socks4" Visibility="Collapsed" Grid.Column="3" Grid.Row="0" VerticalAlignment="Center" />
<RadioButton x:Name="RadioButtonProxyNoLogin" Content="{DynamicResource RadioButtonProxyNoLogin}" GroupName="proxyYesNOLogin" Grid.Column="4" Checked="RadioButtonProxyNoLogin_Checked" VerticalAlignment="Center" ></RadioButton>
<RadioButton x:Name="RadiobuttonProxyYesLogin" Content="{DynamicResource RadiobuttonProxyYesLogin}" GroupName="proxyYesNOLogin" Grid.Column="5" Checked="RadiobuttonProxyYesLogin_Checked" VerticalAlignment="Center" ></RadioButton>
</Grid>
<Grid Grid.Row="3">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<!--<Button x:Name="ButtonGuideConfiguration" Visibility="Visible" Content="启用向导" Grid.Column="0" Grid.Row="0" Click="ButtonGuideConfiguration_Click"></Button>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="70"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="70"></ColumnDefinition>
<ColumnDefinition Width="80"></ColumnDefinition>
</Grid.ColumnDefinitions>
<!--代理设置-->
<TextBlock x:Name="TextBlockProxyHost" IsEnabled="False" Text="{DynamicResource TextBlockProxyHost}" HorizontalAlignment="Right" Margin="5,10,0,5" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" />
<TextBox x:Name="TextBoxProxyHost" IsEnabled="False" Text="127.0.0.1" Margin="3" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center" ></TextBox>
<TextBlock x:Name="TextBlockProxyPort" IsEnabled="False" Text="{DynamicResource TextBlockHostPart}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="2" Grid.Row="0"></TextBlock>
<TextBox x:Name="TextBoxProxyPort" IsEnabled="False" CommandManager.PreviewExecuted="TextBoxPort_PreviewExecuted" Text="1080" Margin="3" Grid.Column="3" Grid.Row="0" PreviewTextInput="TextBoxPort_PreviewTextInput" VerticalAlignment="Center" />
<!--代理用户名密码设置-->
<TextBlock x:Name="TextBlockProxyUser" IsEnabled="False" Text="{DynamicResource TextBlockHostUser}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="0" Grid.Row="1" ></TextBlock>
<TextBlock x:Name="TextBlockProxyPassword" IsEnabled="False" Text="{DynamicResource TextBlockHostPassword}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Grid.Column="2" Grid.Row="1" ></TextBlock>
<TextBox x:Name="TextBoxProxyUserName" IsEnabled="False" Text="" Margin="3" Grid.Column="1" Grid.Row="1" ></TextBox>
<PasswordBox x:Name="PasswordBoxProxyPassword" IsEnabled="False" Password="" Margin="3" Grid.Column="3" Grid.Row="1"></PasswordBox>
</Grid>
</Grid>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock x:Name="TextBlockSetUpProcessing" Text="{DynamicResource TextBlockSetUpProcessing}" Foreground="Blue" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="0"></TextBlock>
<ProgressBar x:Name="ProgressBarSetUpProcessing" Minimum="0" Maximum="100" Value="{Binding InsertBindingHere}" Margin="10,0,10,3" Grid.Row="1"></ProgressBar>
<TextBlock Text="{Binding ElementName=ProgressBarSetUpProcessing, Path=Value, StringFormat={}{0:0}%}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1"/>
<TextBox x:Name="TextBoxMonitorCommandResults" IsReadOnly="True" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" Grid.Row="2" Margin="10,0,10,3"></TextBox>
</Grid>
<Grid Grid.Row="2">
<TabControl Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="4" Grid.RowSpan="3">
<TabItem Header="V2Ray" Width="80" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<!--<Button x:Name="ButtonGuideConfiguration" Visibility="Visible" Content="启用向导" Grid.Column="0" Grid.Row="0" Click="ButtonGuideConfiguration_Click"></Button>
<TextBlock Text="通过向导生成配置文件" Visibility="Visible" Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<Button x:Name="ButtonTemplateConfiguration" Content="{DynamicResource ButtonV2RayTemplateConfiguration}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTemplateConfiguration_Click"></Button>
<!--<TextBlock Text="模板库" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<!--<Button x:Name="ButtonAdvancedConfiguration" Visibility="Visible" Content="配置编辑器" Grid.Column="2" Grid.Row="0" Click="ButtonAdvancedConfiguration_Click"></Button>
<Button x:Name="ButtonTemplateConfiguration" Content="{DynamicResource ButtonV2RayTemplateConfiguration}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTemplateConfiguration_Click"></Button>
<!--<TextBlock Text="模板库" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<!--<Button x:Name="ButtonAdvancedConfiguration" Visibility="Visible" Content="配置编辑器" Grid.Column="2" Grid.Row="0" Click="ButtonAdvancedConfiguration_Click"></Button>
<TextBlock Text="配置文件高级生成器&#x0a;(有经验用户可以使用)" Visibility="Visible" Grid.Column="2" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<!--<RadioButton x:Name="RadioButtonGuideConfiguration" Content="向导生成配置" Grid.Column="0" Grid.Row="0"></RadioButton>
<!--<RadioButton x:Name="RadioButtonGuideConfiguration" Content="向导生成配置" Grid.Column="0" Grid.Row="0"></RadioButton>
<RadioButton x:Name="RadioButtonTemplateConfiguration" Content="模板配置" Grid.Column="0" Grid.Row="1"></RadioButton>
<RadioButton x:Name="RadioButtonAdvancedConfiguration" Content="高级配置" Grid.Column="0" Grid.Row="2"></RadioButton>
<TextBox x:Name="TextBoxJsonPath" Margin="10" Grid.Column="1" Grid.Row="1"></TextBox>
<Button x:Name="ButtonSetConfiguration" Margin="6" Content="配置" Grid.Column="2" Grid.Row="2" Click="ButtonSetConfiguration_Click"></Button>-->
<Grid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</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>
<Grid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</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>
<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>
<Button x:Name="Button_Login" Content="{DynamicResource ButtonV2RayOneKeyInstall}" Margin="10" Grid.Column="0" Grid.Row="2" Click="Button_Login_Click"></Button>
<Button x:Name="ButtonUpdateV2ray" Content="{DynamicResource ButtonUpdateV2ray}" Margin="10" Grid.Column="1" Grid.Row="2" Click="ButtonUpdateV2ray_Click"></Button>
<Button x:Name="Button_canel" Content="{DynamicResource Button_canel}" Margin="10" Grid.Column="2" Grid.Row="2" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem Header="Trojan-Go" Width="80" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<!--<Button x:Name="ButtonTrojanTemplate" Content="Trojan参数设置" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanTemplate_Click"/>-->
<!--<TextBlock Text="Trojan参数设置" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<Button x:Name="ButtonTrojanGoTemplate" Content="{DynamicResource ButtonTrojanGoTemplate}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanGoTemplate_Click"/>
<Grid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockCurrentlySelectedPlan}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowPort" Text="{DynamicResource TextBlockV2RayServerPort}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowPassword" Text="UUID:" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowPath" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowCurrentlySelectedPlanDomain" Text="{DynamicResource TextBlockV2RayDomain}" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowCurrentlySelectedPlanFakeWebsite" Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="5" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlan" Text="{DynamicResource TextBlockCurrentlySelectedPlanNo}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanPort" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanPassword" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanPathSeedKey" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanDomain" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanFakeWebsite" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
</Grid>
<Button x:Name="ButtonTrojanGoSetUp" Content="{DynamicResource ButtonTrojanGoSetUp}" Margin="10" Grid.Column="0" Grid.Row="2" Click="ButtonTrojanGoSetUp_Click"/>
<Button x:Name="ButtonUpdateTrojanGo" Content="{DynamicResource ButtonUpdateTrojanGo}" Margin="10" Grid.Column="1" Grid.Row="2" Click="ButtonUpdateTrojanGo_Click"></Button>
<Button x:Name="ButtonTrojanGoCancel" Content="{DynamicResource ButtonTrojanGoCancel}" Margin="10" Grid.Column="2" Grid.Row="2" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem Header="Trojan" Width="80" 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">
<Button x:Name="Button_Login" Content="{DynamicResource ButtonV2RayOneKeyInstall}" Margin="10" Grid.Column="0" Grid.Row="2" Click="Button_Login_Click"></Button>
<Button x:Name="ButtonUpdateV2ray" Content="{DynamicResource ButtonUpdateV2ray}" Margin="10" Grid.Column="1" Grid.Row="2" Click="ButtonUpdateV2ray_Click"></Button>
<Button x:Name="Button_canel" Content="{DynamicResource Button_canel}" Margin="10" Grid.Column="2" Grid.Row="2" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem Header="Trojan-Go" Width="80" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<!--<Button x:Name="ButtonTrojanTemplate" Content="Trojan参数设置" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanTemplate_Click"/>-->
<!--<TextBlock Text="Trojan参数设置" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<Button x:Name="ButtonTrojanGoTemplate" Content="{DynamicResource ButtonTrojanGoTemplate}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanGoTemplate_Click"/>
<Grid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockCurrentlySelectedPlan}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowPort" Text="{DynamicResource TextBlockV2RayServerPort}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowPassword" Text="UUID:" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowPath" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowCurrentlySelectedPlanDomain" Text="{DynamicResource TextBlockV2RayDomain}" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoShowCurrentlySelectedPlanFakeWebsite" Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="5" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlan" Text="{DynamicResource TextBlockCurrentlySelectedPlanNo}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanPort" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanPassword" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanPathSeedKey" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanDomain" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockTrojanGoCurrentlySelectedPlanFakeWebsite" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
</Grid>
<Button x:Name="ButtonTrojanGoSetUp" Content="{DynamicResource ButtonTrojanGoSetUp}" Margin="10" Grid.Column="0" Grid.Row="2" Click="ButtonTrojanGoSetUp_Click"/>
<Button x:Name="ButtonUpdateTrojanGo" Content="{DynamicResource ButtonUpdateTrojanGo}" Margin="10" Grid.Column="1" Grid.Row="2" Click="ButtonUpdateTrojanGo_Click"></Button>
<Button x:Name="ButtonTrojanGoCancel" Content="{DynamicResource ButtonTrojanGoCancel}" Margin="10" Grid.Column="2" Grid.Row="2" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem Header="Trojan" Width="80" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockTrojanTemplateExplanation}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockTrojanServerDomain}" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxTrojanHostDomain" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxDomainPrompt}" Grid.Column="1" Grid.Row="1" Margin="3"></TextBox>
<TextBlock Text="{DynamicResource TextBlockTrojanPort}" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<!--<TextBlock Text="用户名:" Grid.Column="0" Grid.Row="2"></TextBlock>
<GroupBox Header="{DynamicResource GroupBoxHeaderParameterTrojan}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Grid.RowSpan="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockTrojanTemplateExplanation}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockTrojanServerDomain}" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxTrojanHostDomain" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxDomainPrompt}" Grid.Column="1" Grid.Row="1" Margin="3"></TextBox>
<TextBlock Text="{DynamicResource TextBlockTrojanPort}" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<!--<TextBlock Text="用户名:" Grid.Column="0" Grid.Row="2"></TextBlock>
<TextBox x:Name="TextBoxUser" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonNaiveUser" Content="随机" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonNaiveUser_Click"></Button>-->
<TextBlock Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxTrojanPassword" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonTrojanPassword" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonTrojanPassword_Click" ></Button>
<TextBlock Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxTrojanPassword" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonTrojanPassword" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonTrojanPassword_Click" ></Button>
<TextBlock Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="3" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxTrojanSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="3" Margin="3" Visibility="Collapsed"></TextBox>
<TextBlock Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="3" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxTrojanSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="3" Margin="3" Visibility="Collapsed"></TextBox>
</Grid>
</GroupBox>
<!--<Button x:Name="ButtonTrojanTemplate" Content="Trojan参数设置" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanTemplate_Click"/>-->
<!--<TextBlock Text="Trojan参数设置" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<!--<Button x:Name="ButtonTrojanGoTemplate" Content="Trojan-Go参数设置" Grid.Column="2" Grid.Row="0" Margin="5" Click="ButtonTrojanGoTemplate_Click"/>-->
<Button x:Name="ButtonTrojanSetUp" Content="{DynamicResource ButtonTrojanSetUp}" Grid.Column="0" Grid.Row="2" Margin="10" Click="ButtonTrojanSetUp_Click"/>
<Button x:Name="ButtonUpdateTrojan" Content="{DynamicResource ButtonUpdateTrojan}" Grid.Column="1" Grid.Row="2" Margin="10" Click="ButtonUpdateTrojan_Click"></Button>
<Button x:Name="ButtonTrojanCancel" Content="{DynamicResource ButtonTrojanCancel}" Grid.Column="2" Grid.Row="2" Margin="10" Click="Button_canel_Click"></Button>
</Grid>
</GroupBox>
<!--<Button x:Name="ButtonTrojanTemplate" Content="Trojan参数设置" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanTemplate_Click"/>-->
<!--<TextBlock Text="Trojan参数设置" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<!--<Button x:Name="ButtonTrojanGoTemplate" Content="Trojan-Go参数设置" Grid.Column="2" Grid.Row="0" Margin="5" Click="ButtonTrojanGoTemplate_Click"/>-->
<Button x:Name="ButtonTrojanSetUp" Content="{DynamicResource ButtonTrojanSetUp}" Grid.Column="0" Grid.Row="2" Margin="10" Click="ButtonTrojanSetUp_Click"/>
<Button x:Name="ButtonUpdateTrojan" Content="{DynamicResource ButtonUpdateTrojan}" Grid.Column="1" Grid.Row="2" Margin="10" Click="ButtonUpdateTrojan_Click"></Button>
<Button x:Name="ButtonTrojanCancel" Content="{DynamicResource ButtonTrojanCancel}" Grid.Column="2" Grid.Row="2" Margin="10" Click="Button_canel_Click"></Button>
</Grid>
</TabItem>
<TabItem x:Name="TabItemNaiveProxy" Header="NaiveProxy" Width="80" 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">
</TabItem>
<TabItem x:Name="TabItemNaiveProxy" Header="NaiveProxy" Width="80" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockNaiveProxyTemplateExplanation}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockTrojanServerDomain}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxNaiveHostDomain" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxDomainPrompt}" Grid.Column="1" Grid.Row="1" Margin="3"></TextBox>
<TextBlock Text="{DynamicResource TextBlockTrojanPort}" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockHostUser}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxNaiveUser" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonNaiveUser" Content="{DynamicResource ButtonNaiveProxyChangeUser}" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonNaiveUser_Click"></Button>
<TextBlock Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxNaivePassword" Grid.Column="1" Grid.Row="3" Margin="3"></TextBox>
<Button x:Name="ButtonNaivePassword" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="2" Grid.Row="3" Margin="2" Click="ButtonNaivePassword_Click"></Button>
<TextBlock Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="4" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxNaiveSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="4" Margin="3" Visibility="Collapsed"></TextBox>
</Grid>
</GroupBox>
<!--<Button x:Name="ButtonNaiveTemplate" Content="Naive设置" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanTemplate_Click"/>
<GroupBox Header="{DynamicResource GroupBoxHeaderParameterTrojan}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Grid.RowSpan="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockNaiveProxyTemplateExplanation}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockTrojanServerDomain}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxNaiveHostDomain" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxDomainPrompt}" Grid.Column="1" Grid.Row="1" Margin="3"></TextBox>
<TextBlock Text="{DynamicResource TextBlockTrojanPort}" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockHostUser}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxNaiveUser" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonNaiveUser" Content="{DynamicResource ButtonNaiveProxyChangeUser}" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonNaiveUser_Click"></Button>
<TextBlock Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxNaivePassword" Grid.Column="1" Grid.Row="3" Margin="3"></TextBox>
<Button x:Name="ButtonNaivePassword" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="2" Grid.Row="3" Margin="2" Click="ButtonNaivePassword_Click"></Button>
<TextBlock Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="4" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxNaiveSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="4" Margin="3" Visibility="Collapsed"></TextBox>
</Grid>
</GroupBox>
<!--<Button x:Name="ButtonNaiveTemplate" Content="Naive设置" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanTemplate_Click"/>
<TextBlock Text="Naive参数设置" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>-->
<Button x:Name="ButtonNavieSetUp" Content="{DynamicResource ButtonNavieSetUp}" Grid.ColumnSpan="1" Margin="10" Grid.Column="0" Grid.Row="2" Click="ButtonNavieSetUp_Click"/>
<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="80" 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">
<Button x:Name="ButtonNavieSetUp" Content="{DynamicResource ButtonNavieSetUp}" Grid.ColumnSpan="1" Margin="10" Grid.Column="0" Grid.Row="2" Click="ButtonNavieSetUp_Click"/>
<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>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockSSRTemplateExplanation}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockTrojanServerDomain}" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxSSRHostDomain" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxDomainPrompt}" Grid.Column="1" Grid.Row="1" Margin="3"></TextBox>
<TextBlock Text="{DynamicResource TextBlockTrojanPort}" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<!--<TextBlock Text="用户名:" Grid.Column="0" Grid.Row="2"></TextBlock>
<GroupBox Header="{DynamicResource GroupBoxHeaderParameterTrojan}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Grid.RowSpan="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.4*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockSSRTemplateExplanation}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockTrojanServerDomain}" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxSSRHostDomain" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxDomainPrompt}" Grid.Column="1" Grid.Row="1" Margin="3"></TextBox>
<TextBlock Text="{DynamicResource TextBlockTrojanPort}" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<!--<TextBlock Text="用户名:" Grid.Column="0" Grid.Row="2"></TextBlock>
<TextBox x:Name="TextBoxUser" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonNaiveUser" Content="随机" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonNaiveUser_Click"></Button>-->
<TextBlock Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxSSRPassword" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonSSRPassword" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonSSRPassword_Click" ></Button>
<TextBlock Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5"></TextBlock>
<TextBox x:Name="TextBoxSSRPassword" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<Button x:Name="ButtonSSRPassword" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="2" Grid.Row="2" Margin="2" Click="ButtonSSRPassword_Click" ></Button>
<TextBlock Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="3" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxSSRSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="3" Margin="3" Visibility="Collapsed"></TextBox>
<TextBlock Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="3" Visibility="Collapsed"></TextBlock>
<TextBox x:Name="TextBoxSSRSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="3" Margin="3" Visibility="Collapsed"></TextBox>
</Grid>
</GroupBox>
<Button x:Name="ButtonSSRSetUp" Content="{DynamicResource ButtonSSRSetUp}" Grid.Column="0" Grid.Row="2" Margin="10" Click="ButtonSSRSetUp_Click"/>
<!--<Button x:Name="ButtonUpdateTrojan" Content="{DynamicResource ButtonUpdateTrojan}" Grid.Column="1" Grid.Row="2" Margin="10" Click="ButtonUpdateTrojan_Click"></Button>-->
<Button x:Name="ButtonSSRCancel" Content="{DynamicResource ButtonTrojanCancel}" Grid.Column="2" Grid.Row="2" Margin="10" Click="Button_canel_Click"></Button>
</Grid>
</GroupBox>
</TabItem>
<TabItem Header="SS" Width="60" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<Button x:Name="ButtonSSRSetUp" Content="{DynamicResource ButtonSSRSetUp}" Grid.Column="0" Grid.Row="2" Margin="10" Click="ButtonSSRSetUp_Click"/>
<!--<Button x:Name="ButtonUpdateTrojan" Content="{DynamicResource ButtonUpdateTrojan}" Grid.Column="1" Grid.Row="2" Margin="10" Click="ButtonUpdateTrojan_Click"></Button>-->
<Button x:Name="ButtonSSRCancel" 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">
<Button x:Name="ButtonTemplateConfigurationSS" Content="{DynamicResource ButtonTemplateConfigurationSS}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTemplateConfigurationSS_Click"></Button>
<Grid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockCurrentlySelectedPlan}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
<TextBlock x:Name="TextBlockShowPortSS" Text="{DynamicResource TextBlockV2RayServerPort}" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<TextBlock x:Name="TextBlockShowUUIDSS" Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<TextBlock x:Name="TextBlockShowMethodSS" Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<TextBlock x:Name="TextBlockShowDomainSS" Text="{DynamicResource TextBlockV2RayDomain}" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<TextBlock x:Name="TextBlockShowPathSS" Text="{DynamicResource TextBlockTrojanGoWebSocketPath}" Grid.Column="0" Grid.Row="5" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<TextBlock x:Name="TextBlockShowFakeWebsiteSS" Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="5" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
<TextBlock x:Name="TextBlockCurrentlySelectedPlanSS" Text="{DynamicResource TextBlockCurrentlySelectedPlanNo}" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<TextBlock x:Name="TextBlockCurrentlySelectedPlanPortSS" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Visible"></TextBlock>
<TextBlock x:Name="TextBlockCurrentlySelectedPlanUUIDSS" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Visible"></TextBlock>
<TextBlock x:Name="TextBlockCurrentlySelectedPlanMethodSS" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Visible"></TextBlock>
<TextBlock x:Name="TextBlockCurrentlySelectedPlanDomainSS" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Visible"></TextBlock>
<TextBlock x:Name="TextBlockCurrentlySelectedPlanPathSS" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Visible"></TextBlock>
<TextBlock x:Name="TextBlockCurrentlySelectedPlanFakeWebsiteSS" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Hidden"></TextBlock>
</Grid>
<Button x:Name="Button_LoginSS" Content="{DynamicResource ButtonSetUpSS}" Margin="10" Grid.Column="0" Grid.Row="2" Click="Button_LoginSS_Click"></Button>
<!--<Button x:Name="ButtonUpdateSS" Content="{DynamicResource ButtonUpdateV2ray}" Margin="10" Grid.Column="1" Grid.Row="2" Click="ButtonUpdateV2ray_Click"></Button>-->
<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="三合一" Width="100" Height="30" Visibility="Collapsed">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
@ -433,7 +524,9 @@
<TextBlock Text="地址(域名)" Grid.Column="0" Grid.Row="2" Margin="3"></TextBlock>
<TextBox x:Name="TextBoxDomain3in1" Text="" Style="{StaticResource TitleText}" Tag="IP或域名(不可为空)" Grid.Column="1" Grid.Row="2" Margin="3"></TextBox>
<TextBlock Text="端口443" Grid.Column="2" Grid.Row="2" Margin="3"></TextBlock>
--><!--<TextBox x:Name="TextBoxPort3in1" Text="443" IsReadOnly="True" Grid.Column="3" Grid.Row="2" Margin="3"></TextBox>--><!--
-->
<!--<TextBox x:Name="TextBoxPort3in1" Text="443" IsReadOnly="True" Grid.Column="3" Grid.Row="2" Margin="3"></TextBox>
<TextBlock Text="伪装网站:" Grid.Column="3" Grid.Row="2" Margin="3"></TextBlock>
<TextBox x:Name="TextBoxSites3in1" Text="" Style="{StaticResource TitleText}" Tag="伪装网站域名(可为空)" Grid.Column="4" Grid.Row="2" Margin="3"></TextBox>
@ -464,107 +557,43 @@
</Grid>
</TabItem>-->
<TabItem Header="{DynamicResource TabItemHeaderSysTools}" Width="80" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Button x:Name="ButtonProofreadTime" Content="{DynamicResource ButtonProofreadTime}" Grid.Column="0" Grid.Row="0" Margin="5" Click="ButtonProofreadTime_Click"/>
<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>
</Grid>
</TabItem>
<!--<TabItem Header="测试面板" Visibility="Visible" Width="70" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Button x:Name="ButtonTestTrojanClientInfoWin" Content="测试监控窗口"></Button>
</Grid>
</TabItem>-->
</TabControl>
<TabItem Header="{DynamicResource TabItemHeaderSysTools}" Width="90" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Button x:Name="ButtonProofreadTime" Content="{DynamicResource ButtonProofreadTime}" Grid.Column="0" Grid.Row="0" Margin="5" Click="ButtonProofreadTime_Click"/>
<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>
</Grid>
</TabItem>
</Grid>
</TabItem>
<TabItem Header="{DynamicResource TabItemHeaderResourceTools}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</TabControl>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Button x:Name="ButtonWebBrowserHomePage" Content="{DynamicResource ButtonWebBrowserHomePage}" Grid.Column="0" Grid.Row="0" Margin="5" Click="ButtonWebBrowserHomePage_Click"></Button>
<Button x:Name="ButtonWebBrowserForward" Content="{DynamicResource ButtonWebBrowserForward}" Grid.Column="2" Grid.Row="0" Margin="5" Click="ButtonWebBrowserForward_Click"></Button>
<Button x:Name="ButtonWebBrowserBack" Content="{DynamicResource ButtonWebBrowserBack}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonWebBrowserBack_Click"/>
<TextBlock Text="{DynamicResource TextBlockWebExplain}" TextWrapping="Wrap" Grid.Column="4" Grid.Row="0" Grid.ColumnSpan="4"></TextBlock>
<!--<TextBox x:Name="TextBoxWebBrowserProxyUrl" Style="{StaticResource TitleText}" Tag="粘贴被墙的网址到这里点击 GO(下面被墙网址右击==复制快捷方式)" Grid.Column="3" Grid.Row="0" Grid.ColumnSpan="5" Margin="5"></TextBox>
<Button x:Name="ButtonWebBrowserProxyGo" Content="Go" Grid.Column="8" Grid.Row="0" Margin="5" Click="ButtonWebBrowserProxyGo_Click"></Button>-->
<WebBrowser x:Name="WebBrowserResourcesAndTools" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="9" Grid.RowSpan="13" Source="https://github.com/proxysu/windows/wiki/ResourcesAndTools" />
</Grid>
</TabItem>
<TabItem Header="关于" Width="110" Height="30" Visibility="Collapsed">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.3*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2">
</Grid>
</Grid>
</TabItem>
<TabItem Header="{DynamicResource TabItemHeaderResourceTools}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
@ -573,14 +602,62 @@
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="程序版本1.8.3" Grid.Column="0" Grid.Row="0"></TextBlock>
<Button x:Name="ButtonWebBrowserHomePage" Content="{DynamicResource ButtonWebBrowserHomePage}" Grid.Column="0" Grid.Row="0" Margin="5" Click="ButtonWebBrowserHomePage_Click"></Button>
<Button x:Name="ButtonWebBrowserForward" Content="{DynamicResource ButtonWebBrowserForward}" Grid.Column="2" Grid.Row="0" Margin="5" Click="ButtonWebBrowserForward_Click"></Button>
<Button x:Name="ButtonWebBrowserBack" Content="{DynamicResource ButtonWebBrowserBack}" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonWebBrowserBack_Click"/>
<TextBlock Text="{DynamicResource TextBlockWebExplain}" TextWrapping="Wrap" Grid.Column="4" Grid.Row="0" Grid.ColumnSpan="4"></TextBlock>
<!--<TextBox x:Name="TextBoxWebBrowserProxyUrl" Style="{StaticResource TitleText}" Tag="粘贴被墙的网址到这里点击 GO(下面被墙网址右击==复制快捷方式)" Grid.Column="3" Grid.Row="0" Grid.ColumnSpan="5" Margin="5"></TextBox>
<Button x:Name="ButtonWebBrowserProxyGo" Content="Go" Grid.Column="8" Grid.Row="0" Margin="5" Click="ButtonWebBrowserProxyGo_Click"></Button>-->
<WebBrowser x:Name="WebBrowserResourcesAndTools" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="9" Grid.RowSpan="13" Source="https://github.com/proxysu/windows/wiki/ResourcesAndTools" />
</Grid>
</Grid>
</TabItem>
</TabControl>
</TabItem>
<TabItem Header="关于" Width="110" Height="30" Visibility="Collapsed">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.3*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="程序版本1.8.3" Grid.Column="0" Grid.Row="0"></TextBlock>
</Grid>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Grid>
</Window>

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.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.2.0.0")]
[assembly: AssemblyFileVersion("2.2.0.0")]

View file

@ -64,6 +64,7 @@
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
@ -87,6 +88,9 @@
<Compile Include="ResultClientInformation.xaml.cs">
<DependentUpon>ResultClientInformation.xaml</DependentUpon>
</Compile>
<Compile Include="SSpluginWindow.xaml.cs">
<DependentUpon>SSpluginWindow.xaml</DependentUpon>
</Compile>
<Compile Include="V2RayTemplateWindow.xaml.cs">
<DependentUpon>V2RayTemplateWindow.xaml</DependentUpon>
</Compile>
@ -113,6 +117,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SSpluginWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Translations\ProxySU.zh-CN.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>

View file

@ -157,7 +157,7 @@
</Grid>
</GroupBox>
<!-- SSR+TLS+Caddy客户端配置参数 -->
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxSSRClient" Visibility="Visible" Grid.Row="0">
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxSSRClient" Visibility="Collapsed" Grid.Row="0">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.6*"></ColumnDefinition>
@ -213,6 +213,55 @@
</Grid>
</GroupBox>
<!-- SS客户端配置参数 -->
<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClientSS" Visibility="Visible" Grid.Row="0">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.6*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockServerAddress}" Grid.Column="0" Grid.Row="0" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxHostAddressSS" IsReadOnly="True" Grid.Column="1" Grid.Row="0" Margin="2" VerticalAlignment="Center"/>
<TextBlock Text="" Grid.Column="2" Grid.Row="0"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockServerPort}" Grid.Column="0" Grid.Row="1" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxPortSS" IsReadOnly="True" Grid.Column="1" Grid.Row="1" Margin="2" VerticalAlignment="Center"/>
<TextBlock Text="" Grid.Column="2" Grid.Row="1"></TextBlock>
<TextBlock Text="{DynamicResource TextBlockTrojanGoPassword}" Grid.Column="0" Grid.Row="2" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxPasswordSS" IsReadOnly="True" Grid.Column="1" Grid.Row="2" Margin="2" VerticalAlignment="Center"/>
<TextBlock Text="" Grid.Column="2" Grid.Row="2"></TextBlock>
<!--<TextBlock x:Name="TextBlockSSRUUIDextra" Text="{DynamicResource TextBlockV2RayAlterId}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxSSRUUIDextra" IsReadOnly="False" Grid.Column="1" Grid.Row="3" Margin="2"></TextBox>
<TextBlock x:Name="TextBlockSSRUUIDextraExplanation" Text="{DynamicResource TextBlockV2RayAlterIdExplain}" TextWrapping="Wrap" Grid.Column="2" Grid.Row="3"></TextBlock>-->
<TextBlock Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="3" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxEncryptionSS" IsReadOnly="True" Grid.Column="1" Grid.Row="3" Margin="2" VerticalAlignment="Center"/>
<!--<TextBlock Text="{DynamicResource TextBlockEncryptionIsAuto}" Grid.Column="2" Grid.Row="3"></TextBlock>-->
<TextBlock x:Name="TextBlockPluginNameExplainSS" Text="{DynamicResource TextBlockPluginNameExplainSS}" Grid.Column="0" Grid.Row="4" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxPluginNameExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" VerticalAlignment="Center"/>
<TextBox x:Name="TextBoxPluginNameExplainSSpc" IsReadOnly="True" Grid.Column="1" Grid.Row="4" Margin="2" Visibility="Collapsed" VerticalAlignment="Center"/>
<TextBlock Text="" Grid.Column="2" Grid.Row="4"></TextBlock>
<TextBlock x:Name="TextBlockPluginOptionExplainSS" Text="{DynamicResource TextBlockPluginOptionExplainSS}" Grid.Column="0" Grid.Row="5" Margin="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxPluginOptionExplainSS" IsReadOnly="True" Grid.Column="1" Grid.Row="5" Margin="2" VerticalAlignment="Center"/>
<TextBlock Text="" Grid.Column="2" Grid.Row="5"></TextBlock>
<TextBlock x:Name="TextBlockClientPromptSS" Text="{DynamicResource TextBlockClientPromptSS}" Foreground="Red" TextWrapping="Wrap" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" Margin="10,0,0,0"></TextBlock>
<RadioButton x:Name="RadioButtonMobile" Content="{DynamicResource RadioButtonMobileSS}" Grid.Column="1" Grid.Row="8" HorizontalAlignment="Left" VerticalAlignment="Center" Checked="RadioButtonMobile_Checked"></RadioButton>
<RadioButton x:Name="RadioButtonPC" Content="{DynamicResource RadioButtonPCSS}" Grid.Column="2" Grid.Row="8" HorizontalAlignment="Left" VerticalAlignment="Center" Checked="RadioButtonPC_Checked"></RadioButton>
</Grid>
</GroupBox>
<!--<GroupBox Header="{DynamicResource GroupBoxHeaderClientParameter}" x:Name="GroupBoxClient" Visibility="Collapsed" Grid.Row="0">
<Grid >
<Grid.ColumnDefinitions>
@ -239,7 +288,7 @@
</Grid>
</GroupBox>-->
<GroupBox Header="{DynamicResource GrouBoxHeaderUrlOrQR}" Grid.Row="1">
<GroupBox x:Name="GroupBoxClientQRandURL" Header="{DynamicResource GrouBoxHeaderUrlOrQR}" Grid.Row="1" Visibility="Visible">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
@ -251,6 +300,20 @@
<TextBox x:Name="TextBoxURL" TextWrapping="Wrap" Grid.Column="2"></TextBox>
</Grid>
</GroupBox>
<GroupBox x:Name="GroupBoxClientSSpc" Header="{DynamicResource GrouBoxHeaderUrlOrQR}" Grid.Row="1" Visibility="Collapsed">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.6*"></ColumnDefinition>
</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>
</GroupBox>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>

View file

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
@ -26,7 +27,8 @@ namespace ProxySU
/// </summary>
public partial class ResultClientInformation : Window
{
private string saveFileFolder = "";
private static string saveFileFolder = "";
private static string server = MainWindow.ReceiveConfigurationParameters[4];
public ResultClientInformation()
{
InitializeComponent();
@ -39,6 +41,7 @@ namespace ProxySU
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
GroupBoxNaiveProxyClient.Visibility = Visibility.Collapsed;
GroupBoxSSRClient.Visibility = Visibility.Collapsed;
GroupBoxClientSS.Visibility = Visibility.Collapsed;
//主机地址
TextBoxHostAddress.Text = MainWindow.ReceiveConfigurationParameters[4];
@ -293,6 +296,7 @@ namespace ProxySU
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
GroupBoxNaiveProxyClient.Visibility = Visibility.Collapsed;
GroupBoxSSRClient.Visibility = Visibility.Collapsed;
GroupBoxClientSS.Visibility = Visibility.Collapsed;
TextBoxTrojanGoWSPath.Visibility = Visibility.Hidden;
TextBlockTrojanGoWebSocketPath.Visibility = Visibility.Hidden;
@ -326,6 +330,7 @@ namespace ProxySU
GroupBoxTrojanClient.Visibility = Visibility.Visible;
GroupBoxNaiveProxyClient.Visibility = Visibility.Collapsed;
GroupBoxSSRClient.Visibility = Visibility.Collapsed;
GroupBoxClientSS.Visibility = Visibility.Collapsed;
TextBlockQrURLexplain.Text = Application.Current.FindResource("TextBlockQrURLexplainTrojan").ToString();
@ -346,6 +351,7 @@ namespace ProxySU
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
GroupBoxNaiveProxyClient.Visibility = Visibility.Visible;
GroupBoxSSRClient.Visibility = Visibility.Collapsed;
GroupBoxClientSS.Visibility = Visibility.Collapsed;
TextBlockQrURLexplain.Text = Application.Current.FindResource("TextBlockQrURLexplainNaiveProxy").ToString();
@ -361,6 +367,7 @@ namespace ProxySU
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
GroupBoxNaiveProxyClient.Visibility = Visibility.Collapsed;
GroupBoxSSRClient.Visibility = Visibility.Visible;
GroupBoxClientSS.Visibility = Visibility.Collapsed;
TextBlockQrURLexplain.Text = Application.Current.FindResource("TextBlockQrURLexplainSSR").ToString();
@ -380,6 +387,108 @@ namespace ProxySU
//CheckDir("ssr_config");
GenerateSSRShareQRcodeAndBase64Url();
}
else if (String.Equals(MainWindow.proxyType, "SS"))
{
GroupBoxV2rayClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanGoClient.Visibility = Visibility.Collapsed;
GroupBoxTrojanClient.Visibility = Visibility.Collapsed;
GroupBoxNaiveProxyClient.Visibility = Visibility.Collapsed;
GroupBoxSSRClient.Visibility = Visibility.Collapsed;
GroupBoxClientSS.Visibility = Visibility.Visible;
//主机地址
TextBoxHostAddressSS.Text = MainWindow.ReceiveConfigurationParameters[4];
//主机端口
TextBoxPortSS.Text = MainWindow.ReceiveConfigurationParameters[1];
//密码uuid
TextBoxPasswordSS.Text = MainWindow.ReceiveConfigurationParameters[2];
//加密方式
TextBoxEncryptionSS.Text = MainWindow.ReceiveConfigurationParameters[6];
//插件程序
TextBoxPluginNameExplainSS.Text = MainWindow.ReceiveConfigurationParameters[5];
//插件选项
TextBoxPluginOptionExplainSS.Text = MainWindow.ReceiveConfigurationParameters[9];
//创建ss配置文件总文件夹
CheckDir("ss_config");
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == true)
{
TextBlockPluginNameExplainSS.Visibility = Visibility.Collapsed;
TextBoxPluginNameExplainSS.Visibility = Visibility.Collapsed;
//TextBoxPluginNameExplainSSpc.Visibility = Visibility.Collapsed;
TextBlockPluginOptionExplainSS.Visibility = Visibility.Collapsed;
TextBoxPluginOptionExplainSS.Visibility = Visibility.Collapsed;
TextBlockClientPromptSS.Visibility = Visibility.Collapsed;
RadioButtonMobile.Visibility = Visibility.Collapsed;
RadioButtonPC.Visibility = Visibility.Collapsed;
TextBlockQrURLexplain.Text = Application.Current.FindResource("TextBlockQrURLexplainSS").ToString();
}
else
{
//显示插件程序与插件选项
TextBlockPluginNameExplainSS.Visibility = Visibility.Visible;
TextBoxPluginNameExplainSS.Visibility = Visibility.Visible;
TextBlockPluginOptionExplainSS.Visibility = Visibility.Visible;
TextBoxPluginOptionExplainSS.Visibility = Visibility.Visible;
TextBlockClientPromptSS.Visibility = Visibility.Visible;
RadioButtonMobile.Visibility = Visibility.Visible;
RadioButtonPC.Visibility = Visibility.Visible;
TextBlockQrURLexplain.Text = Application.Current.FindResource("TextBlockQrURLexplainSSmobile").ToString();
TextBlockQrURLexplainSSpc.Text = Application.Current.FindResource("TextBlockQrURLexplainSSpc").ToString();
//转换成PC版plugin格式
if (String.Equals(TextBoxPluginNameExplainSS.Text, "obfs-local"))
{
TextBoxPluginNameExplainSSpc.Text = @"plugins\obfs-local.exe";
}
else if (String.Equals(TextBoxPluginNameExplainSS.Text, "v2ray-plugin"))
{
TextBoxPluginNameExplainSSpc.Text = @"plugins\v2ray-plugin.exe";
}
else if (String.Equals(TextBoxPluginNameExplainSS.Text, "kcptun"))
{
TextBoxPluginNameExplainSSpc.Text = @"plugins\kcptun-client.exe";
}
else if (String.Equals(TextBoxPluginNameExplainSS.Text, "goquiet"))
{
TextBoxPluginNameExplainSSpc.Text = @"plugins\goquiet-client.exe";
}
else if (String.Equals(TextBoxPluginNameExplainSS.Text, "cloak"))
{
TextBoxPluginNameExplainSSpc.Text = @"plugins\cloak-client.exe";
}
}
GenerateShareQRcodeAndBase64UrlSS();
//选择手机端做为默认显示
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == false)
{
RadioButtonMobile.IsChecked = true;
if (String.Equals(TextBoxPluginNameExplainSS.Text, "goquiet"))
{
RadioButtonPC.IsChecked = true;
RadioButtonMobile.Visibility = Visibility.Collapsed;
TextBlockClientPromptSS.Visibility = Visibility.Collapsed;
//File.Delete($"ss_config\\{saveFileFolder}\\QR.bmp");
//File.Delete($"ss_config\\{saveFileFolder}\\url.txt");
}
else if (String.Equals(TextBoxPluginNameExplainSS.Text, "cloak"))
{
RadioButtonPC.IsChecked = true;
RadioButtonMobile.Visibility = Visibility.Collapsed;
TextBlockClientPromptSS.Visibility = Visibility.Collapsed;
//File.Delete($"ss_config\\{saveFileFolder}\\QR.bmp");
//File.Delete($"ss_config\\{saveFileFolder}\\url.txt");
}
}
}
}
#region
@ -496,7 +605,7 @@ namespace ProxySU
}
if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == false)
{
CreateQRCode(vmessUrl, "v2ray_config");
ImageShareQRcode.Source = CreateQRCode(vmessUrl, $"v2ray_config\\{saveFileFolder}\\QR.bmp");
}
@ -593,7 +702,7 @@ namespace ProxySU
sw.WriteLine(trojanUrl);
}
CreateQRCode(trojanUrl, "trojan-go_config");
ImageShareQRcode.Source = CreateQRCode(trojanUrl, $"trojan-go_config\\{saveFileFolder}\\QR.bmp");
//移动Trojan官方程序配置文件到相应目录
if (File.Exists(@"trojan-go_config\config.json"))
@ -681,7 +790,7 @@ namespace ProxySU
sw.WriteLine(trojanUrl);
}
CreateQRCode(trojanUrl, "trojan_config");
ImageShareQRcode.Source = CreateQRCode(trojanUrl, $"trojan_config\\{saveFileFolder}\\QR.bmp");
//移动Trojan官方程序配置文件到相应目录
if (File.Exists(@"trojan_config\config.json"))
@ -841,9 +950,8 @@ namespace ProxySU
using (StreamWriter sw = new StreamWriter($"ssr_config\\{saveFileFolder}\\url.txt"))
{
sw.WriteLine(ssrUrl);
}
CreateQRCode(ssrUrl, "ssr_config");
ImageShareQRcode.Source = CreateQRCode(ssrUrl, $"ssr_config\\{saveFileFolder}\\QR.bmp");
using (StreamWriter sw = new StreamWriter($"ssr_config\\{saveFileFolder}\\readme.txt"))
{
@ -895,6 +1003,180 @@ namespace ProxySU
}
}
//生成SS客户端资料
private void GenerateShareQRcodeAndBase64UrlSS()
{
//创建保存目录
string configSavePath = CreateConfigSaveDir(@"ss_config", TextBoxHostAddressSS.Text);
string ssUrl;
//生成手机端的URL(无插件时,为电脑手机通用)
if (String.Equals(TextBoxPluginNameExplainSS.Text, "goquiet")==false && String.Equals(TextBoxPluginNameExplainSS.Text, "cloak") == false)
{
ssUrl = GetSStoURL(TextBoxPluginNameExplainSS.Text);
TextBoxURL.Text = ssUrl;
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\url.txt"))
{
sw.WriteLine(ssUrl);
}
ImageShareQRcode.Source = CreateQRCode(ssUrl, $"{configSavePath}\\QR.bmp");
}
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == false)
{
//生成电脑端
ssUrl = GetSStoURL(TextBoxPluginNameExplainSSpc.Text);
TextBoxURLpcSS.Text = ssUrl;
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\url_pc.txt"))
{
sw.WriteLine(ssUrl);
}
ImageShareQRcodeSSpc.Source = CreateQRCode(ssUrl, $"{configSavePath}\\QR_pc.bmp");
}
using (StreamWriter sw = new StreamWriter($"{configSavePath}\\readme.txt"))
{
if (String.Equals(TextBoxPluginNameExplainSS.Text, "goquiet") == false && String.Equals(TextBoxPluginNameExplainSS.Text, "cloak") == false)
{
//sw.WriteLine("-----------------------------------------\n");
sw.WriteLine("QR.bmp");
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == true)
{
//***"此文件为Shadowsocks (windows)、shadowsocksAndroid、Shadowrocket(ios)扫码导入节点"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS05").ToString());
}
else
{
//***"此文件为shadowsocksAndroid、Shadowrocket(ios)扫码导入节点"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS05").ToString());
}
sw.WriteLine("-----------------------------------------\n");
sw.WriteLine("url.txt");
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == true)
{
//***"此文件为Shadowsocks (windows)、shadowsocksAndroid、Shadowrocket(ios)复制粘贴导入节点的网址"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS09").ToString());
}
else
{
//***"此文件为shadowsocksAndroid、Shadowrocket(ios)复制粘贴导入节点的网址"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS09").ToString());
}
sw.WriteLine("");
//***"shadowsocksAndroid下载网址https://github.com/shadowsocks/shadowsocks-android/releases"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS07").ToString());
//***"Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS08").ToString());
}
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == false)
{
sw.WriteLine("");
sw.WriteLine("-----------------------------------------\n");
sw.WriteLine("QR_pc.bmp");
//***"此文件为Shadowsocks (windows)扫码导入节点"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS01").ToString());
sw.WriteLine("-----------------------------------------\n");
sw.WriteLine("url_pc.txt");
//***"此文件为Shadowsocks (windows)复制粘贴导入节点的网址"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS02").ToString());
sw.WriteLine("");
}
//***"Shadowsocks(windows)下载网址https://github.com/shadowsocks/shadowsocks-windows/releases"***
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS06").ToString());
sw.WriteLine("-----------------------------------------\n");
//***"服务器通用连接配置参数"***
sw.WriteLine(Application.Current.FindResource("readmeTxtTrojanExplainLine10").ToString());
//****** 服务器地址(address): ******
sw.WriteLine(Application.Current.FindResource("TextBlockServerAddress").ToString() + $"{TextBoxHostAddressSS.Text}");
//****** 端口(port): ******
sw.WriteLine(Application.Current.FindResource("TextBlockServerPort").ToString() + $"{TextBoxPortSS.Text}");
//****** 密码: ******
sw.WriteLine(Application.Current.FindResource("TextBlockTrojanGoPassword").ToString() + $"{TextBoxPasswordSS.Text}");
//****** 加密方式: ******
sw.WriteLine(Application.Current.FindResource("TextBlockEncryption").ToString() + $"{TextBoxEncryptionSS.Text}");
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == false)
{
//****** 插件程序:: ******
sw.WriteLine(Application.Current.FindResource("TextBlockPluginNameExplainSS").ToString() + $"{TextBoxPluginNameExplainSS.Text}");
//****** 插件选项: ******
sw.WriteLine(Application.Current.FindResource("TextBlockPluginOptionExplainSS").ToString() + $"{TextBoxPluginOptionExplainSS.Text}");
sw.WriteLine("-----------------------------------------\n");
//****** 插件使用说明 ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS").ToString());
//****** ProxySU默认所有插件在Shadowsocks (windows)运行文件所在文件夹的子文件夹plugins下。 ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS01").ToString());
//****** 电脑端手动安装插件说明 ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS02").ToString());
//****** 先下载插件各个插件Windows客户端下载地址为 ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS03").ToString());
//****** Simple-obfs: https://github.com/shadowsocks/simple-obfs/releases 只下载 obfs-local.zip ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS04").ToString());
//****** V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin/releases 64位系统选择v2ray-plugin-windows-amd64-vx.x.x.tar.gz,32位系统选择v2ray-plugin-windows-386-vx.x.x.tar.gz (x为数字是版本号)******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS05").ToString());
//****** Kcptun-plugin: https://github.com/shadowsocks/kcptun/releases 64位系统选择kcptun-windows-amd64-xxxxxx.tar.gz,32位系统选择kcptun-plugin-windows-386-xxxxxx.tar.gz (x为数字是版本号)******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS06").ToString());
////****** GoQuiet-plugin: https://github.com/cbeuw/GoQuiet/releases 64位系统选择gq-client-windows-amd64-x.x.x.exe,32位系统选择gq-client-windows-386-x.x.x.exe(x为数字是版本号)******
//sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS07").ToString());
////****** Cloak-plugin: https://github.com/cbeuw/Cloak/releases 64位系统选择ck-client-windows-amd64-x.x.x.exe,32位系统选择ck-client-windows-386-x.x.x.exe(x为数字是版本号) ******
//sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS08").ToString());
//****** 在Shadowsocks (windows)运行文件所在文件夹中新建文件夹plugins将obfs-local.zip解压出的文件两个全部复到plugins中
//v2ray -plugin下载得到的文件解压出的文件复制到plugins中并重命名为v2ray-plugin.exe。
//Kcptun -plugin下载得到的文件解压出两个文件将其中的client_windows开头的文件复制到plugins中并重命名为kcptun-client.exe。
//GoQuiet-plugin下载得到的文件直接复制到plugin中并重命名为goquiet-client.exe。
//Cloak-plugin下载得到的文件直接复制到plugin中并重命名为cloak-client.exe
//******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS09").ToString());
//******安装完毕 ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSS10").ToString());
sw.WriteLine("-----------------------------------------\n");
//******手机安卓客户端插件安装说明 ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSSandroid02").ToString());
//****** 先下载插件,各个插件安卓客户端下载地址为: ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSSandroid03").ToString());
//****** Simple-obfs: https://github.com/shadowsocks/simple-obfs-android/releases 只下载 obfs-local-nightly-x.x.x.apk(x为数字是版本号) ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSSandroid04").ToString());
//****** V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin-android/releases 一般选择v2ray--universal-x.x.x.apk(x为数字是版本号)******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSSandroid05").ToString());
//****** Kcptun-plugin: https://github.com/shadowsocks/kcptun-android/releases 一般选择kcptun--universal-x.x.x.apk(x为数字是版本号)******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSSandroid06").ToString());
//******将上述apk文件传到手机安装即可 ******
sw.WriteLine(Application.Current.FindResource("readmeTxtPluginExplainSSandroid07").ToString());
}
}
}
//生成base64
private string ToBase64Encode(string text)
{
@ -907,24 +1189,24 @@ namespace ProxySU
return Convert.ToBase64String(textBytes);
}
//生成QRcoder图片
private void CreateQRCode(string varBase64,string configPath)
//生成QRcoder图片,并按给出的路径与名称保存,返回窗口显示的图片源
private BitmapSource CreateQRCode(string varBase64,string configPath)
{
//string varBase64 = varBase64;
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(varBase64, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
IntPtr myImagePtr = qrCodeImage.GetHbitmap();
BitmapSource imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(myImagePtr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
ImageShareQRcode.Source = imgsource;
//ImageShareQRcode.Source = imgsource;
//DeleteObject(myImagePtr);
qrCodeImage.Save($"{configPath}\\{saveFileFolder}\\QR.bmp");
//ImageShareQRcode.Source = @"config\v2rayN.bmp";
qrCodeImage.Save(configPath);
return imgsource;
}
//判断目录是否存在,不存在则创建
private static bool CheckDir(string folder)
private bool CheckDir(string folder)
{
try
{
@ -938,6 +1220,31 @@ namespace ProxySU
}
}
//目录已存在则生成序号递增,并返回所创建的目录路径。
private string CreateConfigSaveDir(string upperDir,string configDir)
{
try
{
//string saveFileFolderFirst = configDir;
int num = 1;
saveFileFolder = configDir;
CheckDir(upperDir);
while (Directory.Exists(upperDir + @"\" + saveFileFolder))
{
saveFileFolder = configDir + "_copy_" + num.ToString();
num++;
}
CheckDir(upperDir + @"\" + saveFileFolder);
return upperDir + @"\" + saveFileFolder;
}
catch (Exception)
{
saveFileFolder = "";
return upperDir + @"\" + saveFileFolder;
}
}
//打开文件夹
private void ButtonOpenSaveDir_Click(object sender, RoutedEventArgs e)
{
@ -971,10 +1278,16 @@ namespace ProxySU
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();
}
}
//SSR生成URL链接
public string GetSSRLinkForServer()
private string GetSSRLinkForServer()
{
string server = TextBoxSSRHostAddress.Text;
string server_port = TextBoxSSRPort.Text;
@ -1016,6 +1329,80 @@ namespace ProxySU
return "ssr://" + base64;
}
//SS生成URL链接需要给出plugin的内容用于生成手机端或电脑端的URL
public string GetSStoURL(string plugin,bool legacyUrl = true)
{
string tag = string.Empty;
string url = string.Empty;
server = TextBoxHostAddressSS.Text;
string server_port = TextBoxPortSS.Text;
string password = TextBoxPasswordSS.Text;
string method = TextBoxEncryptionSS.Text;
// plugin = TextBoxPluginNameExplainSS.Text;
string plugin_opts = TextBoxPluginOptionExplainSS.Text;
string remarks = server;
if (legacyUrl && string.IsNullOrWhiteSpace(plugin))
{
// For backwards compatiblity, if no plugin, use old url format
string parts = $"{method}:{password}@{server}:{server_port}";
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(parts));
url = base64;
}
else
{
// SIP002
string parts = $"{method}:{password}";
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(parts));
string websafeBase64 = base64.Replace('+', '-').Replace('/', '_').TrimEnd('=');
url = string.Format(
"{0}@{1}:{2}/",
websafeBase64,
FormalHostName,
server_port
);
if (!String.IsNullOrWhiteSpace(plugin))
{
string pluginPart = plugin;
if (!String.IsNullOrWhiteSpace(plugin_opts))
{
pluginPart += ";" + plugin_opts;
}
string pluginQuery = "?plugin=" + HttpUtility.UrlEncode(pluginPart, Encoding.UTF8);
url += pluginQuery;
}
}
if (!String.IsNullOrEmpty(remarks))
{
tag = $"#{HttpUtility.UrlEncode(remarks, Encoding.UTF8)}";
}
return $"ss://{url}{tag}";
}
//格式化主机名称
private string FormalHostName
{
get
{
// CheckHostName() won't do a real DNS lookup
switch (Uri.CheckHostName(server))
{
case UriHostNameType.IPv6: // Add square bracket when IPv6 (RFC3986)
return $"[{server}]";
default: // IPv4 or domain name
return server;
}
}
}
//编码安全Base64
private string EncodeUrlSafeBase64(byte[] val, bool trim)
{
if (trim)
@ -1023,10 +1410,31 @@ namespace ProxySU
else
return Convert.ToBase64String(val).Replace('+', '-').Replace('/', '_');
}
//编码安全Base64重载
private string EncodeUrlSafeBase64(string val, bool trim = true)
{
return EncodeUrlSafeBase64(Encoding.UTF8.GetBytes(val), trim);
}
private void RadioButtonMobile_Checked(object sender, RoutedEventArgs e)
{
TextBoxPluginNameExplainSS.Visibility = Visibility.Visible;
GroupBoxClientQRandURL.Visibility = Visibility.Visible;
TextBoxPluginNameExplainSSpc.Visibility = Visibility.Collapsed;
GroupBoxClientSSpc.Visibility = Visibility.Collapsed;
}
private void RadioButtonPC_Checked(object sender, RoutedEventArgs e)
{
TextBoxPluginNameExplainSS.Visibility = Visibility.Collapsed;
GroupBoxClientQRandURL.Visibility = Visibility.Collapsed;
TextBoxPluginNameExplainSSpc.Visibility = Visibility.Visible;
GroupBoxClientSSpc.Visibility = Visibility.Visible;
}
}

279
ProxySU/SSpluginWindow.xaml Normal file
View file

@ -0,0 +1,279 @@
<Window x:Class="ProxySU.SSpluginWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ProxySU"
mc:Ignorable="d"
Title="SSpluginWindow" Height="600" Width="850">
<Window.Resources>
<Style BasedOn="{StaticResource {x:Type TextBox}}"
TargetType="TextBox"
x:Key="TitleText">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Text" Value=""/>
<Condition Property="TextBox.IsFocused" Value="false"/>
</MultiTrigger.Conditions>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" BorderBrush="Gray" Margin="0">
<TextBlock x:Name="MainTextBlock" Text="{TemplateBinding TextBox.Tag}" Width="{TemplateBinding TextBox.ActualWidth}" Foreground="Gray" VerticalAlignment="Center" HorizontalAlignment="Left"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</MultiTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<GroupBox Header="{DynamicResource GroupBoxHeaderV2RayTemplates}" Grid.Row="0" Grid.RowSpan="3">
<Grid>
<TabControl x:Name="TabControlTemplate">
<TabItem Header="{DynamicResource TabItemHeaderV2RayHotPlan}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="0.3*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="1.2*"></RowDefinition>
<RowDefinition Height="1.2*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<RadioButton x:Name="RadioButtonWebSocketTLSWebFrontSSHot" Content="{DynamicResource RadioButtonWebSocketTLSWebFrontSS}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" Checked="RadioButtonUseDomainWebsocketTls_Checked"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayWebSocketTlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
<!--<RadioButton x:Name="RadioButtonHTTP2WebHot" Content="HTTP2+TLS+Web" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayHttp2TlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>-->
</Grid>
</TabItem>
<!--<TabItem Header="{DynamicResource TabItemHeaderV2RayTcpProtocol}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="1.3*"></RowDefinition>
<RowDefinition Height="1.7*"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<RadioButton x:Name="RadioButtonTCP" Content="TCP" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonTCP_Checked" VerticalAlignment="Center" HorizontalAlignment="Left"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayTcpExplain}" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonTCPhttp" Content="{DynamicResource RadioButtonV2RayTcpHttp}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonTCPhttp_Checked" VerticalAlignment="Center" HorizontalAlignment="Left" ></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayTcpHttpExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
<RadioButton x:Name="RadioButtonTCP2TLS" Content="TCP+TLS" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="3" Checked="RadioButtonTCP2TLS_Checked" VerticalAlignment="Center" HorizontalAlignment="Left" />
<TextBlock Text="{DynamicResource TextBlockV2RayTcpTlsExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
<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 TabItemHeaderV2RayPluginSS}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="1.3*"></RowDefinition>
<RowDefinition Height="1.3*"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockV2rayPluginPointSS}" Foreground="Red" TextWrapping="Wrap" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonWebSocketSS" Content="SS+WebSocket" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonNonePluginSS_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Text="{DynamicResource TextBlockV2RayWebSocketExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<!--<RadioButton x:Name="RadioButtonWebSocketTLSWebSS" Content="{DynamicResource RadioButtonWebSocketTLSWebSS}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonHTTP2_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Text="{DynamicResource TextBlockV2RayWebSocketTlsExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>-->
<RadioButton x:Name="RadioButtonWebSocketTLSWebFrontSS" Content="{DynamicResource RadioButtonWebSocketTLSWebFrontSS}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="3" Checked="RadioButtonUseDomainWebsocketTls_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayWebSocketTlsWebExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonQuicSS" Content="{DynamicResource RadioButtonQuicSS}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="4" Checked="RadioButtonUseDomainTls_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockQuicExplainSS}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<!--<TextBlock Text="{DynamicResource TextBlockV2RaySelfSignedShadowrocketExplain}" TextWrapping="Wrap" Grid.Column="4" Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center" ></TextBlock>-->
<!--<TextBlock Text="{DynamicResource TextBlockV2RayPluginPointSS}" TextWrapping="Wrap" Margin="10,0,10,0" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="5" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>-->
</Grid>
</TabItem>
<TabItem Header="{DynamicResource TabItemHeaderOtherPluginsSS}" Width="100" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="1.5*"></RowDefinition>
<RowDefinition Height="1.2*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="0*"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockGoQuietPluginPointSS}" Foreground="Red" TextWrapping="Wrap" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<RadioButton x:Name="RadioButtonKcptunPluginSS" Content="kcptun-plugin" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonNonePluginSS_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockKcptunPluginExplainSS}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonGoQuietPluginSS" Content="GoQuiet-plugin" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonUseDomainTls_Checked" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Collapsed"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockGoQuietPluginExplainSS}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<RadioButton x:Name="RadioButtonCloakPluginSS" Content="Cloak-plugin" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="3" Checked="RadioButtonUseDomainTls_Checked" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Collapsed"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockCloakPluginExplainSS}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>
<!--<TextBlock Text="{DynamicResource TextBlockV2RaySelfSignedShadowrocketExplain}" TextWrapping="Wrap" Grid.Column="4" Grid.Row="3" ></TextBlock>-->
</Grid>
</TabItem>
<TabItem Header="{DynamicResource TabItemHeaderObfsPluginSS}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockObfsPluginPointSS}" Foreground="Red" TextWrapping="Wrap" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonObfsPluginHttpWebSS" Content="{DynamicResource RadioButtonObfsPluginHttpWebSS}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonNonePluginSS_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockObfsPluginHttpWebExplainSS}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonObfsPluginHttpsWebSS" Content="{DynamicResource RadioButtonObfsPluginHttpsWebSS}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonUseDomainTls_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockObfsPluginTLShttpsWebExplainSS}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
</Grid>
</TabItem>
<TabItem Header="{DynamicResource TabItemHeaderNonePluginSS}" Width="110" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{DynamicResource TextBlockNonePluginPointSS}" Foreground="Red" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonNonePluginSS" Content="{DynamicResource RadioButtonNonePluginSS}" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="1" Checked="RadioButtonNonePluginSS_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockNonePluginExplainSS}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<!--<RadioButton x:Name="RadioButtonQuicSRTP" Content="QUIC+SRTP" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="2" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayQuicSRTPExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonQuic2uTP" Content="QUIC+uTP" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="3" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayQuicuTPExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonQuicWechatVideo" Content="QUIC+WechatVideo" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="4" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayQuicWeChatExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonQuicDTLS" Content="QUIC+DTLS 1.2" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="5" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayQuicDTLSExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="5" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
<RadioButton x:Name="RadioButtonQuicWireGuard" Content="QUIC+WireGuard" GroupName="TemplateGroup" Grid.Column="0" Grid.Row="6" Checked="RadioButtonQuicNone_Checked" HorizontalAlignment="Left" VerticalAlignment="Center"></RadioButton>
<TextBlock Text="{DynamicResource TextBlockV2RayQuicWireGuardExplain}" TextWrapping="Wrap" Grid.Column="1" Grid.Row="6" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>-->
</Grid>
</TabItem>
</TabControl>
</Grid>
</GroupBox>
<GroupBox Header="{DynamicResource GroupBoxHeaderParameterV2Ray}" Grid.Row="3" Grid.RowSpan="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock x:Name="TextBlockServerListenPortSS" Text="{DynamicResource TextBlockV2RayServerPort}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxServerListenPortSS" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="3" Margin="3"></TextBox>
<Button x:Name="ButtonServerListenPortSS" Content="{DynamicResource ButtonV2RayServerPortChange}" Grid.Column="4" Grid.Row="0" Margin="2" Click="ButtonServerListenPort_Click"></Button>
<TextBlock Text="{DynamicResource TextBlockV2RayServerPortExplain}" Grid.Column="5" Grid.ColumnSpan="2" Grid.Row="0" Margin="3"></TextBlock>
<TextBlock x:Name="TextBlockNewUUIDSS" Text="{DynamicResource TextBlockTrojanHostPassword}" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxNewUUIDSS" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" Margin="3"></TextBox>
<Button x:Name="ButtonNewUUIDSS" 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="TextBlockMethodSS" Text="{DynamicResource TextBlockEncryption}" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<ComboBox x:Name="ComboBoxEncryptionMethodInfo" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" Height="25" Margin="3,0,0,0" SelectionChanged="ComboBoxEncryptionMethodInfo_SelectionChanged"></ComboBox>
<!--<TextBox x:Name="TextBoxMethodSS" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3" Margin="3"></TextBox>-->
<!--<Button x:Name="ButtonMethodSS" Content="{DynamicResource ButtonTrojanChangePassword}" Grid.Column="4" Grid.Row="2" Margin="2" Click="ButtonQuicUUID_Click"></Button>-->
<!--<TextBlock x:Name="TextBlockMkcpUUID" Text="{DynamicResource TextBlockV2RayMkcpExplain}" TextWrapping="Wrap" Grid.Column="5" Grid.Row="2" Grid.ColumnSpan="2"></TextBlock>-->
<TextBlock x:Name="TextBlockWebSocketPathSS" Text="{DynamicResource TextBlockTrojanGoWebSocketPath}" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxWebSocketPathSS" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" Margin="3"></TextBox>
<Button x:Name="ButtonWebSocketPathSS" Content="{DynamicResource ButtonNaiveProxyChangeUser}" Grid.Column="4" Grid.Row="3" Margin="2" Click="ButtonPath_Click"></Button>
<TextBlock x:Name="TextBlockDomainSS" Text="{DynamicResource TextBlockV2RayDomain}" Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="TextBoxDomainSS" 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" ></Button>
<TextBlock x:Name="TextBlockMaskSites" Text="{DynamicResource TextBlockV2RayMaskSites}" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="1" Visibility="Hidden"></TextBlock>
<TextBox x:Name="TextBoxMaskSites" Style="{StaticResource TitleText}" Tag="{DynamicResource TextBoxV2RayMaskSitesTag}" Grid.Column="1" Grid.Row="5" Grid.ColumnSpan="3" Margin="3" Visibility="Hidden"></TextBox>
<Button x:Name="ButtondDecide" Content="{DynamicResource ButtonTrojanGoTemplateOK}" Grid.Column="1" Grid.Row="6" Margin="0" Click="ButtondDecide_Click"></Button>
<Button x:Name="ButtondCancel" Content="{DynamicResource ButtonTrojanGoTemplateCancel}" Grid.Column="3" Grid.Row="6" Margin="0" Click="ButtondCancel_Click"></Button>
<!--<Button x:Name="ButtonTestChecked" Content="测试选中状态" Grid.Column="5" Grid.Row="6" Click="ButtonTestChecked_Click"></Button>-->
</Grid>
</GroupBox>
</Grid>
</Window>

View file

@ -0,0 +1,426 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ProxySU
{
/// <summary>
/// SSpluginWindow.xaml 的交互逻辑
/// </summary>
public partial class SSpluginWindow : Window
{
public class EncryptionMethodInfo
{
public string Name { get; set; }
public string Value { get; set; }
}
public SSpluginWindow()
{
InitializeComponent();
#region chacha20-ietf-poly1305
List<EncryptionMethodInfo> methodList = new List<EncryptionMethodInfo>();
methodList.Add(new EncryptionMethodInfo { Name = "chacha20-ietf-poly1305", Value = "chacha20-ietf-poly1305" });
methodList.Add(new EncryptionMethodInfo { Name = "xchacha20-ietf-poly1305", Value = "xchacha20-ietf-poly1305" });
methodList.Add(new EncryptionMethodInfo { Name = "aes-256-gcm", Value = "aes-256-gcm" });
methodList.Add(new EncryptionMethodInfo { Name = "aes-192-gcm", Value = "aes-192-gcm" });
methodList.Add(new EncryptionMethodInfo { Name = "aes-128-gcm", Value = "aes-128-gcm" });
ComboBoxEncryptionMethodInfo.ItemsSource = methodList;
ComboBoxEncryptionMethodInfo.DisplayMemberPath = "Name";//显示出来的值
ComboBoxEncryptionMethodInfo.SelectedValuePath = "Value";//实际选中后获取的结果的值
ComboBoxEncryptionMethodInfo.SelectedIndex = 0;
DataContext = this;
#endregion
}
//取消不在当前活动选项卡中的其他所有选项卡中的所有RadioBuuton的选中状态
//代码参考网址https://blog.csdn.net/weixin_42583999/article/details/103468857
//调用UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
private void UncheckLayouts(TabItem activePage)
{
foreach (TabItem tabPage in TabControlTemplate.Items)
{
if (tabPage == activePage) continue;
Grid grid = (Grid)tabPage.Content;
foreach (UIElement element in grid.Children)
{
if (element is RadioButton)
{
RadioButton radiobutton = (element as RadioButton);
radiobutton.IsChecked = false;
}
}
}
}
//伪装网站处理
private void DisguiseURLprocessing()
{
//处理伪装网站域名中的前缀
if (TextBoxMaskSites.Text.ToString().Length >= 7)
{
string testDomain = TextBoxMaskSites.Text.Substring(0, 7);
if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://"))
{
MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/");
}
else
{
MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text;
}
}
}
private void ButtondDecide_Click(object sender, RoutedEventArgs e)
{
bool testDomain = true;
//UncheckLayouts(TabControlTemplate);
//SS 经典模式被选中
if (RadioButtonNonePluginSS.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "NonePluginSS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonNonePluginSS.Content.ToString();
}
//SS+obfs+http+web伪装模式被选中
else if (RadioButtonObfsPluginHttpWebSS.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "ObfsPluginHttpWebSS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonObfsPluginHttpWebSS.Content.ToString();
}
//SS+obfs+TLS+web模式被选中
else if (RadioButtonObfsPluginHttpsWebSS.IsChecked == true)
{
//if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true)
//{
// //****** "域名不能为空,请检查相关参数设置!" ******
// MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString());
// return;
//}
testDomain = TestDomainIsEmpty();
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "ObfsPluginHttpsWebSS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonObfsPluginHttpsWebSS.Content.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString();
}
//V2Ray-Plugin SS+WebSocket 无TLS模式被选中
else if (RadioButtonWebSocketSS.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "WebSocketSS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketSS.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[3] = TextBoxWebSocketPathSS.Text.ToString();
}
//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";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLSWebFrontSS.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[3] = TextBoxWebSocketPathSS.Text.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString();
//传递伪装网站
//MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString();
//处理伪装网站域名中的前缀
//DisguiseURLprocessing();
//if (TextBoxMaskSites.Text.ToString().Length >= 7)
//{
// string testDomain = TextBoxMaskSites.Text.Substring(0, 7);
// if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://"))
// {
// //MessageBox.Show(testDomain);
// MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/");
// }
// else
// {
// MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text;
// }
//}
}
//V2Ray-Plugin SS+QUIC模式被选中
else if (RadioButtonQuicSS.IsChecked == true)
{
testDomain = TestDomainIsEmpty();
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "QuicSS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicSS.Content.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString();
}
//SS+kcptun-plugin模式被选中
else if (RadioButtonKcptunPluginSS.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "KcptunPluginSS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonKcptunPluginSS.Content.ToString();
}
//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";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonGoQuietPluginSS.Content.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString();
}
//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";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonCloakPluginSS.Content.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString();
}
//传递服务端口
MainWindow.ReceiveConfigurationParameters[1] = TextBoxServerListenPortSS.Text.ToString();
//传递uuid密码
MainWindow.ReceiveConfigurationParameters[2] = TextBoxNewUUIDSS.Text.ToString();
//传递加密方式
MainWindow.ReceiveConfigurationParameters[6] = GetEncryptionMethodSS();
if (testDomain)
{
this.Close();
}
}
private void ButtondCancel_Click(object sender, RoutedEventArgs e) => Close();
#region
//无插件的界面
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;
ButtonWebSocketPathSS.Visibility = Visibility.Collapsed;
//隐藏域名
TextBlockDomainSS.Visibility = Visibility.Collapsed;
TextBoxDomainSS.Visibility = Visibility.Collapsed;
//检测域名按钮
ButtonDomain.Visibility = Visibility.Collapsed;
//隐藏伪装网站
TextBlockMaskSites.Visibility = Visibility.Collapsed;
TextBoxMaskSites.Visibility = Visibility.Collapsed;
//初始化密码
TextBoxNewUUIDSS.Text = GenerateRandomUUID();
//初始化端口
TextBoxServerListenPortSS.Text = GenerateRandomPort().ToString();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
//使用域名启用TLS 无Websocket的界面
private void RadioButtonUseDomainTls_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPortSS.Text = "443";
//隐藏Websocket Path
TextBlockWebSocketPathSS.Visibility = Visibility.Collapsed;
TextBoxWebSocketPathSS.Visibility = Visibility.Collapsed;
ButtonWebSocketPathSS.Visibility = Visibility.Collapsed;
//显示域名
TextBlockDomainSS.Visibility = Visibility.Visible;
TextBoxDomainSS.Visibility = Visibility.Visible;
//检测域名按钮
ButtonDomain.Visibility = Visibility.Collapsed;
//隐藏伪装网站
TextBlockMaskSites.Visibility = Visibility.Collapsed;
TextBoxMaskSites.Visibility = Visibility.Collapsed;
//初始化密码
TextBoxNewUUIDSS.Text = GenerateRandomUUID();
//初始化端口
//TextBoxServerListenPortSS.Text = GenerateRandomPort().ToString();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
//使用V2ray-plugin 的Websocket over https (TLS)
private void RadioButtonUseDomainWebsocketTls_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPortSS.Text = "443";
//显示Websocket Path
TextBlockWebSocketPathSS.Visibility = Visibility.Visible;
TextBoxWebSocketPathSS.Visibility = Visibility.Visible;
ButtonWebSocketPathSS.Visibility = Visibility.Visible;
//显示域名
TextBlockDomainSS.Visibility = Visibility.Visible;
TextBoxDomainSS.Visibility = Visibility.Visible;
//检测域名按钮
ButtonDomain.Visibility = Visibility.Collapsed;
//隐藏伪装网站
TextBlockMaskSites.Visibility = Visibility.Collapsed;
TextBoxMaskSites.Visibility = Visibility.Collapsed;
//初始化密码
TextBoxNewUUIDSS.Text = GenerateRandomUUID();
//初始化端口
//TextBoxServerListenPortSS.Text = GenerateRandomPort().ToString();
//初始化Websocket Path
TextBoxWebSocketPathSS.Text = GenerateRandomPath();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
#endregion
//加密方法更改后的动作
private void ComboBoxEncryptionMethodInfo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//传递加密方式
MainWindow.ReceiveConfigurationParameters[6] = GetEncryptionMethodSS();
}
//产生随机的uuid
private void ButtonNewUUID_Click(object sender, RoutedEventArgs e)
{
TextBoxNewUUIDSS.Text = GenerateRandomUUID();
}
//产生随机服务端口
private void ButtonServerListenPort_Click(object sender, RoutedEventArgs e)
{
TextBoxServerListenPortSS.Text = GenerateRandomPort().ToString();
}
//产生随机的Path
private void ButtonPath_Click(object sender, RoutedEventArgs e)
{
TextBoxWebSocketPathSS.Text = GenerateRandomPath();
}
#region
//产生随机的UUID
private string GenerateRandomUUID()
{
Guid uuid = Guid.NewGuid();
return uuid.ToString();
}
//产生随机端口
private int GenerateRandomPort()
{
Random random = new Random();
return random.Next(30001, 50000);
}
//读取加密方式
private string GetEncryptionMethodSS()
{
//string methodName;
//object methodSelected;
//methodSelected = ComboBoxEncryptionMethodInfo.SelectedValue;
//methodName = methodSelected.ToString();
//return methodName;
return ComboBoxEncryptionMethodInfo.SelectedValue.ToString();
}
//产生随机的Path
private string GenerateRandomPath()
{
Random random = new Random();
int randomSerialNum = random.Next(0, 4);
Guid uuid = Guid.NewGuid();
string[] pathArray = uuid.ToString().Split('-');
string path = pathArray[randomSerialNum];
return $"/{path}";
}
#endregion
//域名检测是否为空
private bool TestDomainIsEmpty()
{
if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true)
{
//****** "域名不能为空,请检查相关参数设置!" ******
MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString());
return false;
}
else
{
return true;
}
}
}
}

View file

@ -14,8 +14,17 @@
<sys:String x:Key="TextBlockHostName">Host:</sys:String>
<sys:String x:Key="TextBoxHostNamePrompt">IP or Domain (Not empty)</sys:String>
<sys:String x:Key="TextBlockHostPart">Port:</sys:String>
<sys:String x:Key="TextBlockHostUser">User name:</sys:String>
<sys:String x:Key="TextBlockHostUser">User:</sys:String>
<sys:String x:Key="TextBlockHostPassword">Password:</sys:String>
<sys:String x:Key="TextBlockHostCert">Key:</sys:String>
<sys:String x:Key="TextBoxKeyNotEmptyPrompt">Key file Path (Not Empty)</sys:String>
<sys:String x:Key="ButtonOpenFileDialog">Open...</sys:String>
<sys:String x:Key="RadioButtonPasswordLogin">Password Login</sys:String>
<sys:String x:Key="RadioButtonCertLogin">Key Login</sys:String>
<sys:String x:Key="RadioButtonNoProxy">No Proxy</sys:String>
<sys:String x:Key="RadioButtonProxyNoLogin">Not Login</sys:String>
<sys:String x:Key="RadiobuttonProxyYesLogin">Requires Login</sys:String>
<sys:String x:Key="TextBlockProxyHost">Proxy Addr:</sys:String>
<sys:String x:Key="TextBlockSetUpProcessing">Waiting for installation and deployment</sys:String>
<sys:String x:Key="TabItemHeaderSysTools">System Tools</sys:String>
<sys:String x:Key="ButtonV2RayTemplateConfiguration">V2Ray Templates</sys:String>
@ -47,6 +56,35 @@
<!-- 以下SSR设置参数标签页界面 -->
<sys:String x:Key="TextBlockSSRTemplateExplanation">Mode: SSR+TLS+Caddy</sys:String>
<sys:String x:Key="ButtonSSRSetUp">SSR install</sys:String>
<!-- 以下SS设置参数标签页界面 -->
<sys:String x:Key="ButtonSetUpSS">SS one-click installation</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>
<sys:String x:Key="RadioButtonNonePluginSS">SS Classic</sys:String>
<sys:String x:Key="TextBlockNonePluginExplainSS">SS classic use mode, no domain name is required, data is encrypted with high strength, and the data is recognized as unknown data. At present, the traffic is easy to be identified, and it is easy to be interfered and blocked. Use it with caution! Putting here is just a feeling and tribute!</sys:String>
<sys:String x:Key="TabItemHeaderObfsPluginSS">Simple-obfs plug-in</sys:String>
<sys:String x:Key="TextBlockObfsPluginPointSS">Tip: This is a traffic obfuscation scheme used in the early days of SS. The plug-in has not been updated for a long time and is not recommended!</sys:String>
<sys:String x:Key="RadioButtonObfsPluginHttpWebSS">SS+obfs+http+Web</sys:String>
<sys:String x:Key="TextBlockObfsPluginHttpWebExplainSS">Does not require a domain name, the data is highly encrypted, the traffic is confused as http (not the real http), and the use of Web site camouflage can enhance the anti-recognition to a certain extent! CDN is not supported.</sys:String>
<sys:String x:Key="RadioButtonObfsPluginHttpsWebSS">SS+obfs+TLS(https)+Web</sys:String>
<sys:String x:Key="TextBlockObfsPluginTLShttpsWebExplainSS">requires a domain name, the use of a domain name will greatly enhance the anti-identification, high-strength data encryption, traffic confusion as https (not real https), the use of Web site camouflage, further enhance the anti-identification! CDN is not supported.</sys:String>
<sys:String x:Key="TabItemHeaderV2RayPluginSS">V2Ray plug-in</sys:String>
<sys:String x:Key="TextBlockV2rayPluginPointSS">Reminder: ShadowRocket(ios) does not support SS+Quic mode</sys:String>
<sys:String x:Key="RadioButtonWebSocketTLSWebSS">SS+WebSocket+TLS+Caddy (Web post)</sys:String>
<sys:String x:Key="RadioButtonWebSocketTLSWebFrontSS">SS+WebSocket+TLS+Caddy (Web front)</sys:String>
<sys:String x:Key="TextBlockV2RayPluginPointSS">Tip: In the above scheme, there is no difference in the use effect between Web front and Web post. In the Web post scheme, the TLS certificate is applied for by acme.sh. After the certificate expires, acme.sh will automatically renew, but you need to manually restart SS to load the new certificate. The certificate in the web front-end solution is automatically applied for and loaded by Caddy without restarting SS.</sys:String>
<sys:String x:Key="RadioButtonQuicSS">SS+QUIC</sys:String>
<sys:String x:Key="TextBlockQuicExplainSS">V2Ray-Plugin uses QUIC protocol for transmission, and TLS encryption is mandatory. Encrypted data transmission, identified as udp traffic, was originally initiated by Google, advantages: reduced delay, multiplexing, connection migration, domain name is required,</sys:String>
<!--<sys:String x:Key="TabItemHeaderOtherPluginsSS">kcptun/GoQuiet/Cloak plugin</sys:String>-->
<sys:String x:Key="TabItemHeaderOtherPluginsSS">kcptun Plugin</sys:String>
<sys:String x:Key="TextBlockGoQuietPluginPointSS">Reminder: Shadowrocket(ios) does not support GoQuiet-plugin. shadowsocks (Android) does not support GoQuiet-plugin and Cloak-plugin plug-ins</sys:String>
<sys:String x:Key="TextBlockKcptunPluginExplainSS">KCP is a fast and reliable protocol. It can waste 10%-20% of bandwidth than TCP in exchange for a 30%-40% reduction in average latency and a three-fold reduction in maximum latency The transmission effect. Use UDP protocol for transmission, high-strength data encryption, transmission of the same content, kcp generally consumes more traffic than TCP, and will greatly increase the network speed under lines with high packet loss rates, and may be restricted by QOS at individual operators .</sys:String>
<sys:String x:Key="TextBlockGoQuietPluginExplainSS">The basic principle is to simulate TLS traffic while disguising the server as a normal web server. This confusion is not the first: simple-obfs and ShadowsocksRs tls1.2_ticket_auth mode proves this. It works. This plug-in improves the existing methods, and its goal is to make large-scale blockade of HTTPS servers (even IP segments) the only effective way to block SS</sys:String>
<sys:String x:Key="TextBlockCloakPluginExplainSS">Use encryption to confuse proxy traffic into legitimate HTTPS traffic, and disguise the proxy server as a normal Web server to avoid Internet censorship. It can be seen as an upgraded version of GoQuiet above, optimizing the network connection speed, and not confusing https but real https traffic.</sys:String>
<sys:String x:Key="TextBlockPluginNameExplainSS">Plugin program:</sys:String>
<sys:String x:Key="TextBlockPluginOptionExplainSS">Plugin options:</sys:String>
<sys:String x:Key="DisplayInstallInfo_ExplainBuildSS">Use the compilation method, it will take a little longer, please be patient...</sys:String>
<!-- The following system tool tab interface -->
<sys:String x:Key="ButtonProofreadTime">Proofreading Time</sys:String>
<sys:String x:Key="ButtonClearOccupiedPorts">Release 80/443</sys:String>
@ -82,7 +120,7 @@
<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="TextBlockV2RayMkcpExplain">Enable the mKCP Seed key to enhance anti-recognition, leave it blank to disable it. Version 4.24.2 or above is required. V2rayN does not currently support</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="TextBlockV2RayDomain">Domain name:</sys:String>
<sys:String x:Key="TextBlockV2RayMaskSites">Mask a website:</sys:String>
@ -98,7 +136,7 @@
<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="TextBlockV2RayWebSocketTlsExplain">Data encrypted transmission, the transmission protocol uses WebSocket, and TLS is enabled, it will be recognized as TLS traffic. (Domain name required)</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>
<sys:String x:Key="TextBlockV2RayHttp2Explain">The transmission method based on HTTP/2. It is fully implemented in accordance with the HTTP/2 standard and requires a domain name</sys:String>
@ -113,7 +151,7 @@
<sys:String x:Key="TextBlockV2RayMkcpWireGuardExplain">Same as mKCP (without camouflage), with the addition of disguised as WireGuard packets. (Not the real WireGuard protocol)</sys:String>
<sys:String x:Key="TextBlockV2RayQuicShadowrocketExplain">Reminder: Shadowrocket currently does not support QUIC transmission mode.</sys:String>
<sys:String x:Key="RadioButtonV2RayQuicNone">QUIC (no camouflage)</sys:String>
<sys:String x:Key="TextBlockV2RayQuicNoneExplain">Data encrypted transmission, no disguise will be recognized as udp traffic, produced by Google, advantages: reduced delay, multiplexing, connection migration</sys:String>
<sys:String x:Key="TextBlockV2RayQuicNoneExplain">Encrypted data transmission, no pretense will be recognized as udp traffic, originally created by Google, advantages: reduced delay, multiplexing, connection migration</sys:String>
<sys:String x:Key="TextBlockV2RayQuicSRTPExplain">Same as QUIC (no camouflage), adding a packet disguised as SRTP, it will be recognized as video call data (such as FaceTime)</sys:String>
<sys:String x:Key="TextBlockV2RayQuicuTPExplain">Same as QUIC (without camouflage), add disguised as uTP data packet, it will be recognized as BT download data</sys:String>
<sys:String x:Key="TextBlockV2RayQuicWeChatExplain">Same as QUIC (no camouflage), adding data packets disguised as WeChat video calls</sys:String>
@ -194,7 +232,8 @@
<sys:String x:Key="DisplayInstallInfo_StartInstalling">The system environment has been tested and the installation requirements are met, and the deployment begins...</sys:String>
<sys:String x:Key="DisplayInstallInfo_OpenFireWallPort">Open the corresponding port of the firewall...</sys:String>
<sys:String x:Key="DisplayInstallInfo_StartInstallSoft">Installing</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorInstallSoftFail">The installation failed, the official script runs incorrectly!</sys:String>
<sys:String x:Key="DisplayInstallInfo_CompilingSS">Compiling, please wait patiently.............</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorInstallSoftFail">The installation failed, the script runs incorrectly!</sys:String>
<sys:String x:Key="DisplayInstallInfo_SoftInstallSuccess">The installation is successful!</sys:String>
<sys:String x:Key="DisplayInstallInfo_UploadSoftConfig">After installation, upload the configuration file......</sys:String>
<sys:String x:Key="DisplayInstallInfo_StartInstallAcmeSh">Installing acme.sh......</sys:String>
@ -268,6 +307,7 @@
<sys:String x:Key="DisplayInstallInfo_UpgradeNaiveProxy">The server is being upgraded for NaiveProxy</sys:String>
<sys:String x:Key="DisplayInstallInfo_UpgradeNaiveProxyOK">The upgrade is complete, OK!</sys:String>
<sys:String x:Key="DisplayInstallInfo_OptimizeNetwork">Optimizing network parameters...</sys:String>
<sys:String x:Key="DisplayInstallInfo_OptimizeNetworkOK">Optimize network parameters, OK!</sys:String>
<!--The following is the V2Ray client description file-->
<sys:String x:Key="readmeTxtV2RayExplainLine01">This file is the client configuration file used by the official V2Ray program. It is configured in global mode, socks5 address: 127.0.0.1:1080, http proxy address: 127.0.0.1:1081</sys:String>
<sys:String x:Key="readmeTxtV2RayExplainLine02">v2ray official website: https://www.v2ray.com/</sys:String>
@ -318,7 +358,32 @@
<sys:String x:Key="readmeTxtSSRExplainLine08">Shadowrocket(ios) download, you need to use the AppleID of the foreign region. Please Google method yourself.</sys:String>
<sys:String x:Key="readmeTxtSSRExplainLine09">This file is ShadowsocksR (windows), SSRR (Android), Shadowrocket (ios) copy and paste the URL of the imported node</sys:String>
<sys:String x:Key="readmeTxtSSRExplainLine10">Server general connection configuration parameters</sys:String>
<!--The following is the SS client description file-->
<sys:String x:Key="readmeTxtExplainLineSS01">This file is a Shadowsocks (windows) scan code import node</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS02">This file is Shadowsocks (windows) copy and paste the URL of the imported node</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS05">This file is for shadowsocks (Android), Shadowrocket (ios) scan code to import nodes</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS06">Shadowsocks (windows) download URL: https://github.com/shadowsocks/shadowsocks-windows/releases</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS07">shadowsocks (Android) download URL: https://github.com/shadowsocks/shadowsocks-android/releases</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS08">Shadowrocket(ios) download, you need to use the AppleID of the foreign region. Please Google method yourself.</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS09">This file is shadowsocks (Android), Shadowrocket (ios) copy and paste the URL of the imported node</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS10">Server general connection configuration parameters</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS">plug-in instructions</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS01">ProxySU defaults all plug-ins, under the subfolder plugins of the folder where the Shadowsocks (windows) run file is located.</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS02">Instructions for manually installing the plug-in on the computer</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS03">First download the plug-in, the download address of each plug-in Windows client is:</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS04">Simple-obfs: https://github.com/shadowsocks/simple-obfs/releases only download obfs-local.zip</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS05">V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin/releases 64-bit system selection: v2ray-plugin-windows-amd64-vx.xxtar.gz , 32-bit system selection: v2ray-plugin-windows-386-vx.xxtar.gz (x is a number, is the version number)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS06">Kcptun-plugin: https://github.com/shadowsocks/kcptun/releases 64-bit system selection: kcptun-windows-amd64-xxxxxx.tar.gz, 32-bit system selection Kcptun-plugin-windows-386-xxxxxx.tar.gz (x is a number, is the version number)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS07">GoQuiet-plugin: https://github.com/cbeuw/GoQuiet/releases 64-bit system selection: gq-client-windows-amd64-xxxexe, 32-bit system selection: gq-client-windows-386-xxxexe (x is a number, is the version number)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS08">Cloak-plugin: https://github.com/cbeuw/Cloak/releases 64-bit system selection: ck-client-windows-amd64-xxxexe, 32-bit system selection: ck-client-windows-386-xxxexe (x is a number, is the version number)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS09">In the folder where the Shadowsocks (windows) run file is located, create a new folder plugins, and copy all the files (two) extracted from obfs-local.zip to plugins, v2ray -plugin download the file, unzip the file, copy it to plugins, and rename it to: v2ray-plugin.exe. Kcptun-plugin downloads the file, unzip the two files, copy the file starting with client_windows into the plugins, and rename it to: kcptun-client.exe. The file downloaded by GoQuiet-plugin is directly copied to the plugin and renamed to: goquiet-client.exe. The file downloaded by Cloak-plugin is directly copied to the plugin and renamed to: cloak-client.exe</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS10">installation completed</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid02">Mobile Android client plug-in installation instructions</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid03">first download the plug-in, the download address of each plug-in Android client is:</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid04">Simple-obfs: https://github.com/shadowsocks/simple-obfs-android/releases only download obfs-local-nightly-xxxapk (x is a number, is the version Number)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid05">V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin-android/releases Generally choose v2ray--universal-xxxapk (x is a number, is the version number )</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid06">Kcptun-plugin: https://github.com/shadowsocks/kcptun-android/releases Generally choose kcptun--universal-xxxapk (x is a number, is the version number)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid07">Transfer the above apk file to the phone and install it!</sys:String>
<!--<sys:String x:Key="TabItemHeaderAppDeployment">Deployment</sys:String>
<sys:String x:Key="TabItemHeaderResourceTools">Resource Tools</sys:String>
<sys:String x:Key="TextBlockHostName">Host:</sys:String>
@ -369,7 +434,7 @@
<sys:String x:Key="ButtonTrojanGoTemplateOK">OK</sys:String>
<sys:String x:Key="ButtonTrojanGoTemplateCancel">Cancel</sys:String>
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray Templates</sys:String>
<sys:String x:Key="TabItemHeaderV2RayHotPlan">Hot Plan</sys:String>
<sys:String x:Key="TabItemHeaderV2RayHotPlan">Recommend</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>

View file

@ -14,8 +14,17 @@
<sys:String x:Key="TextBlockHostName">主机:</sys:String>
<sys:String x:Key="TextBoxHostNamePrompt">IP或域名(不可为空)</sys:String>
<sys:String x:Key="TextBlockHostPart">端口:</sys:String>
<sys:String x:Key="TextBlockHostUser">用户:</sys:String>
<sys:String x:Key="TextBlockHostUser">用户:</sys:String>
<sys:String x:Key="TextBlockHostPassword">密码:</sys:String>
<sys:String x:Key="TextBlockHostCert">密钥:</sys:String>
<sys:String x:Key="TextBoxKeyNotEmptyPrompt">密钥文件存放路径(不可为空)</sys:String>
<sys:String x:Key="ButtonOpenFileDialog">浏览...</sys:String>
<sys:String x:Key="RadioButtonPasswordLogin">密码登录</sys:String>
<sys:String x:Key="RadioButtonCertLogin">密钥登录</sys:String>
<sys:String x:Key="RadioButtonNoProxy">无代理</sys:String>
<sys:String x:Key="RadioButtonProxyNoLogin">不需登录</sys:String>
<sys:String x:Key="RadiobuttonProxyYesLogin">需要登录</sys:String>
<sys:String x:Key="TextBlockProxyHost">代理地址:</sys:String>
<sys:String x:Key="TextBlockSetUpProcessing">等待安装布署</sys:String>
<sys:String x:Key="TabItemHeaderSysTools">系统工具</sys:String>
<sys:String x:Key="ButtonV2RayTemplateConfiguration">V2Ray模板库</sys:String>
@ -47,6 +56,36 @@
<!-- 以下SSR设置参数标签页界面 -->
<sys:String x:Key="TextBlockSSRTemplateExplanation">模式SSR+TLS+Caddy</sys:String>
<sys:String x:Key="ButtonSSRSetUp">SSR一键安装</sys:String>
<!-- 以下SS设置参数标签页界面 -->
<sys:String x:Key="ButtonSetUpSS">SS 一键安装</sys:String>
<sys:String x:Key="ButtonTemplateConfigurationSS">SS 插件库</sys:String>
<sys:String x:Key="TabItemHeaderNonePluginSS">经典模式</sys:String>
<sys:String x:Key="TextBlockNonePluginPointSS">提示:这种模式,长时间,大流量使用,容易被阻断和干扰,不推荐使用!</sys:String>
<sys:String x:Key="RadioButtonNonePluginSS">SS 经典</sys:String>
<sys:String x:Key="TextBlockNonePluginExplainSS">SS经典使用模式无需域名数据高强度加密数据被识别为未知数据。目前流量容易被识别极易被干扰与阻断慎重使用放在这里仅仅只是一种情怀与致敬</sys:String>
<sys:String x:Key="TabItemHeaderObfsPluginSS">Simple-obfs 插件</sys:String>
<sys:String x:Key="TextBlockObfsPluginPointSS">提示这是SS早期使用的流量混淆方案插件已经长时间不再更新不推荐使用</sys:String>
<sys:String x:Key="RadioButtonObfsPluginHttpWebSS">SS+obfs+http+Web</sys:String>
<sys:String x:Key="TextBlockObfsPluginHttpWebExplainSS">无需域名数据高强度加密流量混淆为http(并非真正的http)使用Web网站伪装可在一定程度上增强抗识别不支持CDN。</sys:String>
<sys:String x:Key="RadioButtonObfsPluginHttpsWebSS">SS+obfs+TLS(https)+Web</sys:String>
<sys:String x:Key="TextBlockObfsPluginTLShttpsWebExplainSS">需要域名使用域名将很大增强抗识别数据高强度加密流量混淆为https(并非真正的https)使用Web网站伪装进一步增强抗识别不支持CDN。</sys:String>
<sys:String x:Key="TabItemHeaderV2RayPluginSS">V2Ray 插件</sys:String>
<sys:String x:Key="TextBlockV2rayPluginPointSS">提醒ShadowRocket(ios)不支持SS+Quic模式</sys:String>
<sys:String x:Key="RadioButtonWebSocketTLSWebSS">SS+WebSocket+TLS+Caddy(Web后置)</sys:String>
<sys:String x:Key="RadioButtonWebSocketTLSWebFrontSS">SS+WebSocket+TLS+Caddy(Web前置)</sys:String>
<sys:String x:Key="TextBlockV2RayPluginPointSS">提示上面方案中的Web前置与Web后置使用效果上没有差别Web后置方案TLS证书由acme.sh申请证书到期后acme.sh会自动续期但是需要手动重启SS加载新证书。而Web前置方案中的证书由Caddy自动申请并加载不需要重启SS。</sys:String>
<sys:String x:Key="RadioButtonQuicSS">SS+QUIC</sys:String>
<sys:String x:Key="TextBlockQuicExplainSS">通过V2Ray-Plugin使用QUIC协议传输强制使用TLS加密。数据加密传输被识别为udp流量最初由谷歌创始优点:减少延迟、多路复用、连接迁移,需要域名,</sys:String>
<!--<sys:String x:Key="TabItemHeaderOtherPluginsSS">kcptun/GoQuiet/Cloak 插件</sys:String>-->
<sys:String x:Key="TabItemHeaderOtherPluginsSS">kcptun 插件</sys:String>
<sys:String x:Key="TextBlockGoQuietPluginPointSS">提醒Shadowrocket(ios)不支持GoQuiet-plugin插件。shadowsocks(Android)不支持GoQuiet-plugin与Cloak-plugin插件</sys:String>
<sys:String x:Key="TextBlockKcptunPluginExplainSS">KCP是一个快速可靠协议能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%且最大延迟降低三倍的传输效果。使用UDP协议传输数据高强度加密传输同样的内容kcp 一般比 TCP 消耗更多的流量,在丢包率高的线路下将极大提高网速在个别运营商处可能会被QOS限制。</sys:String>
<sys:String x:Key="TextBlockGoQuietPluginExplainSS">基本原理为模拟TLS的流量同时将服务器伪装成一个正常的网站服务器这个混淆思路并非首创simple-obfs和ShadowsocksR的tls1.2_ticket_auth模式证明这条道是行得通的。此插件对现有的方法进行了改善其目标为让大规模封锁HTTPS服务器甚至IP段成为封锁SS的唯一有效手段</sys:String>
<sys:String x:Key="TextBlockCloakPluginExplainSS">通过加密方式将代理流量混淆为合法的HTTPS流量并将代理服务器伪装成普通的Web服务器以规避互联网审查。可以看成是上面GoQuiet升级版优化网络连接速度并且不是混淆https而是真正的https流量。</sys:String>
<sys:String x:Key="TextBlockPluginNameExplainSS">插件程序:</sys:String>
<sys:String x:Key="TextBlockPluginOptionExplainSS">插件选项:</sys:String>
<sys:String x:Key="DisplayInstallInfo_ExplainBuildSS">使用编译方式,时间稍长,请耐心等待......</sys:String>
<!-- 以下系统工具标签页界面 -->
<sys:String x:Key="ButtonProofreadTime">校对时间</sys:String>
@ -71,7 +110,7 @@
<sys:String x:Key="ButtonTrojanGoTemplateCancel">取消</sys:String>
<!-- 以下V2Ray模板库界面 -->
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray 模板库</sys:String>
<sys:String x:Key="TabItemHeaderV2RayHotPlan">热门方案</sys:String>
<sys:String x:Key="TabItemHeaderV2RayHotPlan">推荐方案</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>
@ -83,7 +122,7 @@
<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="TextBlockV2RayMkcpExplain">启用mKCP Seed密钥可增强抗识别留空则禁用,要求版本4.24.2以上,V2rayN暂不支持</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="TextBlockV2RayDomain">域名:</sys:String>
<sys:String x:Key="TextBlockV2RayMaskSites">伪装网站:</sys:String>
@ -99,7 +138,7 @@
<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流量。(需要域名)</sys:String>
<sys:String x:Key="TextBlockV2RayWebSocketTlsExplain">数据加密传输传输协议使用WebSocket启用TLS,将被识别为TLS流量。(需要域名)支持CDN。</sys:String>
<sys:String x:Key="RadioButtonV2RayWebSocketTlsSelfSigned">WebSocket+TLS(自签证书)</sys:String>
<sys:String x:Key="TextBlockV2RayWebSocketTlsSelfSignedExplain">数据加密传输传输协议使用WebSocket启用TLS,将被识别为TLS流量。(无需域名)</sys:String>
<sys:String x:Key="TextBlockV2RayHttp2Explain">基于 HTTP/2 的传输方式。它完整按照 HTTP/2 标准实现,需要域名</sys:String>
@ -114,7 +153,7 @@
<sys:String x:Key="TextBlockV2RayMkcpWireGuardExplain">同mKCP(无伪装),增加伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)</sys:String>
<sys:String x:Key="TextBlockV2RayQuicShadowrocketExplain">提醒Shadowrocket目前暂不支持QUIC的传输模式。</sys:String>
<sys:String x:Key="RadioButtonV2RayQuicNone">QUIC(无伪装)</sys:String>
<sys:String x:Key="TextBlockV2RayQuicNoneExplain">数据加密传输无伪装会被识别为udp流量谷歌出品,优点:减少延迟、多路复用、连接迁移</sys:String>
<sys:String x:Key="TextBlockV2RayQuicNoneExplain">数据加密传输无伪装会被识别为udp流量最初由谷歌创始,优点:减少延迟、多路复用、连接迁移</sys:String>
<sys:String x:Key="TextBlockV2RayQuicSRTPExplain">同QUIC(无伪装),增加伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime</sys:String>
<sys:String x:Key="TextBlockV2RayQuicuTPExplain">同QUIC(无伪装),增加伪装成 uTP 数据包,会被识别为 BT 下载数据</sys:String>
<sys:String x:Key="TextBlockV2RayQuicWeChatExplain">同QUIC(无伪装),增加伪装成微信视频通话的数据包</sys:String>
@ -149,8 +188,15 @@
<sys:String x:Key="TextBlockQrURLexplainTrojan-go">"可用于ShadowRocket (ios)、igniterAndroid、Trojan-QT5 (windows) 扫码和导入url。注意有的客户端可能不支持WebSocket模式。"</sys:String>
<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="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="MessageBoxShow_ErrorHostPortUserNotEmpty">主机地址、主机端口、用户名为必填项,不能为空!!</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorHostPasswordNotEmpty">登录密码为必填项,不能为空!!</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorHostKeyNotEmpty">密钥文件为必填项,不能为空!!</sys:String>
@ -195,7 +241,8 @@
<sys:String x:Key="DisplayInstallInfo_StartInstalling">系统环境检测完毕,符合安装要求,开始布署......</sys:String>
<sys:String x:Key="DisplayInstallInfo_OpenFireWallPort">开启防火墙相应端口......</sys:String>
<sys:String x:Key="DisplayInstallInfo_StartInstallSoft">正在安装</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorInstallSoftFail">安装失败,官方脚本运行出错!</sys:String>
<sys:String x:Key="DisplayInstallInfo_CompilingSS">编译中,请耐心等待.............</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorInstallSoftFail">安装失败,脚本运行出错!</sys:String>
<sys:String x:Key="DisplayInstallInfo_SoftInstallSuccess">安装成功!</sys:String>
<sys:String x:Key="DisplayInstallInfo_UploadSoftConfig">安装完毕,上传配置文件......</sys:String>
<sys:String x:Key="DisplayInstallInfo_StartInstallAcmeSh">正在安装acme.sh......</sys:String>
@ -269,6 +316,7 @@
<sys:String x:Key="DisplayInstallInfo_UpgradeNaiveProxy">正在为NaiveProxy升级服务端</sys:String>
<sys:String x:Key="DisplayInstallInfo_UpgradeNaiveProxyOK">升级完毕OK</sys:String>
<sys:String x:Key="DisplayInstallInfo_OptimizeNetwork">正在优化网络参数......</sys:String>
<sys:String x:Key="DisplayInstallInfo_OptimizeNetworkOK">优化网络参数,OK!</sys:String>
<!--以下为V2Ray客户端说明文件-->
<sys:String x:Key="readmeTxtV2RayExplainLine01">此文件为V2Ray官方程序所使用的客户端配置文件配置为全局模式socks5地址127.0.0.1:1080http代理地址127.0.0.1:1081</sys:String>
<sys:String x:Key="readmeTxtV2RayExplainLine02">v2ray官方网站https://www.v2ray.com/</sys:String>
@ -319,6 +367,34 @@
<sys:String x:Key="readmeTxtSSRExplainLine08">Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。</sys:String>
<sys:String x:Key="readmeTxtSSRExplainLine09">此文件为ShadowsocksR (windows)、SSRRAndroid、Shadowrocket(ios)复制粘贴导入节点的网址</sys:String>
<sys:String x:Key="readmeTxtSSRExplainLine10">服务器通用连接配置参数</sys:String>
<!--以下为SS客户端说明文件-->
<sys:String x:Key="readmeTxtExplainLineSS01">此文件为Shadowsocks (windows)扫码导入节点</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS02">此文件为Shadowsocks (windows)复制粘贴导入节点的网址</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS05">此文件为shadowsocksAndroid、Shadowrocket(ios)扫码导入节点</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS06">Shadowsocks (windows)下载网址https://github.com/shadowsocks/shadowsocks-windows/releases</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS07">shadowsocksAndroid下载网址https://github.com/shadowsocks/shadowsocks-android/releases</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS08">Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS09">此文件为shadowsocksAndroid、Shadowrocket(ios)复制粘贴导入节点的网址</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS10">服务器通用连接配置参数</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS">插件使用说明</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS01">ProxySU默认所有插件在Shadowsocks (windows)运行文件所在文件夹的子文件夹plugins下。</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS02">电脑端手动安装插件说明</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS03">先下载插件各个插件Windows客户端下载地址为</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS04">Simple-obfs: https://github.com/shadowsocks/simple-obfs/releases 只下载 obfs-local.zip</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS05">V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin/releases 64位系统选择v2ray-plugin-windows-amd64-vx.x.x.tar.gz,32位系统选择v2ray-plugin-windows-386-vx.x.x.tar.gz (x为数字是版本号)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS06">Kcptun-plugin: https://github.com/shadowsocks/kcptun/releases 64位系统选择kcptun-windows-amd64-xxxxxx.tar.gz,32位系统选择kcptun-plugin-windows-386-xxxxxx.tar.gz (x为数字是版本号)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS07">GoQuiet-plugin: https://github.com/cbeuw/GoQuiet/releases 64位系统选择gq-client-windows-amd64-x.x.x.exe,32位系统选择gq-client-windows-386-x.x.x.exe(x为数字是版本号)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS08">Cloak-plugin: https://github.com/cbeuw/Cloak/releases 64位系统选择ck-client-windows-amd64-x.x.x.exe,32位系统选择ck-client-windows-386-x.x.x.exe(x为数字是版本号)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS09">在Shadowsocks (windows)运行文件所在文件夹中新建文件夹plugins将obfs-local.zip解压出的文件两个全部复制到plugins中v2ray -plugin下载得到的文件解压出的文件复制到plugins中并重命名为v2ray-plugin.exe。Kcptun -plugin下载得到的文件解压出两个文件将其中的client_windows开头的文件复制到plugins中并重命名为kcptun-client.exe。GoQuiet-plugin下载得到的文件直接复制到plugin中并重命名为goquiet-client.exe。Cloak-plugin下载得到的文件直接复制到plugin中并重命名为cloak-client.exe</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS10">安装完毕</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid02">手机安卓客户端插件安装说明</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid03">先下载插件,各个插件安卓客户端下载地址为:</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid04">Simple-obfs: https://github.com/shadowsocks/simple-obfs-android/releases 只下载 obfs-local-nightly-x.x.x.apk(x为数字是版本号)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid05">V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin-android/releases 一般选择v2ray--universal-x.x.x.apk(x为数字是版本号)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid06">Kcptun-plugin: https://github.com/shadowsocks/kcptun-android/releases 一般选择kcptun--universal-x.x.x.apk(x为数字是版本号)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid07">将上述apk文件传到手机安装即可</sys:String>
<!--<sys:String x:Key="MsgShowTime">Now</sys:String>
<sys:String x:Key="BtnOK1">OK</sys:String>
<sys:String x:Key="HdNo1">No.</sys:String>

View file

@ -14,8 +14,17 @@
<sys:String x:Key="TextBlockHostName">主機:</sys:String>
<sys:String x:Key="TextBoxHostNamePrompt">IP或域名(不可為空)</sys:String>
<sys:String x:Key="TextBlockHostPart">端口:</sys:String>
<sys:String x:Key="TextBlockHostUser">用戶:</sys:String>
<sys:String x:Key="TextBlockHostUser">用戶:</sys:String>
<sys:String x:Key="TextBlockHostPassword">密碼:</sys:String>
<sys:String x:Key="TextBlockHostCert">密鑰::</sys:String>
<sys:String x:Key="TextBoxKeyNotEmptyPrompt">密鑰文件存放路徑(不可為空)</sys:String>
<sys:String x:Key="ButtonOpenFileDialog">瀏覽...</sys:String>
<sys:String x:Key="RadioButtonPasswordLogin">密碼登錄</sys:String>
<sys:String x:Key="RadioButtonCertLogin">密鑰登錄</sys:String>
<sys:String x:Key="RadioButtonNoProxy">無代理</sys:String>
<sys:String x:Key="RadioButtonProxyNoLogin">不需登錄</sys:String>
<sys:String x:Key="RadiobuttonProxyYesLogin">需要登錄</sys:String>
<sys:String x:Key="TextBlockProxyHost">代理地址:</sys:String>
<sys:String x:Key="TextBlockSetUpProcessing">等待安裝佈署</sys:String>
<sys:String x:Key="TabItemHeaderSysTools">系統工具</sys:String>
<sys:String x:Key="ButtonV2RayTemplateConfiguration">V2Ray模板庫</sys:String>
@ -47,6 +56,37 @@
<!-- 以下SSR设置参数标签页界面 -->
<sys:String x:Key="TextBlockSSRTemplateExplanation">模式SSR+TLS+Caddy</sys:String>
<sys:String x:Key="ButtonSSRSetUp">SSR一鍵安裝</sys:String>
<!-- 以下SS设置参数标签页界面 -->
<sys:String x:Key="ButtonSetUpSS">SS 一鍵安裝</sys:String>
<sys:String x:Key="ButtonTemplateConfigurationSS">SS 插件庫</sys:String>
<sys:String x:Key="TabItemHeaderNonePluginSS">經典模式</sys:String>
<sys:String x:Key="TextBlockNonePluginPointSS">提示:這種模式,長時間,大流量使用,容易被阻斷和乾擾,不推薦使用!</sys:String>
<sys:String x:Key="RadioButtonNonePluginSS">SS 經典</sys:String>
<sys:String x:Key="TextBlockNonePluginExplainSS">SS經典使用模式無需域名數據高強度加密數據被識別為未知數據。目前流量容易被識別極易被干擾與阻斷慎重使用放在這裡僅僅只是一種情懷與致敬</sys:String>
<sys:String x:Key="TabItemHeaderObfsPluginSS">Simple-obfs 插件</sys:String>
<sys:String x:Key="TextBlockObfsPluginPointSS">提示這是SS早期使用的流量混淆方案插件已經長時間不再更新不推薦使用</sys:String>
<sys:String x:Key="RadioButtonObfsPluginHttpWebSS">SS+obfs+http+Web</sys:String>
<sys:String x:Key="TextBlockObfsPluginHttpWebExplainSS">無需域名數據高強度加密流量混淆為http(並非真正的http)使用Web網站偽裝可在一定程度上增強抗識別不支持CDN。</sys:String>
<sys:String x:Key="RadioButtonObfsPluginHttpsWebSS">SS+obfs+TLS(https)+Web</sys:String>
<sys:String x:Key="TextBlockObfsPluginTLShttpsWebExplainSS">需要域名使用域名將很大增強抗識別數據高強度加密流量混淆為https(並非真正的https)使用Web網站偽裝進一步增強抗識別不支持CDN。</sys:String>
<sys:String x:Key="TabItemHeaderV2RayPluginSS">V2Ray 插件</sys:String>
<sys:String x:Key="TextBlockV2rayPluginPointSS">提醒ShadowRocket(ios)不支持SS+Quic模式</sys:String>
<sys:String x:Key="RadioButtonWebSocketTLSWebSS">SS+WebSocket+TLS+Caddy(Web後置)</sys:String>
<sys:String x:Key="RadioButtonWebSocketTLSWebFrontSS">SS+WebSocket+TLS+Caddy(Web前置)</sys:String>
<sys:String x:Key="TextBlockV2RayPluginPointSS">提示上面方案中的Web前置與Web後置使用效果上沒有差別Web後置方案TLS證書由acme.sh申請證書到期後 acme.sh會自動續期但是需要手動重啟SS加載新證書。而Web前置方案中的證書由Caddy自動申請並加載不需要重啟SS。</sys:String>
<sys:String x:Key="RadioButtonQuicSS">SS+QUIC</sys:String>
<sys:String x:Key="TextBlockQuicExplainSS">通過V2Ray-Plugin使用QUIC協議傳輸強制使用TLS加密。數據加密傳輸被識別為udp流量最初由谷歌創始優點:減少延遲、多路復用、連接遷移,需要域名,</sys:String>
<!--<sys:String x:Key="TabItemHeaderOtherPluginsSS">kcptun/GoQuiet/Cloak 插件</sys:String>-->
<sys:String x:Key="TabItemHeaderOtherPluginsSS">kcptun 插件</sys:String>
<sys:String x:Key="TextBlockGoQuietPluginPointSS">提醒Shadowrocket(ios)不支持GoQuiet-plugin插件。 shadowsocks(Android)不支持GoQuiet-plugin與Cloak-plugin插件</sys:String>
<sys:String x:Key="TextBlockKcptunPluginExplainSS">KCP是一個快速可靠協議能以比TCP浪費10%-20%的帶寬的代價換取平均延遲降低30%-40%且最大延遲降低三倍的傳輸效果。使用UDP協議傳輸數據高強度加密傳輸同樣的內容kcp 一般比TCP 消耗更多的流量,在丟包率高的線路下將極大提高網速在個別運營商處可能會被QOS限制。</sys:String>
<sys:String x:Key="TextBlockGoQuietPluginExplainSS">基本原理為模擬TLS的流量同時將服務器偽裝成一個正常的網站服務器這個混淆思路並非首創simple-obfs和ShadowsocksR的tls1.2_ticket_auth模式證明這條道是行得通的。此插件對現有的方法進行了改善其目標為讓大規模封鎖HTTPS服務器甚至IP段成為封鎖SS的唯一有效手段</sys:String>
<sys:String x:Key="TextBlockCloakPluginExplainSS">通過加密方式將代理流量混淆為合法的HTTPS流量並將代理服務器偽裝成普通的Web服務器以規避互聯網審查。可以看成是上面GoQuiet升級版優化網絡連接速度並且不是混淆https而是真正的https流量。</sys:String>
<sys:String x:Key="TextBlockPluginNameExplainSS">插件程序:</sys:String>
<sys:String x:Key="TextBlockPluginOptionExplainSS">插件選項:</sys:String>
<sys:String x:Key="DisplayInstallInfo_ExplainBuildSS">使用編譯方式,時間稍長,請耐心等待......</sys:String>
<!-- 以下系統工具標籤頁界面 -->
<sys:String x:Key="ButtonProofreadTime">校對時間</sys:String>
<sys:String x:Key="ButtonClearOccupiedPorts">釋放80/443端口</sys:String>
@ -70,7 +110,7 @@
<sys:String x:Key="ButtonTrojanGoTemplateCancel">取消</sys:String>
<!-- 以下V2Ray模板庫界面 -->
<sys:String x:Key="GroupBoxHeaderV2RayTemplates">V2Ray 模板庫</sys:String>
<sys:String x:Key="TabItemHeaderV2RayHotPlan">熱門方案</sys:String>
<sys:String x:Key="TabItemHeaderV2RayHotPlan">推薦方案</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>
@ -82,7 +122,7 @@
<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="TextBlockV2RayMkcpExplain">啟用mKCP Seed密鑰可增強抗識別留空則禁用,要求版本4.24.2以上,V2rayN暫不支持</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="TextBlockV2RayDomain">域名:</sys:String>
<sys:String x:Key="TextBlockV2RayMaskSites">偽裝網站:</sys:String>
@ -98,7 +138,7 @@
<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流量。 (需要域名)</sys:String>
<sys:String x:Key="TextBlockV2RayWebSocketTlsExplain">數據加密傳輸傳輸協議使用WebSocket啟用TLS,將被識別為TLS流量。 (需要域名)支持CDN。</sys:String>
<sys:String x:Key="RadioButtonV2RayWebSocketTlsSelfSigned">WebSocket+TLS(自簽證書)</sys:String>
<sys:String x:Key="TextBlockV2RayWebSocketTlsSelfSignedExplain">數據加密傳輸傳輸協議使用WebSocket啟用TLS,將被識別為TLS流量。 (無需域名)</sys:String>
<sys:String x:Key="TextBlockV2RayHttp2Explain">基於 HTTP/2 的傳輸方式。它完整​​按照 HTTP/2 標準實現,需要域名</sys:String>
@ -113,7 +153,7 @@
<sys:String x:Key="TextBlockV2RayMkcpWireGuardExplain">同mKCP(無偽裝),增加偽裝成 WireGuard 數據包。 (並不是真正的 WireGuard 協議)</sys:String>
<sys:String x:Key="TextBlockV2RayQuicShadowrocketExplain">提醒Shadowrocket目前暫不支持QUIC的傳輸模式。</sys:String>
<sys:String x:Key="RadioButtonV2RayQuicNone">QUIC(無偽裝)</sys:String>
<sys:String x:Key="TextBlockV2RayQuicNoneExplain">數據加密傳輸無偽裝會被識別為udp流量谷歌出品,優點:減少延遲、多路復用、連接遷移</sys:String>
<sys:String x:Key="TextBlockV2RayQuicNoneExplain">數據加密傳輸無偽裝會被識別為udp流量最初由谷歌創始,優點:減少延遲、多路復用、連接遷移</sys:String>
<sys:String x:Key="TextBlockV2RayQuicSRTPExplain">同QUIC(無偽裝),增加偽裝成 SRTP 數據包,會被識別為視頻通話數據(如 FaceTime</sys:String>
<sys:String x:Key="TextBlockV2RayQuicuTPExplain">同QUIC(無偽裝),增加偽裝成 uTP 數據包,會被識別為 BT 下載數據</sys:String>
<sys:String x:Key="TextBlockV2RayQuicWeChatExplain">同QUIC(無偽裝),增加偽裝成微信視頻通話的數據包</sys:String>
@ -194,7 +234,8 @@
<sys:String x:Key="DisplayInstallInfo_StartInstalling">系統環境檢測完畢,符合安裝要求,開始佈署......</sys:String>
<sys:String x:Key="DisplayInstallInfo_OpenFireWallPort">開啟防火牆相應端口......</sys:String>
<sys:String x:Key="DisplayInstallInfo_StartInstallSoft">正在安裝</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorInstallSoftFail">安裝失敗,官方腳本運行出錯!</sys:String>
<sys:String x:Key="DisplayInstallInfo_CompilingSS">編譯中,請耐心等待.............</sys:String>
<sys:String x:Key="MessageBoxShow_ErrorInstallSoftFail">安裝失敗,腳本運行出錯!</sys:String>
<sys:String x:Key="DisplayInstallInfo_SoftInstallSuccess">安裝成功!</sys:String>
<sys:String x:Key="DisplayInstallInfo_UploadSoftConfig">安裝完畢,上傳配置文件......</sys:String>
<sys:String x:Key="DisplayInstallInfo_StartInstallAcmeSh">正在安裝acme.sh......</sys:String>
@ -268,6 +309,7 @@
<sys:String x:Key="DisplayInstallInfo_UpgradeNaiveProxy">正在為NaiveProxy升級服務端</sys:String>
<sys:String x:Key="DisplayInstallInfo_UpgradeNaiveProxyOK">升級完畢OK</sys:String>
<sys:String x:Key="DisplayInstallInfo_OptimizeNetwork">正在優化網絡參數......</sys:String>
<sys:String x:Key="DisplayInstallInfo_OptimizeNetworkOK">優化網絡參數,OK!</sys:String>
<!--以下為V2Ray客戶端說明文件-->
<sys:String x:Key="readmeTxtV2RayExplainLine01">此文件為V2Ray官方程序所使用的客戶端配置文件配置為全局模式socks5地址127.0.0.1:1080http代理地址127.0.0.1:1081</sys:String>
@ -319,5 +361,30 @@
<sys:String x:Key="readmeTxtSSRExplainLine08">Shadowrocket(ios)下載,需要使用國外區的AppleID。請自行谷歌方法。</sys:String>
<sys:String x:Key="readmeTxtSSRExplainLine09">此文件為ShadowsocksR (windows)、SSRRAndroid、Shadowrocket(ios)複製粘貼導入節點的網址</sys:String>
<sys:String x:Key="readmeTxtSSRExplainLine10">服務器通用連接配置參數</sys:String>
<!--以下為SS客戶端說明文件-->
<sys:String x:Key="readmeTxtExplainLineSS01">此文件為Shadowsocks (windows)掃碼導入節點</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS02">此文件為Shadowsocks (windows)複製粘貼導入節點的網址</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS05">此文件為shadowsocksAndroid、Shadowrocket(ios)掃碼導入節點</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS06">Shadowsocks (windows)下載網址https://github.com/shadowsocks/shadowsocks-windows/releases</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS07">shadowsocksAndroid下載網址https://github.com/shadowsocks/shadowsocks-android/releases</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS08">Shadowrocket(ios)下載,需要使用國外區的AppleID。請自行谷歌方法。</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS09">此文件為shadowsocksAndroid、Shadowrocket(ios)複製粘貼導入節點的網址</sys:String>
<sys:String x:Key="readmeTxtExplainLineSS10">服務器通用連接配置參數</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS">插件使用說明</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS01">ProxySU默認所有插件在Shadowsocks (windows)運行文件所在文件夾的子文件夾plugins下。</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS02">電腦端手動安裝插件說明</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS03">先下載插件各個插件Windows客戶端下載地址為</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS04">Simple-obfs: https://github.com/shadowsocks/simple-obfs/releases 只下載 obfs-local.zip</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS05">V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin/releases 64位系統選擇v2ray-plugin-windows-amd64-vx.xxtar.gz ,32位系統選擇v2ray-plugin-windows-386-vx.xxtar.gz (x為數字是版本號)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS06">Kcptun-plugin: https://github.com/shadowsocks/kcptun/releases 64位系統選擇kcptun-windows-amd64-xxxxxx.tar.gz,32位系統選擇kcptun-plugin-windows-386-xxxxxx.tar.gz (x為數字是版本號)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS07">GoQuiet-plugin: https://github.com/cbeuw/GoQuiet/releases 64位系統選擇gq-client-windows-amd64-xxxexe,32位系統選擇 gq-client-windows-386-xxxexe(x為數字是版本號)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS08">Cloak-plugin: https://github.com/cbeuw/Cloak/releases 64位系統選擇ck-client-windows-amd64-xxxexe,32位系統選擇 ck-client-windows-386-xxxexe(x為數字是版本號)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS09">在Shadowsocks (windows)運行文件所在文件夾中新建文件夾plugins將obfs-local.zip解壓出的文件兩個全部複製到plugins中v2ray -plugin下載得到的文件解壓出的文件複製到plugins中並重命名為v2ray-plugin.exe。 Kcptun -plugin下載得到的文件解壓出兩個文件將其中的client_windows開頭的文件複製到plugins中並重命名為kcptun-client.exe。 GoQuiet-plugin下載得到的文件直接複製到plugin中並重命名為goquiet-client.exe。 Cloak-plugin下載得到的文件直接複製到plugin中並重命名為cloak-client.exe</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSS10">安裝完畢</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid02">手機安卓客戶端插件安裝說明</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid03">先下載插件,各個插件安卓客戶端下載地址為:</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid04">Simple-obfs: https://github.com/shadowsocks/simple-obfs-android/releases 只下載obfs-local-nightly-xxxapk(x為數字是版本號)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid05">V2ray-plugin: https://github.com/shadowsocks/v2ray-plugin-android/releases 一般選擇v2ray--universal-xxxapk(x為數字是版本號)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid06">Kcptun-plugin: https://github.com/shadowsocks/kcptun-android/releases 一般選擇kcptun--universal-xxxapk(x為數字是版本號)</sys:String>
<sys:String x:Key="readmeTxtPluginExplainSSandroid07">將上述apk文件傳到手機安裝即可</sys:String>
</ResourceDictionary>

View file

@ -501,8 +501,8 @@ namespace ProxySU
Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = uuid.ToString();
Random random = new Random();
int randomServerPort = random.Next(30001, 50000);
//Random random = new Random();
int randomServerPort = GetRandomPort();
TextBoxServerListenPort.Text = randomServerPort.ToString();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
@ -704,8 +704,8 @@ namespace ProxySU
uuid = Guid.NewGuid();
TextBoxQuicUUID.Text = uuid.ToString();
Random random = new Random();
int randomServerPort = random.Next(30001, 50000);
//Random random = new Random();
int randomServerPort = GetRandomPort();
TextBoxServerListenPort.Text = randomServerPort.ToString();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
@ -727,8 +727,8 @@ namespace ProxySU
//产生随机服务端口
private void ButtonServerListenPort_Click(object sender, RoutedEventArgs e)
{
Random random = new Random();
int randomServerPort = random.Next(30001, 50000);
//Random random = new Random();
int randomServerPort = GetRandomPort();
TextBoxServerListenPort.Text = randomServerPort.ToString();
}
//产生随机的Path
@ -742,7 +742,12 @@ namespace ProxySU
TextBoxPath.Text = $"/{path}";
//MessageBox.Show(path);
}
//产生随机端口
private int GetRandomPort()
{
Random random = new Random();
return random.Next(10001, 60000);
}
private void ButtonDomain_Click(object sender, RoutedEventArgs e)
{

Binary file not shown.

View file

@ -0,0 +1,5 @@
:8800 {
root * /usr/share/caddy
file_server
##sites##
}

View file

@ -0,0 +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":""
}