1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-11-21 20:56:08 +03:00
This commit is contained in:
next-autumn 2021-04-19 12:12:23 +08:00
parent 5957f49537
commit 95380c5e47
20 changed files with 496 additions and 620 deletions

View File

@ -37,6 +37,8 @@ namespace ProxySU_Core.Models.Developers
public static int Trojan_TCP_Port = 1310;
public static int Trojan_WS_Port = 1311;
public static int FullbackPort = 8080;
public static dynamic LoadXrayConfig()
@ -71,15 +73,7 @@ namespace ProxySU_Core.Models.Developers
{
var caddyStr = File.ReadAllText(Path.Combine(CaddyFileDir, "base.caddyfile"));
caddyStr = caddyStr.Replace("##domain##", parameters.Domain);
if (parameters.Port != 443)
{
caddyStr = caddyStr.Replace(":##port##", "");
}
else
{
caddyStr = caddyStr.Replace("##port##", 80.ToString());
}
caddyStr = caddyStr.Replace("##port##", FullbackPort.ToString());
if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
{
@ -109,7 +103,7 @@ namespace ProxySU_Core.Models.Developers
baseBound.port = parameters.Port;
baseBound.settings.fallbacks.Add(JToken.FromObject(new
{
dest = 80
dest = FullbackPort
}));
xrayConfig.inbounds.Add(baseBound);
baseBound.settings.clients[0].id = parameters.UUID;
@ -129,7 +123,7 @@ namespace ProxySU_Core.Models.Developers
xrayConfig.inbounds.Add(JToken.FromObject(wsInbound));
}
if(parameters.Types.Contains(XrayType.VLESS_gRPC))
if (parameters.Types.Contains(XrayType.VLESS_gRPC))
{
var gRPCInBound = GetBound("VLESS_gRPC.json");
gRPCInBound.port = parameters.VLESS_gRPC_Port;
@ -138,7 +132,7 @@ namespace ProxySU_Core.Models.Developers
xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound));
}
if(parameters.Types.Contains(XrayType.VLESS_KCP))
if (parameters.Types.Contains(XrayType.VLESS_KCP))
{
var kcpBound = GetBound("VLESS_KCP.json");
kcpBound.port = parameters.VLESS_KCP_Port;
@ -193,6 +187,7 @@ namespace ProxySU_Core.Models.Developers
var trojanTcpBound = GetBound("Trojan_TCP.json");
trojanTcpBound.port = Trojan_TCP_Port;
trojanTcpBound.settings.clients[0].password = parameters.TrojanPassword;
trojanTcpBound.settings.fallbacks[0].dest = FullbackPort;
baseBound.settings.fallbacks[0] = JToken.FromObject(new
{
dest = Trojan_TCP_Port,

View File

@ -101,7 +101,7 @@ namespace ProxySU_Core.Models.Developers
}
}
public void Uninstall()
public void UninstallProxy()
{
EnsureRootAuth();
WriteOutput("卸载Caddy");
@ -149,13 +149,11 @@ namespace ProxySU_Core.Models.Developers
/// <summary>
/// 重装Caddy
/// </summary>
public void ReinstallCaddy()
public void DoUninstallCaddy()
{
EnsureRootAuth();
EnsureSystemEnv();
InstallCaddy();
UploadCaddyFile();
WriteOutput("************ 重装Caddy完成 ************");
UninstallCaddy();
WriteOutput("************ 卸载Caddy完成 ************");
}
/// <summary>

View File

@ -204,29 +204,4 @@ namespace ProxySU_Core.Models
}
public enum XrayType
{
// 入口
VLESS_TCP_XTLS = 100,
// VLESS 101开头
VLESS_TCP = 101,
VLESS_WS = 102,
VLESS_H2 = 103,
VLESS_KCP = 104,
VLESS_gRPC = 110,
// VMESS 201开头
VMESS_TCP = 201,
VMESS_WS = 202,
VMESS_H2 = 203,
VMESS_KCP = 204,
// Trojan 301开头
Trojan_TCP = 301,
Trojan_WS = 302,
// SS
ShadowsocksAEAD = 401
}
}

View File

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProxySU_Core.Models
{
public enum XrayType
{
// 入口
VLESS_TCP_XTLS = 100,
// VLESS 101开头
VLESS_TCP = 101,
VLESS_WS = 102,
VLESS_H2 = 103,
VLESS_KCP = 104,
VLESS_gRPC = 110,
// VMESS 201开头
VMESS_TCP = 201,
VMESS_WS = 202,
VMESS_H2 = 203,
VMESS_KCP = 204,
// Trojan 301开头
Trojan_TCP = 301,
Trojan_WS = 302,
// SS
ShadowsocksAEAD = 401
}
}

View File

@ -89,6 +89,9 @@
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="QRCoder, Version=1.4.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\QRCoder.1.4.1\lib\net40\QRCoder.dll</HintPath>
</Reference>
<Reference Include="Renci.SshNet, Version=2020.0.1.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
<HintPath>..\packages\SSH.NET.2020.0.1\lib\net40\Renci.SshNet.dll</HintPath>
</Reference>
@ -96,6 +99,7 @@
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml" />
@ -126,6 +130,7 @@
<Compile Include="Models\Host.cs" />
<Compile Include="Models\ShareLink.cs" />
<Compile Include="Models\XraySettings.cs" />
<Compile Include="Models\XrayType.cs" />
<Compile Include="Tools\DateTimeUtils.cs" />
<Compile Include="Tools\Extensions.cs" />
<Compile Include="ViewModels\BaseCommand.cs" />

