mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-21 20:56:08 +03:00
review
This commit is contained in:
parent
5957f49537
commit
95380c5e47
@ -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,
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
34
ProxySU_Core/Models/XrayType.cs
Normal file
34
ProxySU_Core/Models/XrayType.cs
Normal 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
|
||||
}
|
||||
}
|
@ -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" />
|
||||
|
@ -1,5 +1,9 @@
|
||||
##domain##:##port## {
|
||||
:##port## {
|
||||
root * /usr/share/caddy
|
||||
file_server
|
||||
##reverse_proxy##
|
||||
}
|
||||
|
||||
##domain##:80 {
|
||||
redir https://##domain##{uri}
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
],
|
||||
"fallbacks": [
|
||||
{
|
||||
"dest": 80
|
||||
"dest": 8080
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
"port": 2002,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
|
@ -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" />
|
||||
|
@ -17,47 +17,46 @@
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="50" />
|
||||
<RowDefinition Height="50" />
|
||||
<RowDefinition Height="50" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<CheckBox Content="ShadowSocksAEAD
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
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>
|
||||
|
@ -17,29 +17,33 @@
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="50" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<CheckBox Content="Trojan over TCP with TLS
Trojan"
|
||||
Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
<StackPanel Grid.Column="0">
|
||||
<CheckBox Content="Trojan over TCP with TLS
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>
|
||||
|
@ -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
性能数倍,首选方式。"
|
||||
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
性能数倍,首选方式。"
|
||||
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
仍推荐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
仍推荐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
推荐,支持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
推荐,支持CDN。"
|
||||
Margin="0,15,0,0"
|
||||
Style="{StaticResource MahApps.Styles.CheckBox}"
|
||||
IsChecked="{Binding Path=Settings.Checked_VLESS_WS}" />
|
||||
|
||||
<!--mKCP-->
|
||||
<CheckBox Content="VLESS mKCP
游戏推荐,延迟低。"
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource MahApps.Styles.CheckBox}"
|
||||
IsChecked="{Binding Path=Settings.Checked_VLESS_KCP}" />
|
||||
<!--mKCP-->
|
||||
<CheckBox Content="VLESS mKCP
游戏推荐,延迟低。"
|
||||
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
基于http2,多路复用。"
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource MahApps.Styles.CheckBox}"
|
||||
IsChecked="{Binding Path=Settings.Checked_VLESS_gRPC}"/>
|
||||
<!--gRPC-->
|
||||
<!--<CheckBox Content="VLESS gRPC
基于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>
|
||||
|
@ -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
不推荐"
|
||||
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
不推荐"
|
||||
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
推荐,支持CDN。"
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource MahApps.Styles.CheckBox}"
|
||||
IsChecked="{Binding Path=Settings.Checked_VMESS_WS}" />
|
||||
|
||||
<!--mKCP-->
|
||||
<CheckBox Content="VMESS mKCP
游戏推荐,延迟低。"
|
||||
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
推荐,支持CDN。"
|
||||
Margin="0,15,0,0"
|
||||
Style="{StaticResource MahApps.Styles.CheckBox}"
|
||||
IsChecked="{Binding Path=Settings.Checked_VMESS_WS}" />
|
||||
|
||||
<!--mKCP-->
|
||||
<CheckBox Content="VMESS mKCP
游戏推荐,延迟低。"
|
||||
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>
|
||||
|
@ -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>
|
||||
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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>
|
Loading…
Reference in New Issue
Block a user