mirror of
https://github.com/proxysu/ProxySU.git
synced 2025-04-01 21:06:18 +03:00
添加SS及插件一键安装,进度条显示百分比
This commit is contained in:
parent
ce8b242bfe
commit
8a213cc058
15 changed files with 4549 additions and 960 deletions
|
@ -5,7 +5,7 @@
|
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ProxySU"
|
||||
mc:Ignorable="d"
|
||||
Title="ProxySU - v2.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="配置文件高级生成器
(有经验用户可以使用)" 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
|
@ -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")]
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)、shadowsocks(Android)、Shadowrocket(ios)扫码导入节点"***
|
||||
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS05").ToString());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//***"此文件为shadowsocks(Android)、Shadowrocket(ios)扫码导入节点"***
|
||||
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS05").ToString());
|
||||
}
|
||||
|
||||
sw.WriteLine("-----------------------------------------\n");
|
||||
sw.WriteLine("url.txt");
|
||||
if (String.IsNullOrEmpty(TextBoxPluginNameExplainSS.Text) == true)
|
||||
{
|
||||
//***"此文件为Shadowsocks (windows)、shadowsocks(Android)、Shadowrocket(ios)复制粘贴导入节点的网址"***
|
||||
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS09").ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
//***"此文件为shadowsocks(Android)、Shadowrocket(ios)复制粘贴导入节点的网址"***
|
||||
sw.WriteLine(Application.Current.FindResource("readmeTxtExplainLineSS09").ToString());
|
||||
}
|
||||
sw.WriteLine("");
|
||||
//***"shadowsocks(Android)下载网址: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
279
ProxySU/SSpluginWindow.xaml
Normal 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>
|
426
ProxySU/SSpluginWindow.xaml.cs
Normal file
426
ProxySU/SSpluginWindow.xaml.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 ShadowsocksR’s 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>
|
||||
|
|
|
@ -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)、igniter(Android)、Trojan-QT5 (windows) 扫码和导入url。注意:有的客户端可能不支持WebSocket模式。"</sys:String>
|
||||
<sys:String x:Key="TextBlockQrURLexplainTrojan">"可用于ShadowRocket (ios)、igniter(Android)、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:1080,http代理地址: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)、SSRR(Android)、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">此文件为shadowsocks(Android)、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">shadowsocks(Android)下载网址:https://github.com/shadowsocks/shadowsocks-android/releases</sys:String>
|
||||
<sys:String x:Key="readmeTxtExplainLineSS08">Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。</sys:String>
|
||||
<sys:String x:Key="readmeTxtExplainLineSS09">此文件为shadowsocks(Android)、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>
|
||||
|
|
|
@ -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:1080,http代理地址: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)、SSRR(Android)、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">此文件為shadowsocks(Android)、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">shadowsocks(Android)下載網址:https://github.com/shadowsocks/shadowsocks-android/releases</sys:String>
|
||||
<sys:String x:Key="readmeTxtExplainLineSS08">Shadowrocket(ios)下載,需要使用國外區的AppleID。請自行谷歌方法。</sys:String>
|
||||
<sys:String x:Key="readmeTxtExplainLineSS09">此文件為shadowsocks(Android)、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>
|
|
@ -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.
5
TemplateConfg/ss_obfs_http_web_config.caddyfile
Normal file
5
TemplateConfg/ss_obfs_http_web_config.caddyfile
Normal file
|
@ -0,0 +1,5 @@
|
|||
:8800 {
|
||||
root * /usr/share/caddy
|
||||
file_server
|
||||
##sites##
|
||||
}
|
13
TemplateConfg/ss_server_config.json
Normal file
13
TemplateConfg/ss_server_config.json
Normal 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":""
|
||||
}
|
Loading…
Add table
Reference in a new issue