View File

@ -1,5 +1,9 @@
##domain##:##port## {
:##port## {
root * /usr/share/caddy
file_server
##reverse_proxy##
}
##domain##:80 {
redir https://##domain##{uri}
}

View File

@ -10,7 +10,7 @@
],
"fallbacks": [
{
"dest": 80
"dest": 8080
}
]
},

View File

@ -1,5 +1,6 @@
{
"port": 2002,
"listen": "127.0.0.1",
"protocol": "vless",
"settings": {
"clients": [

View File

@ -5,33 +5,43 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:metro="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:local="clr-namespace:ProxySU_Core.Views.ClientInfo"
xmlns:dev="clr-namespace:ProxySU_Core.Models.Developers"
xmlns:dev="clr-namespace:ProxySU_Core.Models.Developers"
xmlns:models="clr-namespace:ProxySU_Core.Models"
mc:Ignorable="d"
Title="查看配置" Height="500" Width="800">
<Grid>
<TabControl BorderThickness="0,1,0,0" BorderBrush="#DDD">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<TabControl Grid.Column="0" BorderThickness="0,1,0,0" BorderBrush="#DDD">
<TabItem metro:HeaderedControlHelper.HeaderFontSize="20" Padding="10,5,10,5" Header="VLESS">
<TabControl
Background="#fff"
SelectionChanged="BuildQrCode"
Style="{StaticResource MaterialDesignNavigatilRailTabControl}"
Padding="10">
<TabItem Width="200"
<TabItem Width="200"
Tag="{x:Static models:XrayType.VLESS_TCP_XTLS}"
IsEnabled="{Binding Settings.Checked_VLESS_TCP_XTLS}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VLESS-TCP-XTLS">
<local:VLESS_XTLS_Control />
</TabItem>
<TabItem Width="200"
Tag="{x:Static models:XrayType.VLESS_TCP}"
IsEnabled="{Binding Settings.Checked_VLESS_TCP}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VLESS-TCP-TLS">
<local:VLESS_TCP_TLS_Control />
</TabItem>
<TabItem Width="200"
Tag="{x:Static models:XrayType.VLESS_WS}"
IsEnabled="{Binding Settings.Checked_VLESS_WS}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VLESS-WebSocket-TLS">
@ -39,41 +49,46 @@
</TabItem>
<TabItem Width="200"
Tag="{x:Static models:XrayType.VLESS_KCP}"
IsEnabled="{Binding Settings.Checked_VLESS_KCP}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VLESS-mKCP">
<local:VLESS_KCP_Control />
</TabItem>
<TabItem Width="200"
<!--<TabItem Width="200"
IsEnabled="{Binding Settings.Checked_VLESS_gRPC}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VLESS-gRPC">
<local:VLESS_gRPC_Control />
</TabItem>
</TabItem>-->
</TabControl>
</TabItem>
<TabItem metro:HeaderedControlHelper.HeaderFontSize="20" Padding="10,5,10,5" Header="VMESS">
<TabControl
SelectionChanged="BuildQrCode"
Padding="10"
Style="{StaticResource MaterialDesignNavigatilRailTabControl}">
<TabItem Width="200"
IsEnabled="{Binding Settings.Checked_VMESS_TCP}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VMESS-TCP-TLS">
<TabItem Width="200"
Tag="{x:Static models:XrayType.VMESS_TCP}"
IsEnabled="{Binding Settings.Checked_VMESS_TCP}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VMESS-TCP-TLS">
<local:VMESS_TCP_TLS_Control />
</TabItem>
<TabItem Width="200"
IsEnabled="{Binding Settings.Checked_VMESS_WS}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VMESS-WebSocket-TLS">
Tag="{x:Static models:XrayType.VMESS_WS}"
IsEnabled="{Binding Settings.Checked_VMESS_WS}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VMESS-WebSocket-TLS">
<local:VMESS_WS_TLS_Control />
</TabItem>
<TabItem Width="200"
IsEnabled="{Binding Settings.Checked_VMESS_KCP}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VMESS-mKCP">
Tag="{x:Static models:XrayType.VMESS_KCP}"
IsEnabled="{Binding Settings.Checked_VMESS_KCP}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="VMESS-mKCP">
<local:VMESS_KCP_Control />
</TabItem>
</TabControl>
@ -81,9 +96,11 @@
<TabItem metro:HeaderedControlHelper.HeaderFontSize="20" Padding="10,5,10,5" Header="Trojan">
<TabControl
SelectionChanged="BuildQrCode"
Padding="10"
Style="{StaticResource MaterialDesignNavigatilRailTabControl}">
<TabItem Width="200"
Tag="{x:Static models:XrayType.Trojan_TCP}"
IsEnabled="{Binding Settings.Checked_Trojan_TCP}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="Trojan-TCP">
@ -94,9 +111,11 @@
<TabItem metro:HeaderedControlHelper.HeaderFontSize="20" Padding="10,5,10,5" Header="ShadowSocks">
<TabControl
SelectionChanged="BuildQrCode"
Padding="10"
Style="{StaticResource MaterialDesignNavigatilRailTabControl}">
<TabItem Width="200"
Tag="{x:Static models:XrayType.ShadowsocksAEAD}"
IsEnabled="{Binding Settings.CheckedShadowSocks}"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="ShadowSocks">
@ -105,5 +124,7 @@
</TabControl>
</TabItem>
</TabControl>
<Image Grid.Column="1" Width="150" Height="150" x:Name="QrImage" />
</Grid>
</metro:MetroWindow>

View File

@ -1,7 +1,10 @@
using ProxySU_Core.Models;
using ProxySU_Core.ViewModels;
using QRCoder;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -32,5 +35,71 @@ namespace ProxySU_Core.Views.ClientInfo
Settings = new XraySettingsViewModel(record.Settings);
DataContext = this;
}
private void BuildQrCode(object sender, SelectionChangedEventArgs e)
{
var tabControl = e.Source as TabControl;
var item = (tabControl.SelectedItem as TabItem);
var type = (XrayType)item.Tag;
string shareLink = string.Empty;
switch (type)
{
case XrayType.VLESS_TCP_XTLS:
shareLink = Settings.VLESS_TCP_XTLS_ShareLink;
break;
case XrayType.VLESS_TCP:
shareLink = Settings.VLESS_TCP_ShareLink;
break;
case XrayType.VLESS_WS:
shareLink = Settings.VLESS_WS_ShareLink;
break;
case XrayType.VLESS_H2:
break;
case XrayType.VLESS_KCP:
shareLink = Settings.VLESS_KCP_ShareLink;
break;
case XrayType.VLESS_gRPC:
shareLink = Settings.VLESS_gRPC_ShareLink;
break;
case XrayType.VMESS_TCP:
shareLink = Settings.VMESS_TCP_ShareLink;
break;
case XrayType.VMESS_WS:
shareLink = Settings.VMESS_WS_ShareLink;
break;
case XrayType.VMESS_H2:
break;
case XrayType.VMESS_KCP:
shareLink = Settings.VMESS_KCP_ShareLink;
break;
case XrayType.Trojan_TCP:
shareLink = Settings.Trojan_TCP_ShareLink;
break;
case XrayType.Trojan_WS:
break;
case XrayType.ShadowsocksAEAD:
shareLink = Settings.ShadowSocksShareLink;
break;
default:
break;
}
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(shareLink, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
MemoryStream ms = new MemoryStream();
qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] bytes = ms.GetBuffer();
ms.Close();
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = new MemoryStream(bytes);
image.EndInit();
QrImage.Source = image;
}
}
}

View File

@ -9,7 +9,7 @@
xmlns:metro="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
TextElement.FontSize="14"
Title="ProxySU Core" Height="800" Width="1200">
Title="ProxySU Core" Height="670" Width="1050">
<mah:MetroWindow.LeftWindowCommands>
<mah:WindowCommands>
@ -44,16 +44,18 @@
<Grid>
<TabControl
BorderThickness="0,1,0,0"
BorderBrush="#DDD"
Background="#fff"
Style="{StaticResource MaterialDesignNavigatilRailTabControl}"
Padding="10">
Padding="20">
<TabItem
Width="160"
Height="40"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="{DynamicResource TabItemHeaderAppDeployment}">
<StackPanel Orientation="Vertical">
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Margin="5,0,0,0">
<Button
Content="{DynamicResource AddHost}"
Click="AddHost"
@ -73,7 +75,7 @@
</StackPanel>
<DataGrid ItemsSource="{Binding Records}"
Margin="0,20,0,0"
Margin="0,10,0,0"
IsReadOnly="True"
x:Name="DataGrid"
CellStyle="{StaticResource DataGridCell}"
@ -83,7 +85,9 @@
BorderBrush="#eee"
BorderThickness="1"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
Height="500"
Width="1000"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="选择"
@ -92,10 +96,10 @@
Width="80"/>
<DataGridTextColumn Header="{DynamicResource HostTag}"
Binding="{Binding Path=Host.Tag}"
Width="150"/>
Width="180"/>
<DataGridTextColumn Header="{DynamicResource HostAddress}"
Binding="{Binding Path=Host.Address}"
Width="200"/>
Width="180"/>
<DataGridTextColumn Header="{DynamicResource HostPort}"
Binding="{Binding Path=Host.Port}"
Width="100"/>
@ -125,18 +129,20 @@
</TabItem>
<TabItem
Width="160"
Width="160"
Height="40"
FontSize="15"
Style="{StaticResource MaterialDesignNavigationRailTabItem}"
Header="说明文档">
<StackPanel>
<StackPanel Margin="0,10,0,0">
<TextBlock Text="新书指引:" FontWeight="Black" />
<StackPanel Margin="0,0,0,0">
<TextBlock Margin="0,0,0,5" Text="新书指引:" FontWeight="Black" />
<TextBlock Text="1. 【添加主机】,填写主机信息及节点配置信息,保存。" />
<TextBlock Text="2. 点【控制台】,自动连接主机,连接成功后,点【一键安装】,待输出 “请尽情享用吧” 代表安装完成。" />
<TextBlock Text="3. 在【查看配置】中可以查看节点配置信息,选中【导出配置】可以复制所有节点的分享拦截。" />
</StackPanel>
<StackPanel Margin="0,10,0,0">
<TextBlock Text="自定义功能" FontWeight="Black" />
<StackPanel Margin="0,20,0,0">
<TextBlock Margin="0,0,0,5" Text="自定义功能" FontWeight="Black" />
<TextBlock Text="【更新配置】用户想修改节点的信息比如增加一个websocket或修改用户id在【编辑】中修改保存后不需要重新安装了这个功能就可以更新配置。" />
<TextBlock Text="【更新内核】更新官方xray-core的最新版本。" />
<TextBlock Text="【卸载代理】:卸载 域名证书、caddy服务、xray内核一些安装过程中的基础功能不影响不卸载会影响到您的系统请自行处理。" />
@ -144,8 +150,8 @@
<TextBlock Text="【上传证书】:上传自有证书,将您的证书 crt 和 key 文件打包zip上传即可。" />
<TextBlock Text="【上传网站】上传伪装静态网站静态网站必须根目录有一个index.html文件请自行检查。" />
</StackPanel>
<StackPanel Margin="0,10,0,0">
<TextBlock Text="关于v3版本" FontWeight="Black" />
<StackPanel Margin="0,20,0,0">
<TextBlock Margin="0,0,0,5" Text="关于v3版本" FontWeight="Black" />
<TextBlock Text="初步以xray为基础方便自动安装、修改、卸载看建议再考虑其他方式如有需要请先用v2的版本。" />
</StackPanel>
</StackPanel>

View File

@ -166,6 +166,19 @@ namespace ProxySU_Core
}
}
private void DeleteHost(object sender, RoutedEventArgs e)
{
if (DataGrid.SelectedItem is RecordViewModel project)
{
var result = MessageBox.Show($"您确认删除主机{project.Host.Tag}吗?", "提示", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
Records.Remove(project);
SaveRecord();
}
}
}
private void ShowClientInfo(object sender, RoutedEventArgs e)
{
if (DataGrid.SelectedItem is RecordViewModel project)
@ -176,19 +189,6 @@ namespace ProxySU_Core
}
private void DeleteHost(object sender, RoutedEventArgs e)
{
if (DataGrid.SelectedItem is RecordViewModel project)
{
var result = MessageBox.Show($"您确认删除主机{project.Host.Tag}吗?", "提示", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
Records.Remove(project);
}
}
}
private void Connect(object sender, RoutedEventArgs e)
{
var project = DataGrid.SelectedItem as RecordViewModel;

View File

@ -51,186 +51,12 @@
<local:ShadowSocksEditorControl />
</TabItem>
</TabControl>
<!--<StackPanel Grid.Row="0" Orientation="Horizontal">
<StackPanel Margin="0,0,0,0" Orientation="Horizontal">
<Label Content="xray" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.Port}" Width="50" VerticalAlignment="Center" />
<Label Content="ss" Margin="10,0,0,0" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.ShadowSocksPort}" Width="50" VerticalAlignment="Center" />
<Label Content="mkcp" Margin="10,0,0,0" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Port}" Width="50" VerticalAlignment="Center" />
</StackPanel>
<TabControl>
<TabItem metro:HeaderedControlHelper.HeaderFontSize="16" Padding="10,5,10,5">
</TabItem>
</TabControl>
<StackPanel>
<CheckBox Content="VMess over TCP with TLS"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_TCP}"
Margin="0,10,0,0" />
<Label Content="不推荐" Margin="20,0,0,0" Foreground="Red" />
<CheckBox Content="VMess over WS with TLS"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_WS}"
Margin="0,10,0,0" />
<Label Content="常规支持CDN" Margin="20,0,0,0" />
<CheckBox Content="VMess mKCP"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_KCP}"
Margin="0,10,0,0" />
<Label Content="低延迟,适用于游戏" Margin="20,0,0,0" />
<CheckBox Content="Trojan over TCP with TLS"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_Trojan_TCP}"
Margin="0,10,0,0" />
<Label Content="Torjan协议不支持CDN" Margin="20,0,0,0" />
<CheckBox Content="ShadowSocksAEAD"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.CheckedShadowSocks}"
Margin="0,10,0,0" />
<Label Content="俗称SS" Margin="20,0,0,0" />
</StackPanel>
<StackPanel Margin="60,0,0,0">
<StackPanel Margin="0,0,0,0" Orientation="Horizontal">
<Label Content="xray" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.Port}" Width="50" VerticalAlignment="Center" />
<Label Content="ss" Margin="10,0,0,0" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.ShadowSocksPort}" Width="50" VerticalAlignment="Center" />
<Label Content="mkcp" Margin="10,0,0,0" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Port}" Width="50" VerticalAlignment="Center" />
</StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<Label Content="UUID" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.UUID}" Width="200" />
<Button Style="{StaticResource MahApps.Styles.Button.Flat}"
Margin="5,0,0,0"
Click="RandomUuid"
Content="随机" />
</StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<Label Content="域名" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.Domain}" Width="200" />
</StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<Label Content="伪装域名" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.MaskDomain}" Width="200" />
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VLESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="VLESS-WS" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.VLESS_WS_Path}"
Width="200" />
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_TCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="VMESS-TCP" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.VMESS_TCP_Path}"
Width="200" />
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="VMESS-WS" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.VMESS_WS_Path}"
Width="200" />
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_Trojan_TCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="Trojan密码" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.TrojanPassword}"
Width="200" />
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP伪装" Width="80" VerticalAlignment="Center"/>
<ComboBox Width="200"
ItemsSource="{Binding Path=Settings.KcpTypes}"
SelectedValue="{Binding Settings.VMESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP Seed" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Seed}"
Width="200"/>
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="SS 密码" Width="80" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.ShadowSocksPassword}"
Width="200"/>
</StackPanel>
<StackPanel Margin="0,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="SS 加密方式" Width="80" VerticalAlignment="Center" />
<ComboBox Width="200"
ItemsSource="{Binding Settings.ShadowSocksMethods}"
SelectedValue="{Binding Settings.ShadowSocksMethod}">
</ComboBox>
</StackPanel>
</StackPanel>
</StackPanel>-->
<Button Content="保存"
Grid.Row="1"
Margin="0,0,20,0"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Width="120"
Height="32"
Click="Save" />

View File

@ -17,47 +17,46 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<CheckBox Content="ShadowSocksAEAD&#x0a;SS支持udp。"
Grid.Column="0"
Grid.Row="0"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.CheckedShadowSocks}" />
<StackPanel Margin="50,0,0,10"
Grid.Column="1"
Grid.Row="0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="SS 密码" Width="80" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.ShadowSocksPassword}"
VerticalAlignment="Bottom"
Width="200"/>
<StackPanel Margin="0,10,0,0" Grid.Column="0">
<CheckBox Content="ShadowSocks&#x0a;SS支持udp。"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.CheckedShadowSocks}" />
</StackPanel>
<StackPanel Margin="50,0,0,10"
Grid.Column="1"
Grid.Row="1"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="SS 加密方式" Width="80" VerticalAlignment="Bottom" />
<ComboBox Width="200"
VerticalAlignment="Bottom"
ItemsSource="{Binding Settings.ShadowSocksMethods}"
SelectedValue="{Binding Settings.ShadowSocksMethod}">
</ComboBox>
<StackPanel Grid.Column="1">
<!--域名-->
<StackPanel Margin="40,10,0,0"
Orientation="Horizontal">
<Label Content="域名" Width="70" />
<TextBox Text="{Binding Path=Settings.Domain}" Width="260" />
</StackPanel>
<!--ss密码-->
<StackPanel Margin="40,10,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="密码" Width="70" />
<TextBox Text="{Binding Path=Settings.ShadowSocksPassword}"
Width="260"/>
</StackPanel>
<!--ss加密方式-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="加密方式" Width="70" />
<ComboBox Width="260"
ItemsSource="{Binding Settings.ShadowSocksMethods}"
SelectedValue="{Binding Settings.ShadowSocksMethod}">
</ComboBox>
</StackPanel>
</StackPanel>
</Grid>
</UserControl>

View File

@ -17,29 +17,33 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<CheckBox Content="Trojan over TCP with TLS&#x0a;Trojan"
Grid.Column="0"
Grid.Row="0"
<StackPanel Grid.Column="0">
<CheckBox Content="Trojan over TCP with TLS&#x0a;Trojan"
FontSize="13"
Margin="0,10,0,0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_Trojan_TCP}" />
</StackPanel>
<StackPanel Margin="50,0,0,10"
Grid.Column="1"
Grid.Row="0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_Trojan_TCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="Trojan密码" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.TrojanPassword}"
VerticalAlignment="Bottom"
Width="260" />
<StackPanel Grid.Column="1">
<!--域名-->
<StackPanel Margin="40,10,0,0"
Orientation="Horizontal">
<Label Content="域名" Width="70" />
<TextBox Text="{Binding Path=Settings.Domain}" Width="260" />
</StackPanel>
<!--密码-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_Trojan_TCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="密码" Width="70" />
<TextBox Text="{Binding Path=Settings.TrojanPassword}"
Width="260" />
</StackPanel>
</StackPanel>
</Grid>
</UserControl>

View File

@ -17,181 +17,143 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<!--XTLS-->
<CheckBox Content="VLESS Over TCP With XTLS&#x0a;性能数倍,首选方式。"
FontSize="13"
Grid.Row="0"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_TCP_XTLS}"/>
<StackPanel Grid.Column="0">
<!--XTLS-->
<CheckBox Content="VLESS Over TCP With XTLS&#x0a;性能数倍,首选方式。"
Margin="0,10,0,0"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_TCP_XTLS}"/>
<!--TCP-->
<CheckBox Content="VLESS over TCP with TLS&#x0a;仍推荐XTLS"
Grid.Row="1"
Grid.Column="0"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_TCP}" />
<!--TCP-->
<CheckBox Content="VLESS over TCP with TLS&#x0a;仍推荐XTLS"
Margin="0,15,0,0"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_TCP}" />
<!--WebSocket-->
<CheckBox Content="VLESS over WS with TLS&#x0a;推荐支持CDN。"
Grid.Row="2"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_WS}" />
<!--WebSocket-->
<CheckBox Content="VLESS over WS with TLS&#x0a;推荐支持CDN。"
Margin="0,15,0,0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_WS}" />
<!--mKCP-->
<CheckBox Content="VLESS mKCP&#x0a;游戏推荐,延迟低。"
Grid.Row="3"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_KCP}" />
<!--mKCP-->
<CheckBox Content="VLESS mKCP&#x0a;游戏推荐,延迟低。"
Margin="0,15,0,0"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_KCP}" />
<!--gRPC-->
<CheckBox Content="VLESS gRPC&#x0a;基于http2多路复用。"
Grid.Row="4"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_gRPC}"/>
<!--gRPC-->
<!--<CheckBox Content="VLESS gRPC&#x0a;基于http2多路复用。"
Margin="0,15,0,0"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VLESS_gRPC}"/>-->
<!--************************** 参数 **************************-->
<!--UUID-->
<StackPanel Margin="40,0,0,10"
Grid.Row="0"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="UUID" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.UUID}"
VerticalAlignment="Bottom"
Width="260" />
<Button Style="{StaticResource MahApps.Styles.Button.Flat}"
Margin="5,0,0,0"
Height="30"
VerticalAlignment="Bottom"
Command="{Binding Path=Settings.RandomUuid}"
Content="随机" />
</StackPanel>
<!--Domain-->
<StackPanel Margin="40,0,0,10"
Grid.Row="1"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="域名" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.Domain}" Width="260" VerticalAlignment="Bottom" />
</StackPanel>
<!--Mask Domain-->
<StackPanel Margin="40,0,0,10"
Grid.Row="2"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="伪装域名" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.MaskDomain}" Width="260" VerticalAlignment="Bottom" />
</StackPanel>
<!--WebSocket Path-->
<StackPanel Margin="40,0,0,10"
Grid.Row="3"
Grid.Column="1"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VLESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="WS路径" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.VLESS_WS_Path}"
VerticalAlignment="Bottom"
Width="260" />
</StackPanel>
<!--************************** 参数 **************************-->
<!--seed-->
<StackPanel Margin="40,0,0,10"
Grid.Row="4"
Grid.Column="1"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP Seed" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.VLESS_KCP_Seed}" Width="260" VerticalAlignment="Bottom" />
</StackPanel>
<StackPanel Grid.Column="1">
<!--UUID-->
<StackPanel Margin="40,10,0,0"
Orientation="Horizontal">
<Label Content="UUID" Width="70" />
<StackPanel Margin="40,0,0,10"
Grid.Row="5"
Grid.Column="1"
Orientation="Horizontal">
<!--kcp type-->
<StackPanel Margin="0,0,0,0"
<TextBox Text="{Binding Path=Settings.UUID}"
Width="260" />
<Button Style="{StaticResource MahApps.Styles.Button.Flat}"
Margin="5,0,0,0"
FontSize="12"
Command="{Binding Path=Settings.RandomUuid}"
Content="随机" />
</StackPanel>
<!--Domain-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal">
<Label Content="域名" Width="70" />
<TextBox Text="{Binding Path=Settings.Domain}" Width="260" />
</StackPanel>
<!--Mask Domain-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal">
<Label Content="伪装域名" Width="70" />
<TextBox Text="{Binding Path=Settings.MaskDomain}" Width="260" />
</StackPanel>
<!--WebSocket Path-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VLESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="WS路径" Width="70" />
<TextBox Text="{Binding Path=Settings.VLESS_WS_Path}"
Width="260" />
</StackPanel>
<!--seed-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP伪装" Width="70" VerticalAlignment="Bottom"/>
<ComboBox Width="100"
VerticalAlignment="Bottom"
ItemsSource="{Binding Path=Settings.KcpTypes}"
SelectedValue="{Binding Settings.VLESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
<Label Content="KCP Seed" Width="70" />
<TextBox Text="{Binding Path=Settings.VLESS_KCP_Seed}" Width="260" />
</StackPanel>
<!--kcp port-->
<StackPanel Margin="10,0,0,0"
Orientation="Horizontal"
<!--kcp type and kcp port-->
<StackPanel Margin="40,15,0,0"
Visibility="{
Binding Path=Settings.Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}"
Orientation="Horizontal">
<StackPanel Orientation="Horizontal">
<Label Content="KCP伪装" Width="70" />
<ComboBox Width="100"
ItemsSource="{Binding Path=Settings.KcpTypes}"
SelectedValue="{Binding Settings.VLESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<StackPanel Margin="10,0,0,0"
Orientation="Horizontal">
<Label Content="KCP端口" Width="70" />
<TextBox Text="{Binding Path=Settings.VLESS_KCP_Port}" Width="100" />
</StackPanel>
</StackPanel>
<!--gRPC Port-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP端口" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.VLESS_KCP_Port}" Width="100" VerticalAlignment="Bottom" />
<Label Content="gRPC端口" Width="70" />
<TextBox Text="{Binding Path=Settings.VLESS_gRPC_Port}" Width="100" />
<Label Content="服务器" Width="70" Margin="10,0,0,0" />
<TextBox Text="{Binding Path=Settings.VLESS_gRPC_ServiceName}" Width="100" />
</StackPanel>
<!--xray prot-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal">
<Label Content="Xray端口" Width="70" />
<TextBox Text="{Binding Path=Settings.Port}" Width="100" />
<Label Content="默认端口443不建议修改" Foreground="Red" />
</StackPanel>
</StackPanel>
<!--gRPC Port-->
<StackPanel Margin="40,0,0,10"
Grid.Row="6"
Grid.Column="1"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter}
}">
<Label Content="gRPC端口" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.VLESS_gRPC_Port}" Width="100" VerticalAlignment="Bottom" />
<Label Content="服务器" Width="70" VerticalAlignment="Bottom" Margin="10,0,0,0" />
<TextBox Text="{Binding Path=Settings.VLESS_gRPC_ServiceName}" Width="100" VerticalAlignment="Bottom" />
</StackPanel>
<!--xray prot-->
<StackPanel Margin="40,0,0,10"
Grid.Row="7"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="Xray端口" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.Port}" Width="100" VerticalAlignment="Bottom" />
<Label Content="默认端口443不建议修改" VerticalAlignment="Bottom" Foreground="Red" />
</StackPanel>
</Grid>
</UserControl>

View File

@ -17,152 +17,124 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<StackPanel Grid.Column="0">
<!--TCP-->
<CheckBox Content="VMESS over TCP with TLS&#x0a;不推荐"
Margin="0,10,0,0"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_TCP}" />
<!--TCP-->
<CheckBox Content="VMESS over TCP with TLS&#x0a;不推荐"
Grid.Row="0"
Grid.Column="0"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_TCP}" />
<!--WebSocket-->
<CheckBox Content="VMESS over WS with TLS&#x0a;推荐支持CDN。"
Grid.Row="1"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_WS}" />
<!--mKCP-->
<CheckBox Content="VMESS mKCP&#x0a;游戏推荐,延迟低。"
Grid.Row="2"
Grid.Column="0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_KCP}" />
<!--WebSocket-->
<CheckBox Content="VMESS over WS with TLS&#x0a;推荐支持CDN。"
Margin="0,15,0,0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_WS}" />
<!--mKCP-->
<CheckBox Content="VMESS mKCP&#x0a;游戏推荐,延迟低。"
Margin="0,15,0,0"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Settings.Checked_VMESS_KCP}" />
</StackPanel>
<!--************************** 参数 **************************-->
<!--UUID-->
<StackPanel Margin="40,0,0,10"
Grid.Row="0"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="UUID" Width="70" VerticalAlignment="Bottom" />
<StackPanel Grid.Column="1">
<!--UUID-->
<StackPanel Margin="40,10,0,0"
Orientation="Horizontal">
<Label Content="UUID" Width="70" />
<TextBox Text="{Binding Path=Settings.UUID}"
VerticalAlignment="Bottom"
Width="260" />
<TextBox Text="{Binding Path=Settings.UUID}"
Width="260" />
<Button Style="{StaticResource MahApps.Styles.Button.Flat}"
Margin="5,0,0,0"
Height="30"
VerticalAlignment="Bottom"
Command="{Binding Path=Settings.RandomUuid}"
Content="随机" />
</StackPanel>
<Button Style="{StaticResource MahApps.Styles.Button.Flat}"
Margin="5,0,0,0"
FontSize="12"
Command="{Binding Path=Settings.RandomUuid}"
Content="随机" />
</StackPanel>
<!--Domain-->
<StackPanel Margin="40,0,0,10"
Grid.Row="1"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="域名" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.Domain}" Width="260" VerticalAlignment="Bottom" />
</StackPanel>
<!--Domain-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal">
<Label Content="域名" Width="70" />
<TextBox Text="{Binding Path=Settings.Domain}" Width="260" />
</StackPanel>
<!--Mask Domain-->
<StackPanel Margin="40,0,0,10"
Grid.Row="2"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="伪装域名" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.MaskDomain}" Width="260" VerticalAlignment="Bottom" />
</StackPanel>
<!--Mask Domain-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal">
<Label Content="伪装域名" Width="70" />
<TextBox Text="{Binding Path=Settings.MaskDomain}" Width="260" />
</StackPanel>
<!--WebSocket Path-->
<StackPanel Margin="40,0,0,10"
Grid.Row="3"
Grid.Column="1"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="WS路径" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.VMESS_WS_Path}"
VerticalAlignment="Bottom"
Width="260" />
</StackPanel>
<!--WebSocket Path-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="WS路径" Width="70" />
<TextBox Text="{Binding Path=Settings.VMESS_WS_Path}"
VerticalAlignment="Bottom"
Width="260" />
</StackPanel>
<!--seed-->
<StackPanel Margin="40,0,0,10"
Grid.Row="4"
Grid.Column="1"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP Seed" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Seed}" Width="260" VerticalAlignment="Bottom" />
</StackPanel>
<StackPanel Margin="40,0,0,10"
Grid.Row="5"
Grid.Column="1"
Orientation="Horizontal">
<!--kcp type-->
<StackPanel Margin="0,0,0,0"
<!--seed-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP伪装" Width="70" VerticalAlignment="Bottom"/>
<ComboBox Width="100"
VerticalAlignment="Bottom"
ItemsSource="{Binding Path=Settings.KcpTypes}"
SelectedValue="{Binding Settings.VMESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
<Label Content="KCP Seed" Width="70" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Seed}" Width="260" />
</StackPanel>
<!--kcp port-->
<StackPanel Margin="10,0,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP端口" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Port}" Width="100" VerticalAlignment="Bottom" />
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal">
<!--kcp type-->
<StackPanel Margin="0,0,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP伪装" Width="70" VerticalAlignment="Bottom"/>
<ComboBox Width="100"
VerticalAlignment="Bottom"
ItemsSource="{Binding Path=Settings.KcpTypes}"
SelectedValue="{Binding Settings.VMESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--kcp port-->
<StackPanel Margin="10,0,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Settings.Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="KCP端口" Width="70" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Port}" Width="100" />
</StackPanel>
</StackPanel>
<!--xray prot-->
<StackPanel Margin="40,15,0,0"
Orientation="Horizontal">
<Label Content="Xray端口" Width="70" />
<TextBox Text="{Binding Path=Settings.Port}" Width="100" />
<Label Content="默认端口443不建议修改" Foreground="Red" />
</StackPanel>
</StackPanel>
<!--xray prot-->
<StackPanel Margin="40,0,0,10"
Grid.Row="6"
Grid.Column="1"
Orientation="Horizontal">
<Label Content="Xray端口" Width="70" VerticalAlignment="Bottom" />
<TextBox Text="{Binding Path=Settings.Port}" Width="100" VerticalAlignment="Bottom" />
<Label Content="默认端口443不建议修改" VerticalAlignment="Bottom" Foreground="Red" />
</StackPanel>
</Grid>
</UserControl>

View File

@ -6,6 +6,7 @@
xmlns:local="clr-namespace:ProxySU_Core"
xmlns:metro="http://metro.mahapps.com/winfx/xaml/controls"
mc:Ignorable="d"
FontSize="15"
Title="主机控制台" Height="600" Width="800">
<StackPanel>
<TextBox IsReadOnly="True"
@ -82,9 +83,9 @@
IsEnabled="{Binding HasConnected}"
Click="UploadWeb"/>
<Button Content="重装Caddy"
<Button Content="卸载Caddy"
Margin="10,0,0,0"
Click="ReinstallCaddy"
Click="UninstallCaddy"
Height="26"
IsEnabled="{Binding HasConnected}"
Width="120"/>
@ -100,19 +101,22 @@
<Label Content="续签证书: 证书默认是自动续签,但不保证都能续签成功,如果失败请用[续签证书]手动续签" />
<Label Content="上传网站: 伪装网站正确的静态网页要有index.html文件(请检查),然后将网站压缩包上传。" />
</StackPanel>
<Label Content="如下是网友提供的静态网页连接请自行检查是否有index.html文件" />
<TextBlock>
<Hyperlink NavigateUri="https://www.themezy.com" Click="OpenLink">Themezy</Hyperlink>
</TextBlock>
<TextBlock>
<Hyperlink NavigateUri="https://onepagelove.com/templates/free-templates" Click="OpenLink">One Page Love</Hyperlink>
</TextBlock>
<TextBlock>
<Hyperlink NavigateUri="https://html5up.net/" Click="OpenLink">HTML5 UP</Hyperlink>
</TextBlock>
<TextBlock>
<Hyperlink NavigateUri="https://templatemo.com/" Click="OpenLink">template mo</Hyperlink>
</TextBlock>
<Label Margin="0,10,0,0" Content="如下是网友提供的静态网页连接请自行检查是否有index.html文件" />
<StackPanel Orientation="Horizontal">
<TextBlock Margin="10,0,0,0">
<Hyperlink NavigateUri="https://www.themezy.com" Click="OpenLink">Themezy</Hyperlink>
</TextBlock>
<TextBlock Margin="20,0,0,0">
<Hyperlink NavigateUri="https://onepagelove.com/templates/free-templates" Click="OpenLink">One Page Love</Hyperlink>
</TextBlock>
<TextBlock Margin="20,0,0,0">
<Hyperlink NavigateUri="https://html5up.net/" Click="OpenLink">HTML5 UP</Hyperlink>
</TextBlock>
<TextBlock Margin="20,0,0,0">
<Hyperlink NavigateUri="https://templatemo.com/" Click="OpenLink">template mo</Hyperlink>
</TextBlock>
</StackPanel>
</StackPanel>
</StackPanel>
</metro:MetroWindow>

View File

@ -173,7 +173,7 @@ namespace ProxySU_Core
{
Task.Factory.StartNew(() =>
{
project.Uninstall();
project.UninstallProxy();
});
}
@ -193,11 +193,11 @@ namespace ProxySU_Core
fileDialog.ShowDialog();
}
private void ReinstallCaddy(object sender, RoutedEventArgs e)
private void UninstallCaddy(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(() =>
{
project.ReinstallCaddy();
project.DoUninstallCaddy();
});
}

View File

@ -7,5 +7,6 @@
<package id="MaterialDesignThemes.MahApps" version="0.1.6" targetFramework="net461" />
<package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.31" targetFramework="net461" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
<package id="QRCoder" version="1.4.1" targetFramework="net461" />
<package id="SSH.NET" version="2020.0.1" targetFramework="net461" />
</packages>