diff --git a/ProxySU.sln b/ProxySU.sln
index b6c6063..fb3af72 100644
--- a/ProxySU.sln
+++ b/ProxySU.sln
@@ -1,23 +1,15 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31005.135
+# Visual Studio Version 17
+VisualStudioVersion = 17.1.32210.238
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProxySU", "ProxySU\ProxySU.csproj", "{DD5505BC-E7F1-4D03-ABC7-B636E893FC09}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProxySU_Core", "ProxySU_Core\ProxySU_Core.csproj", "{B066015C-D347-4493-92F1-6556D3863996}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{18714411-764D-47E5-AFE6-A96200B7CE41}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libs", "Libs", "{CE908112-DB46-4B91-8236-9139A19D66E9}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProxySuper.WPF", "ProxySuper.WPF\ProxySuper.WPF.csproj", "{B083EBFD-2925-46C9-8B00-E2C1300CEBA1}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProxySuper.Core", "ProxySuper.Core\ProxySuper.Core.csproj", "{15779EE6-D8CA-44BF-BFE2-941E155EEF3F}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -28,26 +20,10 @@ Global
{DD5505BC-E7F1-4D03-ABC7-B636E893FC09}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD5505BC-E7F1-4D03-ABC7-B636E893FC09}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD5505BC-E7F1-4D03-ABC7-B636E893FC09}.Release|Any CPU.Build.0 = Release|Any CPU
- {B066015C-D347-4493-92F1-6556D3863996}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B066015C-D347-4493-92F1-6556D3863996}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B066015C-D347-4493-92F1-6556D3863996}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B066015C-D347-4493-92F1-6556D3863996}.Release|Any CPU.Build.0 = Release|Any CPU
- {B083EBFD-2925-46C9-8B00-E2C1300CEBA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B083EBFD-2925-46C9-8B00-E2C1300CEBA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B083EBFD-2925-46C9-8B00-E2C1300CEBA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B083EBFD-2925-46C9-8B00-E2C1300CEBA1}.Release|Any CPU.Build.0 = Release|Any CPU
- {15779EE6-D8CA-44BF-BFE2-941E155EEF3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {15779EE6-D8CA-44BF-BFE2-941E155EEF3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {15779EE6-D8CA-44BF-BFE2-941E155EEF3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {15779EE6-D8CA-44BF-BFE2-941E155EEF3F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {B083EBFD-2925-46C9-8B00-E2C1300CEBA1} = {CE908112-DB46-4B91-8236-9139A19D66E9}
- {15779EE6-D8CA-44BF-BFE2-941E155EEF3F} = {CE908112-DB46-4B91-8236-9139A19D66E9}
- EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A3F3B8D6-7FED-42D9-9994-E913BD32E025}
EndGlobalSection
diff --git a/ProxySU/MainWindow.xaml.cs b/ProxySU/MainWindow.xaml.cs
index 7350959..593ba41 100644
--- a/ProxySU/MainWindow.xaml.cs
+++ b/ProxySU/MainWindow.xaml.cs
@@ -15,7 +15,6 @@ using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
-using Renci.SshNet;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization;
@@ -29,6 +28,7 @@ using System.Runtime;
using System.Globalization;
using Microsoft.Win32;
using System.Security;
+using Renci.SshNet;
namespace ProxySU
{
@@ -9114,11 +9114,11 @@ namespace ProxySU
ipv6 = String.Empty;
//sshShellCommand = @"curl -4 ip.sb";
- sshShellCommand = @"curl -s https://api.ip.sb/ip --ipv4 --max-time 8";
+ sshShellCommand = @"curl -4 ip.sb";
currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand);
ipv4 = currentShellCommandResult.TrimEnd('\r', '\n');
- sshShellCommand = @"curl -s https://api.ip.sb/ip --ipv6 --max-time 8";
+ sshShellCommand = @"curl -6 ip.sb";
currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand);
ipv6 = currentShellCommandResult.TrimEnd('\r', '\n');
diff --git a/ProxySU/Properties/Resources.Designer.cs b/ProxySU/Properties/Resources.Designer.cs
index 50e1154..5e2fa17 100644
--- a/ProxySU/Properties/Resources.Designer.cs
+++ b/ProxySU/Properties/Resources.Designer.cs
@@ -1,69 +1,61 @@
//------------------------------------------------------------------------------
//
// 此代码由工具生成。
-// 运行时版本: 4.0.30319.42000
+// 运行时版本:4.0.30319.42000
//
-// 对此文件的更改可能导致不正确的行为,如果
-// 重新生成代码,则所做更改将丢失。
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
-namespace ProxySU.Properties
-{
-
-
+namespace ProxySU.Properties {
+ using System;
+
+
///
- /// 强类型资源类,用于查找本地化字符串等。
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
///
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
- // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
+ internal class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
+ internal Resources() {
}
-
+
///
- /// 返回此类使用的缓存 ResourceManager 实例。
+ /// 返回此类使用的缓存的 ResourceManager 实例。
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProxySU.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
- /// 覆盖当前线程的 CurrentUICulture 属性
- /// 使用此强类型的资源类的资源查找。
+ /// 重写当前线程的 CurrentUICulture 属性,对
+ /// 使用此强类型资源类的所有资源查找执行重写。
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
diff --git a/ProxySU/Properties/Settings.Designer.cs b/ProxySU/Properties/Settings.Designer.cs
index 654607b..53a3c9c 100644
--- a/ProxySU/Properties/Settings.Designer.cs
+++ b/ProxySU/Properties/Settings.Designer.cs
@@ -1,28 +1,24 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
-namespace ProxySU.Properties
-{
-
-
+namespace ProxySU.Properties {
+
+
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
+
+ public static Settings Default {
+ get {
return defaultInstance;
}
}
diff --git a/ProxySU/ProxySU.csproj b/ProxySU/ProxySU.csproj
index 9ae9d06..7307497 100644
--- a/ProxySU/ProxySU.csproj
+++ b/ProxySU/ProxySU.csproj
@@ -8,7 +8,7 @@
WinExe
ProxySU
ProxySU
- v4.0
+ v4.7.2
512
{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
4
@@ -29,6 +29,7 @@
false
true
true
+
AnyCPU
@@ -39,6 +40,7 @@
DEBUG;TRACE
prompt
4
+ false
AnyCPU
@@ -48,6 +50,7 @@
TRACE
prompt
4
+ false
ProxySU.ico
@@ -62,7 +65,10 @@
true
- true
+ false
+
+
+ ProxySU.App
@@ -184,6 +190,7 @@
.editorconfig
+
SettingsSingleFileGenerator
diff --git a/ProxySU/app.config b/ProxySU/app.config
new file mode 100644
index 0000000..312bb3f
--- /dev/null
+++ b/ProxySU/app.config
@@ -0,0 +1,3 @@
+
+
+
diff --git a/ProxySU/packages.config b/ProxySU/packages.config
index cd7f780..5e98293 100644
--- a/ProxySU/packages.config
+++ b/ProxySU/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/ProxySU_Core/App.config b/ProxySU_Core/App.config
deleted file mode 100644
index 824190f..0000000
--- a/ProxySU_Core/App.config
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ProxySU_Core/App.xaml b/ProxySU_Core/App.xaml
deleted file mode 100644
index d59fcda..0000000
--- a/ProxySU_Core/App.xaml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ProxySU_Core/App.xaml.cs b/ProxySU_Core/App.xaml.cs
deleted file mode 100644
index 2ccb782..0000000
--- a/ProxySU_Core/App.xaml.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Data;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace ProxySU_Core
-{
- ///
- /// Interaction logic for App.xaml
- ///
- public partial class App : Application
- {
- }
-}
diff --git a/ProxySU_Core/AssemblyInfo.cs b/ProxySU_Core/AssemblyInfo.cs
deleted file mode 100644
index 8b5504e..0000000
--- a/ProxySU_Core/AssemblyInfo.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Windows;
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
diff --git a/ProxySU_Core/Common/Base64.cs b/ProxySU_Core/Common/Base64.cs
deleted file mode 100644
index 0a61841..0000000
--- a/ProxySU_Core/Common/Base64.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ProxySU_Core.Common
-{
- public class Base64
- {
- public static string Encode(string plainText)
- {
- var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
- return System.Convert.ToBase64String(plainTextBytes);
- }
-
- public static string Decode(string base64EncodedData)
- {
- var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
- return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
- }
- }
-}
diff --git a/ProxySU_Core/Converters/LoginSecretTypeConverter.cs b/ProxySU_Core/Converters/LoginSecretTypeConverter.cs
deleted file mode 100644
index be26ed8..0000000
--- a/ProxySU_Core/Converters/LoginSecretTypeConverter.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-using System.Windows.Data;
-
-namespace ProxySU_Core.Converters
-{
- public class LoginSecretTypeConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- return value != null && value.Equals(parameter);
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value == null)
- {
- return Binding.DoNothing;
- }
-
- if (!value.Equals(true))
- {
- return Binding.DoNothing;
- }
-
- return parameter;
-
- }
- }
-}
diff --git a/ProxySU_Core/Converters/ProxyTypeConverter.cs b/ProxySU_Core/Converters/ProxyTypeConverter.cs
deleted file mode 100644
index 771cb62..0000000
--- a/ProxySU_Core/Converters/ProxyTypeConverter.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-using System.Windows.Data;
-
-namespace ProxySU_Core.Converters
-{
- public class ProxyTypeConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- return value != null && value.Equals(parameter);
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value == null)
- {
- return Binding.DoNothing;
- }
-
- if (!value.Equals(true))
- {
- return Binding.DoNothing;
- }
-
- return parameter;
- }
- }
-}
diff --git a/ProxySU_Core/Converters/VisibleConverter.cs b/ProxySU_Core/Converters/VisibleConverter.cs
deleted file mode 100644
index f52a08d..0000000
--- a/ProxySU_Core/Converters/VisibleConverter.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Data;
-
-namespace ProxySU_Core.Converters
-{
- public class VisibleConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- return value.Equals(true) ? Visibility.Visible : Visibility.Collapsed;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value == null)
- {
- return false;
- }
-
- if (value.Equals(Visibility.Visible))
- {
- return true;
- }
-
- return false;
- }
- }
-}
diff --git a/ProxySU_Core/Models/AppSettings.cs b/ProxySU_Core/Models/AppSettings.cs
deleted file mode 100644
index 0b42488..0000000
--- a/ProxySU_Core/Models/AppSettings.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ProxySU_Core.Models
-{
- public class AppSettings
- {
- public string Language { get; set; }
- }
-}
diff --git a/ProxySU_Core/Models/Developers/IParameters.cs b/ProxySU_Core/Models/Developers/IParameters.cs
deleted file mode 100644
index f80f33a..0000000
--- a/ProxySU_Core/Models/Developers/IParameters.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace ProxySU_Core.Models.Developers
-{
- public interface IParameters
- {
- int Port { get; set; }
-
- string Domain { get; set; }
-
- List FreePorts { get; }
- }
-}
diff --git a/ProxySU_Core/Models/Developers/Project.cs b/ProxySU_Core/Models/Developers/Project.cs
deleted file mode 100644
index 5aaa233..0000000
--- a/ProxySU_Core/Models/Developers/Project.cs
+++ /dev/null
@@ -1,740 +0,0 @@
-using ProxySU_Core.Tools;
-using ProxySU_Core.ViewModels;
-using Renci.SshNet;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace ProxySU_Core.Models.Developers
-{
- public enum CmdType
- {
- None,
- Apt,
- Dnf,
- Yum
- }
-
- public abstract class Project : BaseViewModel where TParameters : IParameters
- {
- private SshClient _sshClient;
-
- protected Action WriteOutput;
-
- protected CmdType CmdType { get; set; }
-
- protected bool IsSELinux { get; set; }
-
- protected bool OnlyIpv6 { get; set; }
-
- protected string IPv4 { get; set; }
-
- protected string IPv6 { get; set; }
-
- protected TParameters Parameters { get; set; }
-
- public Project(SshClient sshClient, TParameters parameters, Action writeOutput)
- {
- _sshClient = sshClient;
- WriteOutput = writeOutput;
- Parameters = parameters;
- }
-
- protected string RunCmd(string cmdStr)
- {
- var cmd = _sshClient.CreateCommand(cmdStr);
- WriteOutput(cmdStr);
-
- var result = cmd.Execute();
- WriteOutput(result);
- return result;
- }
-
- ///
- /// 执行安装命令
- ///
- public abstract void Install();
-
- ///
- /// 配置系统基础环境
- ///
- protected void EnsureSystemEnv()
- {
- string cmd;
-
- // 确认安装命令
- if (CmdType == CmdType.None)
- {
- cmd = RunCmd("command -v apt-get");
- if (!string.IsNullOrEmpty(cmd))
- {
- CmdType = CmdType.Apt;
- }
- }
-
- if (CmdType == CmdType.None)
- {
- cmd = RunCmd("command -v dnf");
- if (!string.IsNullOrEmpty(cmd))
- {
- CmdType = CmdType.Dnf;
- }
- }
-
- if (CmdType == CmdType.None)
- {
- cmd = RunCmd("command -v yum");
- if (!string.IsNullOrEmpty(cmd))
- {
- CmdType = CmdType.Yum;
- }
- }
-
- // systemctl
- cmd = RunCmd("command -v systemctl");
- var hasSystemCtl = !string.IsNullOrEmpty(cmd);
-
- // SELinux
- cmd = RunCmd("command -v getenforce");
- IsSELinux = !string.IsNullOrEmpty(cmd);
-
- if (CmdType == CmdType.None || !hasSystemCtl)
- {
- throw new Exception("系统缺乏必要的安装组件如:apt-get||dnf||yum||Syetemd,主机系统推荐使用:CentOS 7/8,Debian 8/9/10,Ubuntu 16.04及以上版本");
- }
-
-
- // 判断是否启用了SELinux,如果启用了,并且工作在Enforcing模式下,则改为Permissive模式
- if (IsSELinux)
- {
- cmd = RunCmd("getenforce");
-
- // 检测到系统启用SELinux,且工作在严格模式下,需改为宽松模式
- if (cmd.Contains("Enforcing"))
- {
- RunCmd("setenforce 0");
- RunCmd(@"sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config");
- }
- }
- }
-
- ///
- /// 确保Root账户登陆
- ///
- protected void EnsureRootAuth()
- {
- // 禁止一些可能产生的干扰信息
- RunCmd(@"sed -i 's/echo/#echo/g' ~/.bashrc");
- RunCmd(@"sed -i 's/echo/#echo/g' ~/.profile");
-
-
- // 检测是否运行在Root权限下
- var cmd = RunCmd("id -u");
- if (!cmd.Equals("0\n"))
- {
- throw new Exception("请使用Root账户登陆主机");
- }
- }
-
- ///
- /// 配置IPV6环境
- ///
- protected void ConfigureIPv6()
- {
- if (IsOnlyIpv6())
- {
- SetNat64();
- }
- }
-
- ///
- /// 配置必要的软件
- ///
- protected void ConfigureSoftware()
- {
- string cmd = RunCmd("command -v sudo");
- if (string.IsNullOrEmpty(cmd))
- {
- RunCmd(GetInstallCmd("sudo"));
- }
-
- // 安装curl,wget,unzip
- cmd = RunCmd("command -v curl");
- if (string.IsNullOrEmpty(cmd))
- {
- RunCmd(GetInstallCmd("curl"));
- }
-
- cmd = RunCmd("command -v wget");
- if (string.IsNullOrEmpty(cmd))
- {
- RunCmd(GetInstallCmd("wget"));
- }
-
- cmd = RunCmd("command -v unzip");
- if (string.IsNullOrEmpty(cmd))
- {
- RunCmd(GetInstallCmd("unzip"));
- }
-
- // 安装dig
- cmd = RunCmd("command -v dig");
- if (string.IsNullOrEmpty(cmd))
- {
- if (CmdType == CmdType.Apt)
- {
- RunCmd(GetUpdateCmd());
- RunCmd(GetInstallCmd("dnsutils"));
- }
- else if (CmdType == CmdType.Dnf)
- {
- RunCmd(GetUpdateCmd());
- RunCmd(GetInstallCmd("bind-utils"));
- }
- else if (CmdType == CmdType.Yum)
- {
- RunCmd(GetUpdateCmd());
- RunCmd(GetInstallCmd("bind-utils"));
- }
- }
-
-
- // 处理极其少见的xz-utils未安装的情况
- if (CmdType == CmdType.Apt)
- {
- RunCmd(GetInstallCmd("xz-utils"));
- }
- else
- {
- RunCmd(GetInstallCmd("xz-devel"));
- }
-
- // 检测是否安装lsof
- cmd = RunCmd("command -v lsof");
- if (string.IsNullOrEmpty(cmd))
- {
- RunCmd(GetInstallCmd("lsof"));
- }
- }
-
- protected void ClosePort(params int[] portList)
- {
- string cmd;
-
- cmd = RunCmd("command -v firewall-cmd");
- if (!string.IsNullOrEmpty(cmd))
- {
- //有很奇怪的vps主机,在firewalld未运行时,端口是关闭的,无法访问。所以要先启动firewalld
- //用于保证acme.sh申请证书成功
- cmd = RunCmd("firewall-cmd --state");
- if (cmd.Trim() != "running")
- {
- RunCmd("systemctl restart firewalld");
- }
-
- foreach (var port in portList)
- {
- RunCmd($"firewall-cmd --zone=public --remove-port={port}/tcp --permanent");
- RunCmd($"firewall-cmd --zone=public --remove-port={port}/udp --permanent");
- }
- RunCmd("yes | firewall-cmd --reload");
- }
- else
- {
- cmd = RunCmd("command -v ufw");
- if (!string.IsNullOrEmpty(cmd))
- {
- foreach (var port in portList)
- {
- RunCmd($"ufw delete allow {port}/tcp");
- RunCmd($"ufw delete allow {port}/udp");
- }
- RunCmd("yes | ufw reload");
- }
- }
- }
-
- protected void OpenPort(params int[] portList)
- {
-
- string cmd;
-
- cmd = RunCmd("command -v firewall-cmd");
- if (!string.IsNullOrEmpty(cmd))
- {
- //有很奇怪的vps主机,在firewalld未运行时,端口是关闭的,无法访问。所以要先启动firewalld
- //用于保证acme.sh申请证书成功
- cmd = RunCmd("firewall-cmd --state");
- if (cmd.Trim() != "running")
- {
- RunCmd("systemctl restart firewalld");
- }
-
- foreach (var port in portList)
- {
- RunCmd($"firewall-cmd --zone=public --add-port={port}/tcp --permanent");
- RunCmd($"firewall-cmd --zone=public --add-port={port}/udp --permanent");
- }
- RunCmd("yes | firewall-cmd --reload");
- }
- else
- {
- cmd = RunCmd("command -v ufw");
- if (!string.IsNullOrEmpty(cmd))
- {
- foreach (var port in portList)
- {
- RunCmd($"ufw allow {port}/tcp");
- RunCmd($"ufw allow {port}/udp");
- }
- RunCmd("yes | ufw reload");
- }
- }
- }
-
- ///
- /// 配置防火墙
- ///
- protected void ConfigureFirewall()
- {
- var portList = new List();
- portList.Add(80);
- portList.Add(Parameters.Port);
- portList.AddRange(Parameters.FreePorts);
-
- OpenPort(portList.ToArray());
- }
-
- ///
- /// 配置同步时间差
- ///
- protected void SyncTimeDiff()
- {
- RunCmd("rm -f /etc/localtime");
- RunCmd("ln -s /usr/share/zoneinfo/UTC /etc/localtime");
-
- var result = RunCmd("date +%s");
- var vpsSeconds = Convert.ToInt64(result);
- var localSeconds = (int)(DateTime.Now.ToUniversalTime() - DateTime.Parse("1970-01-01")).TotalSeconds;
-
- if (Math.Abs(vpsSeconds - localSeconds) >= 90)
- {
- // 同步本地时间
- var netUtcTime = DateTimeUtils.GetUTCTime();
- DateTimeUtils.SetDate(netUtcTime.ToLocalTime());
-
- // 同步VPS时间
- var utcTS = DateTimeUtils.GetUTCTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
- long timeStampVPS = Convert.ToInt64(utcTS.TotalSeconds);
- RunCmd($"date --set=\"$(date \"+%Y-%m-%d %H:%M:%S\" -d @{timeStampVPS.ToString()})\"");
- }
- }
-
- ///
- /// 验证域名是否绑定了主机
- ///
- protected void ValidateDomain()
- {
- if (OnlyIpv6)
- {
- string cmdFilter = @"| grep -oE '(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))' | head -n 1";
- var cmd = $"dig @resolver1.opendns.com AAAA {Parameters.Domain} +short -6 {cmdFilter}";
- var result = RunCmd(cmd).TrimEnd('\r', '\n');
-
- if (result == IPv6) return;
- }
-
- else
- {
- string cmdFilter = @"| grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1";
- var cmd = $"dig @resolver1.opendns.com A {Parameters.Domain} +short -4 {cmdFilter}";
- var result = RunCmd(cmd).TrimEnd('\r', '\n');
-
- if (result == IPv4) return;
-
- }
-
-
- var btnResult = MessageBox.Show(
- $"{Parameters.Domain}未能正常解析到服务器的IP,如果您使用了CDN请忽略,是否继续安装?", "提示", MessageBoxButton.YesNo);
-
- if (btnResult == MessageBoxResult.No)
- {
- throw new Exception($"域名解析失败,安装停止!");
- }
-
- }
-
- ///
- /// 判断是否安装某个软件
- ///
- ///
- ///
- protected bool FileExists(string path)
- {
- var cmdStr = $"if [[ -f {path} ]];then echo '1';else echo '0'; fi";
- var cmd = RunCmd(cmdStr);
- return cmd.Trim() == "1";
- }
-
- ///
- /// 安装 Caddy
- ///
- protected void InstallCaddy()
- {
- RunCmd("rm -rf caddy_install.sh");
- RunCmd("curl -o caddy_install.sh https://raw.githubusercontent.com/proxysu/shellscript/master/Caddy-Naive/caddy-naive-install.sh");
- RunCmd("yes | bash caddy_install.sh");
- RunCmd("rm -rf caddy_install.sh");
- RunCmd("systemctl enable caddy.service");
- }
-
- ///
- /// 卸载 Caddy
- ///
- protected void UninstallCaddy()
- {
- RunCmd("rm -rf caddy_install.sh");
- RunCmd("curl -o caddy_install.sh https://raw.githubusercontent.com/proxysu/shellscript/master/Caddy-Naive/caddy-naive-install.sh");
- RunCmd("yes | bash caddy_install.sh uninstall");
- RunCmd("rm -rf caddy_install.sh");
- RunCmd("rm -rf /usr/share/caddy");
- }
-
-
- #region 检测系统环境
-
- private bool IsOnlyIpv6()
- {
- string cmd;
-
- cmd = RunCmd(@"curl -s https://api.ip.sb/ip --ipv4 --max-time 8");
- IPv4 = cmd.TrimEnd('\r', '\n');
-
- if (!string.IsNullOrEmpty(IPv4))
- {
- OnlyIpv6 = false;
- return false;
- }
-
- cmd = RunCmd(@"curl -s https://api.ip.sb/ip --ipv6 --max-time 8");
- IPv6 = cmd.TrimEnd('\r', '\n');
-
- if (string.IsNullOrEmpty(IPv6))
- {
- throw new Exception("未检测可用的的IP地址");
- }
-
- OnlyIpv6 = true;
- return OnlyIpv6;
- }
-
- private bool SetPortFree(int port, bool force = true)
- {
- string result = RunCmd($"lsof -n -P -i :{port} | grep LISTEN");
-
- if (!string.IsNullOrEmpty(result))
- {
- if (force)
- {
- var btnResult = MessageBox.Show($"{port}端口被占用,将强制停止占用{port}端口的程序?", "提示", MessageBoxButton.YesNo);
- if (btnResult == MessageBoxResult.No)
- {
- throw new Exception($"{port}端口被占用,安装停止!");
- }
-
- string[] process = result.Split(' ');
- RunCmd($"systemctl stop {process[0]}");
- RunCmd($"systemctl disable {process[0]}");
- RunCmd($"pkill {process[0]}");
- return SetPortFree(port, force: false);
- }
- else
- {
- return false;
- }
- }
-
- return true;
- }
-
- public void ConfigurePort()
- {
- if (Parameters.Port == 80 || Parameters.Port == 443)
- {
- SetPortFree(80);
- SetPortFree(443);
- }
- else
- {
- SetPortFree(80);
- SetPortFree(443);
- SetPortFree(Parameters.Port);
-
- Parameters.FreePorts.ForEach(port =>
- {
- SetPortFree(port);
- });
- }
- }
-
- protected void SetNat64()
- {
- var dns64List = FilterFastestIP();
- if (dns64List.Count == 0)
- {
- throw new Exception("未找到有效的Nat64网关");
- }
-
- var exists = FileExists("/etc/resolv.conf.proxysu");
- if (!exists)
- {
- var cmdStr = @"mv /etc/resolv.conf /etc/resolv.conf.proxysu";
- RunCmd(cmdStr);
- }
-
- foreach (var gateip in dns64List)
- {
- RunCmd($"echo \"nameserver {gateip}\" > /etc/resolv.conf");
- }
- }
-
- protected void RemoveNat64()
- {
- RunCmd("rm /etc/resolv.conf");
- RunCmd("mv /etc/resolv.conf.proxysu /etc/resolv.conf");
- }
-
- private List FilterFastestIP()
- {
- string[] gateNat64 = {
- "2a01:4f9:c010:3f02::1",
- "2001:67c:2b0::4",
- "2001:67c:2b0::6",
- "2a09:11c0:f1:bbf0::70",
- "2a01:4f8:c2c:123f::1",
- "2001:67c:27e4:15::6411",
- "2001:67c:27e4::64",
- "2001:67c:27e4:15::64",
- "2001:67c:27e4::60",
- "2a00:1098:2b::1",
- "2a03:7900:2:0:31:3:104:161",
- "2a00:1098:2c::1",
- "2a09:11c0:100::53",
- };
-
- Dictionary dns64List = new Dictionary();
- foreach (var gateip in gateNat64)
- {
- var cmdStr = $"ping6 -c4 {gateip} | grep avg | awk '{{print $4}}'|cut -d/ -f2";
- var cmd = RunCmd(cmdStr);
- if (!string.IsNullOrEmpty(cmd))
- {
- if (float.TryParse(cmd, out float delay))
- {
- dns64List.Add(gateip, delay);
- }
- }
- }
-
- return dns64List.Keys.ToList();
- }
-
- #endregion
-
-
- #region BBR
- private bool CheckKernelVersionBBR(string kernelVer)
- {
- string[] linuxKernelCompared = kernelVer.Split('.');
- if (int.Parse(linuxKernelCompared[0]) > 4)
- {
- return true;
- }
- else if (int.Parse(linuxKernelCompared[0]) < 4)
- {
- return false;
- }
- else if (int.Parse(linuxKernelCompared[0]) == 4)
- {
- if (int.Parse(linuxKernelCompared[1]) >= 9)
- {
- return true;
- }
- else if (int.Parse(linuxKernelCompared[1]) < 9)
- {
- return false;
- }
-
- }
- return false;
-
- }
-
- protected void EnableBBR()
- {
- var osVersion = RunCmd("uname -r");
- var canInstallBBR = CheckKernelVersionBBR(osVersion.Split('-')[0]);
-
- var bbrInfo = RunCmd("sysctl net.ipv4.tcp_congestion_control | grep bbr");
- var installed = bbrInfo.Contains("bbr");
- if (canInstallBBR && !installed)
- {
- RunCmd(@"bash -c 'echo ""net.core.default_qdisc=fq"" >> /etc/sysctl.conf'");
- RunCmd(@"bash -c 'echo ""net.ipv4.tcp_congestion_control=bbr"" >> /etc/sysctl.conf'");
- RunCmd(@"sysctl -p");
-
- if (OnlyIpv6)
- {
- RemoveNat64();
- }
- WriteOutput("BBR启动成功");
- }
-
- if (!canInstallBBR)
- {
- WriteOutput("****** 系统不满足启用BBR条件,启动失败。 ******");
- }
-
- }
- #endregion
-
- ///
- /// 安装证书
- ///
- ///
- ///
- protected void InstallCert(string dirPath, string certName, string keyName)
- {
- string certPath = Path.Combine(dirPath, certName);
- string keyPath = Path.Combine(dirPath, keyName);
-
- // 安装依赖
- RunCmd(GetInstallCmd("socat"));
-
- // 解决搬瓦工CentOS缺少问题
- RunCmd(GetInstallCmd("automake autoconf libtool"));
-
- // 安装Acme
- var result = RunCmd($"curl https://get.acme.sh yes | sh");
- if (result.Contains("Install success"))
- {
- WriteOutput("安装 acme.sh 成功");
- }
- else
- {
- WriteOutput("安装 acme.sh 失败,请联系开发者!");
- throw new Exception("安装 acme.sh 失败,请联系开发者!");
- }
-
- RunCmd("cd ~/.acme.sh/");
- RunCmd("alias acme.sh=~/.acme.sh/acme.sh");
-
- // 申请证书
- if (OnlyIpv6)
- {
- var cmd = $"/root/.acme.sh/acme.sh --force --debug --issue --standalone -d {Parameters.Domain} --listen-v6";
- result = RunCmd(cmd);
- }
- else
- {
- var cmd = $"/root/.acme.sh/acme.sh --force --debug --issue --standalone -d {Parameters.Domain}";
- result = RunCmd(cmd);
- }
-
- if (result.Contains("success"))
- {
- WriteOutput("申请证书成功");
- }
- else
- {
- WriteOutput("申请证书失败,如果申请次数过多请更换二级域名,或联系开发者!");
- throw new Exception("申请证书失败,如果申请次数过多请更换二级域名,或联系开发者!");
- }
-
- // 安装证书
- RunCmd($"mkdir -p {dirPath}");
- RunCmd($"/root/.acme.sh/acme.sh --installcert -d {Parameters.Domain} --certpath {certPath} --keypath {keyPath} --capath {certPath}");
-
- result = RunCmd($@"if [ ! -f ""{keyPath}"" ]; then echo ""0""; else echo ""1""; fi | head -n 1");
-
- if (result.Contains("1"))
- {
- WriteOutput("安装证书成功");
- }
- else
- {
- WriteOutput("安装证书失败,请联系开发者!");
- throw new Exception("安装证书失败,请联系开发者!");
- }
-
- RunCmd($"chmod 755 {dirPath}");
- }
-
- ///
- /// 上传文件
- ///
- ///
- ///
- protected void UploadFile(Stream stream, string path)
- {
- using (var sftp = new SftpClient(_sshClient.ConnectionInfo))
- {
- sftp.Connect();
- sftp.UploadFile(stream, path, true);
- sftp.Disconnect();
- }
- }
-
- ///
- /// 根据系统环境匹配更新命令
- ///
- ///
- protected string GetUpdateCmd()
- {
- if (CmdType == CmdType.Apt)
- {
- return "apt-get update";
- }
- else if (CmdType == CmdType.Dnf)
- {
- return "dnf clean all;dnf makecache";
- }
- else if (CmdType == CmdType.Yum)
- {
- return "yum clean all;yum makecache";
- }
-
- throw new Exception("未识别的系统");
- }
-
- ///
- /// 根据系统匹配安装命令
- ///
- ///
- ///
- protected string GetInstallCmd(string soft)
- {
- if (CmdType == CmdType.Apt)
- {
- return "echo y | apt-get install " + soft;
- }
- else if (CmdType == CmdType.Dnf)
- {
- return "echo y | dnf -y install " + soft;
- }
- else if (CmdType == CmdType.Yum)
- {
- return "echo y | yum -y install " + soft;
- }
-
- throw new Exception("未识别的系统");
- }
-
- }
-}
diff --git a/ProxySU_Core/Models/Developers/TrojanGoConfigBuilder.cs b/ProxySU_Core/Models/Developers/TrojanGoConfigBuilder.cs
deleted file mode 100644
index c02a9d0..0000000
--- a/ProxySU_Core/Models/Developers/TrojanGoConfigBuilder.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ProxySU_Core.Models.Developers
-{
- public class TrojanGoConfigBuilder
- {
- public static readonly int WebPort = 8088;
-
- public static readonly string TrojanGoSettingPath = @"Templates\trojan-go\trojan-go.json";
-
- public static readonly string CaddyFilePath = @"Templates\trojan-go\base.caddyfile";
-
- public static string BuildTrojanGoConfig(TrojanGoSettings parameters)
- {
- var jsonStr = File.ReadAllText(TrojanGoSettingPath);
- var settings = JToken.FromObject(JsonConvert.DeserializeObject(jsonStr));
-
- settings["remote_port"] = WebPort;
- settings["password"][0] = parameters.Password;
- settings["ssl"]["sni"] = parameters.Domain;
-
- return JsonConvert.SerializeObject(settings, Formatting.Indented, new JsonSerializerSettings()
- {
- NullValueHandling = NullValueHandling.Ignore
- });
- }
-
- public static string BuildCaddyConfig(TrojanGoSettings parameters, bool useCustomWeb = false)
- {
- var caddyStr = File.ReadAllText(CaddyFilePath);
- caddyStr.Replace("##domain##", parameters.Domain);
- caddyStr.Replace("##port##", WebPort.ToString());
-
- if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
- {
- var prefix = "http://";
- if (parameters.MaskDomain.StartsWith("https://"))
- {
- prefix = "https://";
- }
- var domain = parameters.MaskDomain
- .TrimStart("http://".ToCharArray())
- .TrimStart("https://".ToCharArray());
-
- caddyStr = caddyStr.Replace("##reverse_proxy##", $"reverse_proxy {prefix}{domain} {{ \n header_up Host {domain} \n }}");
- }
- else
- {
- caddyStr = caddyStr.Replace("##reverse_proxy##", "");
- }
-
- return caddyStr;
- }
- }
-
-}
diff --git a/ProxySU_Core/Models/Developers/TrojanGoProject.cs b/ProxySU_Core/Models/Developers/TrojanGoProject.cs
deleted file mode 100644
index bf6cf19..0000000
--- a/ProxySU_Core/Models/Developers/TrojanGoProject.cs
+++ /dev/null
@@ -1,135 +0,0 @@
-using Renci.SshNet;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace ProxySU_Core.Models.Developers
-{
- public class TrojanGoProject : Project
- {
- public TrojanGoProject(SshClient sshClient, TrojanGoSettings parameters, Action writeOutput) : base(sshClient, parameters, writeOutput)
- {
- }
-
- public override void Install()
- {
- try
- {
- EnsureRootAuth();
-
- if (FileExists("/usr/local/bin/xray"))
- {
- var btnResult = MessageBox.Show("已经安装Xray,是否需要重装?", "提示", MessageBoxButton.YesNo);
- if (btnResult == MessageBoxResult.No)
- {
- MessageBox.Show("安装终止", "提示");
- return;
- }
- }
-
- WriteOutput("检测安装系统环境...");
- EnsureSystemEnv();
- WriteOutput("检测安装系统环境完成");
-
- WriteOutput("配置服务器端口...");
- ConfigurePort();
- WriteOutput("端口配置完成");
-
- WriteOutput("安装必要的系统工具...");
- ConfigureSoftware();
- WriteOutput("系统工具安装完成");
-
- WriteOutput("检测IP6...");
- ConfigureIPv6();
- WriteOutput("检测IP6完成");
-
- WriteOutput("配置防火墙...");
- ConfigureFirewall();
- WriteOutput("防火墙配置完成");
-
- WriteOutput("同步系统和本地时间...");
- SyncTimeDiff();
- WriteOutput("时间同步完成");
-
- WriteOutput("检测域名是否绑定本机IP...");
- ValidateDomain();
- WriteOutput("域名检测完成");
-
- WriteOutput("安装Trojan-Go...");
- InstallTrojanGo();
- WriteOutput("Trojan-Go安装完成");
-
- WriteOutput("安装Caddy...");
- InstallCaddy();
- WriteOutput("Caddy安装完成");
-
- WriteOutput("启动BBR");
- EnableBBR();
-
- UploadCaddyFile();
- WriteOutput("************");
- WriteOutput("安装完成,尽情享用吧......");
- WriteOutput("************");
- }
- catch (Exception ex)
- {
- var errorLog = "安装终止," + ex.Message;
- WriteOutput(errorLog);
- MessageBox.Show(errorLog);
- }
- }
-
- private void InstallTrojanGo()
- {
- WriteOutput("安装Trojan-Go");
- RunCmd(@"curl https://raw.githubusercontent.com/proxysu/shellscript/master/trojan-go.sh yes | bash");
- var success = FileExists("/usr/local/etc/trojan-go");
- if (success == false)
- {
- throw new Exception("trojan-go 安装失败,请联系开发者!");
- }
-
- RunCmd($"sed -i 's/User=nobody/User=root/g' /etc/systemd/system/xray.service");
- RunCmd($"sed -i 's/CapabilityBoundingSet=/#CapabilityBoundingSet=/g' /etc/systemd/system/xray.service");
- RunCmd($"sed -i 's/AmbientCapabilities=/#AmbientCapabilities=/g' /etc/systemd/system/xray.service");
- RunCmd($"systemctl daemon-reload");
-
- RunCmd("systemctl enable trojan-go");
- RunCmd("systemctl start trojan-go");
- WriteOutput("Trojan-Go 安装完成");
-
- InstallCert(
- dirPath: "/usr/local/etc/trojan-go",
- certName: "trojan-go.crt",
- keyName: "trojan-go.key");
-
- if (FileExists("/usr/local/etc/trojan-go/config.json"))
- {
- RunCmd("mv /usr/local/etc/trojan-go/config.json config.json.old");
- }
-
- // 上传配置
- var settings = TrojanGoConfigBuilder.BuildTrojanGoConfig(Parameters);
- var stream = new MemoryStream(Encoding.UTF8.GetBytes(settings));
- UploadFile(stream, "/usr/local/etc/trojan-go/config.json");
- RunCmd("systemctl restart trojan-go");
- }
-
- private void UploadCaddyFile(bool useCustomWeb = false)
- {
- var config = TrojanGoConfigBuilder.BuildCaddyConfig(Parameters, useCustomWeb);
- var stream = new MemoryStream(Encoding.UTF8.GetBytes(config));
- if (FileExists("/etc/caddy/Caddyfile"))
- {
- RunCmd("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.back");
- }
- UploadFile(stream, "/etc/caddy/Caddyfile");
- RunCmd("systemctl restart caddy");
- }
- }
-
-}
diff --git a/ProxySU_Core/Models/Developers/TrojanGoSettings.cs b/ProxySU_Core/Models/Developers/TrojanGoSettings.cs
deleted file mode 100644
index 6dd2102..0000000
--- a/ProxySU_Core/Models/Developers/TrojanGoSettings.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ProxySU_Core.Models.Developers
-{
- public class TrojanGoSettings : IParameters
- {
- public int Port { get; set; }
-
- public List FreePorts
- {
- get
- {
- return new List();
- }
- }
-
- public string Domain { get; set; }
-
- public List Types { get; set; }
-
- public string Password { get; set; }
-
- public string MaskDomain { get; set; }
- }
-}
diff --git a/ProxySU_Core/Models/Developers/XrayConfigBuilder.cs b/ProxySU_Core/Models/Developers/XrayConfigBuilder.cs
deleted file mode 100644
index d7eb4be..0000000
--- a/ProxySU_Core/Models/Developers/XrayConfigBuilder.cs
+++ /dev/null
@@ -1,232 +0,0 @@
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using ProxySU_Core.Models;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-
-namespace ProxySU_Core.Models.Developers
-{
- public class XrayConfigBuilder
- {
- private const string ServerLogDir = @"Templates\xray\server\00_log";
- private const string ServerApiDir = @"Templates\xray\server\01_api";
- private const string ServerDnsDir = @"Templates\xray\server\02_dns";
- private const string ServerRoutingDir = @"Templates\xray\server\03_routing";
- private const string ServerPolicyDir = @"Templates\xray\server\04_policy";
- private const string ServerInboundsDir = @"Templates\xray\server\05_inbounds";
- private const string ServerOutboundsDir = @"Templates\xray\server\06_outbounds";
- private const string ServerTransportDir = @"Templates\xray\server\07_transport";
- private const string ServerStatsDir = @"Templates\xray\server\08_stats";
- private const string ServerReverseDir = @"Templates\xray\server\09_reverse";
- private const string CaddyFileDir = @"Templates\xray\caddy";
-
- public static int VLESS_TCP_Port = 1110;
- public static int VLESS_WS_Port = 1111;
- public static int VLESS_H2_Port = 1112;
- public static int VLESS_mKCP_Port = 1113;
-
- public static int VMESS_TCP_Port = 1210;
- public static int VMESS_WS_Port = 1211;
- public static int VMESS_H2_Port = 1212;
-
- public static int Trojan_TCP_Port = 1310;
- public static int Trojan_WS_Port = 1311;
-
- public static int FullbackPort = 8080;
-
-
-
- public static dynamic LoadXrayConfig()
- {
- dynamic logObj = LoadJsonObj(Path.Combine(ServerLogDir, "00_log.json"));
- dynamic apiObj = LoadJsonObj(Path.Combine(ServerApiDir, "01_api.json"));
- dynamic dnsObj = LoadJsonObj(Path.Combine(ServerDnsDir, "02_dns.json"));
- dynamic routingObj = LoadJsonObj(Path.Combine(ServerRoutingDir, "03_routing.json"));
- dynamic policyObj = LoadJsonObj(Path.Combine(ServerPolicyDir, "04_policy.json"));
- dynamic inboundsObj = LoadJsonObj(Path.Combine(ServerInboundsDir, "05_inbounds.json"));
- dynamic outboundsObj = LoadJsonObj(Path.Combine(ServerOutboundsDir, "06_outbounds.json"));
- dynamic transportObj = LoadJsonObj(Path.Combine(ServerTransportDir, "07_transport.json"));
- dynamic statsObj = LoadJsonObj(Path.Combine(ServerStatsDir, "08_stats.json"));
- dynamic reverseObj = LoadJsonObj(Path.Combine(ServerReverseDir, "09_reverse.json"));
-
- return new
- {
- log = logObj["log"],
- //api = apiObj["api"], api不能为空
- dns = dnsObj["dns"],
- routing = routingObj["routing"],
- policy = policyObj["policy"],
- inbounds = inboundsObj["inbounds"],
- outbounds = outboundsObj["outbounds"],
- transport = transportObj["transport"],
- stats = statsObj["stats"],
- reverse = reverseObj["reverse"]
- };
- }
-
- public static string BuildCaddyConfig(XraySettings parameters, bool useCustomWeb = false)
- {
- var caddyStr = File.ReadAllText(Path.Combine(CaddyFileDir, "base.caddyfile"));
- caddyStr = caddyStr.Replace("##domain##", parameters.Domain);
- caddyStr = caddyStr.Replace("##port##", FullbackPort.ToString());
-
- if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
- {
- var prefix = "http://";
- if (parameters.MaskDomain.StartsWith("https://"))
- {
- prefix = "https://";
- }
- var domain = parameters.MaskDomain
- .TrimStart("http://".ToCharArray())
- .TrimStart("https://".ToCharArray());
-
- caddyStr = caddyStr.Replace("##reverse_proxy##", $"reverse_proxy {prefix}{domain} {{ \n header_up Host {domain} \n }}");
- }
- else
- {
- caddyStr = caddyStr.Replace("##reverse_proxy##", "");
- }
-
- return caddyStr;
- }
-
- public static string BuildXrayConfig(XraySettings parameters)
- {
- var xrayConfig = LoadXrayConfig();
- var baseBound = GetBound("VLESS_TCP_XTLS.json");
- baseBound.port = parameters.Port;
- baseBound.settings.fallbacks.Add(JToken.FromObject(new
- {
- dest = FullbackPort
- }));
- xrayConfig.inbounds.Add(baseBound);
- baseBound.settings.clients[0].id = parameters.UUID;
-
- if (parameters.Types.Contains(XrayType.VLESS_WS))
- {
- var wsInbound = GetBound("VLESS_WS.json");
- wsInbound.port = VLESS_WS_Port;
- wsInbound.settings.clients[0].id = parameters.UUID;
- wsInbound.streamSettings.wsSettings.path = parameters.VLESS_WS_Path;
- baseBound.settings.fallbacks.Add(JToken.FromObject(new
- {
- dest = VLESS_WS_Port,
- path = parameters.VLESS_WS_Path,
- xver = 1,
- }));
- xrayConfig.inbounds.Add(JToken.FromObject(wsInbound));
- }
-
- if (parameters.Types.Contains(XrayType.VLESS_gRPC))
- {
- var gRPCInBound = GetBound("VLESS_gRPC.json");
- gRPCInBound.port = parameters.VLESS_gRPC_Port;
- gRPCInBound.settings.clients[0].id = parameters.UUID;
- gRPCInBound.streamSettings.grpcSettings.serviceName = parameters.VLESS_gRPC_ServiceName;
- xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound));
- }
-
- if (parameters.Types.Contains(XrayType.VLESS_KCP))
- {
- var kcpBound = GetBound("VLESS_KCP.json");
- kcpBound.port = parameters.VLESS_KCP_Port;
- kcpBound.settings.clients[0].id = parameters.UUID;
- kcpBound.streamSettings.kcpSettings.header.type = parameters.VLESS_KCP_Type;
- kcpBound.streamSettings.kcpSettings.seed = parameters.VLESS_KCP_Seed;
- xrayConfig.inbounds.Add(JToken.FromObject(kcpBound));
- }
-
- if (parameters.Types.Contains(XrayType.VMESS_TCP))
- {
- var mtcpBound = GetBound("VMESS_TCP.json");
- mtcpBound.port = VMESS_TCP_Port;
- mtcpBound.settings.clients[0].id = parameters.UUID;
- mtcpBound.streamSettings.tcpSettings.header.request.path = parameters.VMESS_TCP_Path;
- baseBound.settings.fallbacks.Add(JToken.FromObject(new
- {
- dest = VMESS_TCP_Port,
- path = parameters.VMESS_TCP_Path,
- xver = 1,
- }));
- xrayConfig.inbounds.Add(JToken.FromObject(mtcpBound));
- }
-
- if (parameters.Types.Contains(XrayType.VMESS_WS))
- {
- var mwsBound = GetBound("VMESS_WS.json");
- mwsBound.port = VMESS_WS_Port;
- mwsBound.settings.clients[0].id = parameters.UUID;
- mwsBound.streamSettings.wsSettings.path = parameters.VMESS_WS_Path;
- baseBound.settings.fallbacks.Add(JToken.FromObject(new
- {
- dest = VMESS_WS_Port,
- path = parameters.VMESS_WS_Path,
- xver = 1,
- }));
- xrayConfig.inbounds.Add(JToken.FromObject(mwsBound));
- }
-
- if (parameters.Types.Contains(XrayType.VMESS_KCP))
- {
- var kcpBound = GetBound("VMESS_KCP.json");
- kcpBound.port = parameters.VMESS_KCP_Port;
- kcpBound.settings.clients[0].id = parameters.UUID;
- kcpBound.streamSettings.kcpSettings.header.type = parameters.VMESS_KCP_Type;
- kcpBound.streamSettings.kcpSettings.seed = parameters.VMESS_KCP_Seed;
- xrayConfig.inbounds.Add(JToken.FromObject(kcpBound));
- }
-
- if (parameters.Types.Contains(XrayType.Trojan_TCP))
- {
- 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,
- xver = 1,
- });
- xrayConfig.inbounds.Add(JToken.FromObject(trojanTcpBound));
- }
-
-
- if (parameters.Types.Contains(XrayType.ShadowsocksAEAD))
- {
- var ssBound = GetBound("Shadowsocks-AEAD.json");
- ssBound.port = parameters.ShadowSocksPort;
- ssBound.settings.clients[0].password = parameters.ShadowsocksPassword;
- ssBound.settings.clients[0].method = parameters.ShadowsocksMethod;
- xrayConfig.inbounds.Add(JToken.FromObject(ssBound));
- }
-
- return JsonConvert.SerializeObject(
- xrayConfig,
- Formatting.Indented,
- new JsonSerializerSettings()
- {
- NullValueHandling = NullValueHandling.Ignore
- });
- }
-
- private static dynamic GetBound(string name)
- {
- return LoadJsonObj(Path.Combine(ServerInboundsDir, name));
- }
-
- private static dynamic LoadJsonObj(string path)
- {
- if (File.Exists(path))
- {
- var jsonStr = File.ReadAllText(path, Encoding.UTF8);
- return JToken.FromObject(JsonConvert.DeserializeObject(jsonStr));
- }
- return null;
- }
-
- }
-
-}
diff --git a/ProxySU_Core/Models/Developers/XrayProject.cs b/ProxySU_Core/Models/Developers/XrayProject.cs
deleted file mode 100644
index f0678af..0000000
--- a/ProxySU_Core/Models/Developers/XrayProject.cs
+++ /dev/null
@@ -1,321 +0,0 @@
-using Renci.SshNet;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using System.Windows;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using ProxySU_Core.Models;
-
-namespace ProxySU_Core.Models.Developers
-{
- public class XrayProject : Project
- {
-
- private const string ServerLogDir = @"Templates\xray\server\00_log";
- private const string ServerApiDir = @"Templates\xray\server\01_api";
- private const string ServerDnsDir = @"Templates\xray\server\02_dns";
- private const string ServerRoutingDir = @"Templates\xray\server\03_routing";
- private const string ServerPolicyDir = @"Templates\xray\server\04_policy";
- private const string ServerInboundsDir = @"Templates\xray\server\05_inbounds";
- private const string ServerOutboundsDir = @"Templates\xray\server\06_outbounds";
- private const string ServerTransportDir = @"Templates\xray\server\07_transport";
- private const string ServerStatsDir = @"Templates\xray\server\08_stats";
- private const string ServerReverseDir = @"Templates\xray\server\09_reverse";
- private const string CaddyFileDir = @"Templates\xray\caddy";
-
- public XrayProject(SshClient sshClient, XraySettings parameters, Action writeOutput) : base(sshClient, parameters, writeOutput)
- {
- }
-
-
- ///
- /// 安装Xray
- ///
- public override void Install()
- {
- try
- {
- EnsureRootAuth();
-
- if (FileExists("/usr/local/bin/xray"))
- {
- var btnResult = MessageBox.Show("已经安装Xray,是否需要重装?", "提示", MessageBoxButton.YesNo);
- if (btnResult == MessageBoxResult.No)
- {
- MessageBox.Show("安装终止", "提示");
- return;
- }
- }
-
- WriteOutput("检测安装系统环境...");
- EnsureSystemEnv();
- WriteOutput("检测安装系统环境完成");
-
- WriteOutput("配置服务器端口...");
- ConfigurePort();
- WriteOutput("端口配置完成");
-
- WriteOutput("安装必要的系统工具...");
- ConfigureSoftware();
- WriteOutput("系统工具安装完成");
-
- WriteOutput("检测IP6...");
- ConfigureIPv6();
- WriteOutput("检测IP6完成");
-
- WriteOutput("配置防火墙...");
- ConfigureFirewall();
- WriteOutput("防火墙配置完成");
-
- WriteOutput("同步系统和本地时间...");
- SyncTimeDiff();
- WriteOutput("时间同步完成");
-
- WriteOutput("检测域名是否绑定本机IP...");
- ValidateDomain();
- WriteOutput("域名检测完成");
-
- WriteOutput("安装Xray-Core...");
- InstallXrayWithCert();
- WriteOutput("Xray-Core安装完成");
-
- WriteOutput("安装Caddy...");
- InstallCaddy();
- WriteOutput("Caddy安装完成");
-
- WriteOutput("启动BBR");
- EnableBBR();
-
- UploadCaddyFile();
- WriteOutput("************");
- WriteOutput("安装完成,尽情享用吧......");
- WriteOutput("************");
- }
- catch (Exception ex)
- {
- var errorLog = "安装终止," + ex.Message;
- WriteOutput(errorLog);
- MessageBox.Show(errorLog);
- }
- }
-
- public void UninstallProxy()
- {
- EnsureRootAuth();
- WriteOutput("卸载Caddy");
- UninstallCaddy();
- WriteOutput("卸载Xray");
- UninstallXray();
- WriteOutput("卸载证书");
- UninstallAcme();
- WriteOutput("关闭端口");
- ClosePort(Parameters.ShadowSocksPort, Parameters.VMESS_KCP_Port);
-
- WriteOutput("************ 卸载完成 ************");
- }
-
- ///
- /// 更新xray内核
- ///
- public void UpdateXrayCore()
- {
- EnsureRootAuth();
- EnsureSystemEnv();
- RunCmd("bash -c \"$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)\" @ install");
- RunCmd("systemctl restart xray");
- WriteOutput("************ 更新xray内核完成 ************");
- }
-
- ///
- /// 更新xray配置
- ///
- public void UpdateXraySettings()
- {
- EnsureRootAuth();
- EnsureSystemEnv();
- ConfigureFirewall();
- var configJson = XrayConfigBuilder.BuildXrayConfig(Parameters);
- var stream = new MemoryStream(Encoding.UTF8.GetBytes(configJson));
- RunCmd("rm -rf /usr/local/etc/xray/config.json");
- UploadFile(stream, "/usr/local/etc/xray/config.json");
- ConfigurePort();
- UploadCaddyFile(string.IsNullOrEmpty(Parameters.MaskDomain));
- RunCmd("systemctl restart xray");
- WriteOutput("************ 更新Xray配置成功,更新配置不包含域名,如果域名更换请重新安装。 ************");
- }
-
- ///
- /// 重装Caddy
- ///
- public void DoUninstallCaddy()
- {
- EnsureRootAuth();
- UninstallCaddy();
- WriteOutput("************ 卸载Caddy完成 ************");
- }
-
- ///
- /// 安装证书
- ///
- public void InstallCertToXray()
- {
- EnsureRootAuth();
- EnsureSystemEnv();
- InstallCert(
- dirPath: "/usr/local/etc/xray/ssl",
- certName: "xray_ssl.crt",
- keyName: "xray_ssl.key");
-
- RunCmd("systemctl restart xray");
- WriteOutput("************ 安装证书完成 ************");
- }
-
- ///
- /// 上传证书
- ///
- ///
- ///
- public void UploadCert(Stream stream)
- {
- EnsureRootAuth();
- EnsureSystemEnv();
-
- // 转移旧文件
- var oldFileName = $"ssl_{DateTime.Now.Ticks}";
- RunCmd($"mv /usr/local/etc/xray/ssl /usr/local/etc/xray/{oldFileName}");
-
- // 上传新文件
- RunCmd("mkdir /usr/local/etc/xray/ssl");
- UploadFile(stream, "/usr/local/etc/xray/ssl/ssl.zip");
- RunCmd("unzip /usr/local/etc/xray/ssl/ssl.zip -d /usr/local/etc/xray/ssl");
-
- // 改名
- var crtFiles = RunCmd("find /usr/local/etc/xray/ssl/*.crt").Split("\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
- if (crtFiles.Length > 0)
- {
- RunCmd($"mv {crtFiles[0]} /usr/local/etc/xray/ssl/xray_ssl.crt");
- }
- else
- {
- WriteOutput("************ 上传证书失败,请联系开发者 ************");
- RunCmd("rm -rf /usr/local/etc/xray/ssl");
- RunCmd($"mv /usr/local/etc/xray/ssl{oldFileName} /usr/local/etc/xray/ssl");
- WriteOutput("操作已回滚");
- return;
- }
-
- var keyFiles = RunCmd("find /usr/local/etc/xray/ssl/*.key").Split("\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
- if (keyFiles.Length > 0)
- {
- RunCmd($"mv {keyFiles[0]} /usr/local/etc/xray/ssl/xray_ssl.key");
- }
- else
- {
- WriteOutput("************ 上传证书失败,请联系开发者 ************");
- RunCmd("rm -rf /usr/local/etc/xray/ssl");
- RunCmd($"mv /usr/local/etc/xray/ssl{oldFileName} /usr/local/etc/xray/ssl");
- WriteOutput("操作已回滚");
- return;
- }
-
- RunCmd("systemctl restart xray");
- WriteOutput("************ 上传证书完成 ************");
- }
-
- ///
- /// 上传静态网站
- ///
- ///
- public void UploadWeb(Stream stream)
- {
- EnsureRootAuth();
- EnsureSystemEnv();
- if (!FileExists("/usr/share/caddy"))
- {
- RunCmd("mkdir /usr/share/caddy");
- }
- RunCmd("rm -rf /usr/share/caddy/*");
- UploadFile(stream, "/usr/share/caddy/caddy.zip");
- RunCmd("unzip /usr/share/caddy/caddy.zip -d /usr/share/caddy");
- RunCmd("chmod -R 777 /usr/share/caddy");
- UploadCaddyFile(useCustomWeb: true);
- WriteOutput("************ 上传网站模板完成 ************");
- }
-
-
- private void UploadCaddyFile(bool useCustomWeb = false)
- {
- var configJson = XrayConfigBuilder.BuildCaddyConfig(Parameters, useCustomWeb);
- var stream = new MemoryStream(Encoding.UTF8.GetBytes(configJson));
- if (FileExists("/etc/caddy/Caddyfile"))
- {
- RunCmd("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.back");
- }
- UploadFile(stream, "/etc/caddy/Caddyfile");
- RunCmd("systemctl restart caddy");
- }
-
-
-
- private void UninstallXray()
- {
- RunCmd("bash -c \"$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)\" @ remove");
- }
-
- private void UninstallAcme()
- {
- RunCmd("acme.sh --uninstall");
- RunCmd("rm -r ~/.acme.sh");
- }
-
- private void InstallXrayWithCert()
- {
- RunCmd("bash -c \"$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)\" @ install");
-
- if (!FileExists("/usr/local/bin/xray"))
- {
- WriteOutput("Xray-Core安装失败,请联系开发者");
- throw new Exception("Xray-Core安装失败,请联系开发者");
- }
-
- RunCmd($"sed -i 's/User=nobody/User=root/g' /etc/systemd/system/xray.service");
- RunCmd($"sed -i 's/CapabilityBoundingSet=/#CapabilityBoundingSet=/g' /etc/systemd/system/xray.service");
- RunCmd($"sed -i 's/AmbientCapabilities=/#AmbientCapabilities=/g' /etc/systemd/system/xray.service");
- RunCmd($"systemctl daemon-reload");
-
- if (FileExists("/usr/local/etc/xray/config.json"))
- {
- RunCmd(@"mv /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.1");
- }
-
- WriteOutput("安装TLS证书");
- InstallCertToXray();
- WriteOutput("TLS证书安装完成");
-
-
- var configJson = XrayConfigBuilder.BuildXrayConfig(Parameters);
- var stream = new MemoryStream(Encoding.UTF8.GetBytes(configJson));
- UploadFile(stream, "/usr/local/etc/xray/config.json");
- RunCmd("systemctl restart xray");
- }
-
- private int GetRandomPort()
- {
- var random = new Random();
- return random.Next(10001, 60000);
- }
-
- private dynamic LoadJsonObj(string path)
- {
- if (File.Exists(path))
- {
- var jsonStr = File.ReadAllText(path, Encoding.UTF8);
- return JsonConvert.DeserializeObject(jsonStr);
- }
- return null;
- }
-
- }
-}
diff --git a/ProxySU_Core/Models/Developers/XraySettings.cs b/ProxySU_Core/Models/Developers/XraySettings.cs
deleted file mode 100644
index 0b6e274..0000000
--- a/ProxySU_Core/Models/Developers/XraySettings.cs
+++ /dev/null
@@ -1,220 +0,0 @@
-using Newtonsoft.Json;
-using ProxySU_Core.Common;
-using ProxySU_Core.Models.Developers;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Web;
-
-namespace ProxySU_Core.Models
-{
- public class XraySettings : IParameters
- {
-
- public XraySettings()
- {
- var guid = Guid.NewGuid().ToString();
- Port = 443;
- VLESS_KCP_Port = 2001;
- VLESS_gRPC_Port = 2002;
- VMESS_KCP_Port = 3001;
- ShadowSocksPort = 4001;
-
- UUID = guid;
- Types = new List();
-
- VLESS_WS_Path = "/vlessws";
- VLESS_H2_Path = "/vlessh2";
- VLESS_KCP_Type = "none";
- VLESS_KCP_Seed = guid;
- VLESS_gRPC_ServiceName = "xray_gRPC";
-
- VMESS_WS_Path = "/vmessws";
- VMESS_TCP_Path = "/vmesstcp";
- VMESS_H2_Path = "/vmessh2";
- VMESS_KCP_Seed = guid;
- VMESS_KCP_Type = "none";
-
- TrojanPassword = guid;
- Trojan_WS_Path = "/trojanws";
-
- ShadowsocksPassword = guid;
- ShadowsocksMethod = "aes-128-gcm";
- }
-
- ///
- /// 访问端口
- ///
- public int Port { get; set; }
-
-
- ///
- /// UUID
- ///
- public string UUID { get; set; }
-
- #region vless
-
-
- ///
- /// vless ws路径
- ///
- public string VLESS_WS_Path { get; set; }
-
- ///
- /// vless http2 path
- ///
- public string VLESS_H2_Path { get; set; }
-
- ///
- /// vless kcp seed
- ///
- public string VLESS_KCP_Seed { get; set; }
-
- ///
- /// vless kcp type
- ///
- public string VLESS_KCP_Type { get; set; }
-
- ///
- /// vless kcp端口
- ///
- public int VLESS_KCP_Port { get; set; }
-
- ///
- /// grpc service name
- ///
- public string VLESS_gRPC_ServiceName { get; set; }
-
- ///
- /// grpc port
- ///
- public int VLESS_gRPC_Port { get; set; }
-
- #endregion
-
- #region vmess
- ///
- /// vmess ws路径
- ///
- public string VMESS_WS_Path { get; set; }
-
- ///
- /// vmess tcp路径
- ///
- public string VMESS_TCP_Path { get; set; }
-
- ///
- /// vmess http2 path
- ///
- public string VMESS_H2_Path { get; set; }
-
- ///
- /// vmess kcp seed
- ///
- public string VMESS_KCP_Seed { get; set; }
-
- ///
- /// vmess kcp type
- ///
- public string VMESS_KCP_Type { get; set; }
-
- ///
- /// vmess kcp端口
- ///
- public int VMESS_KCP_Port { get; set; }
- #endregion
-
- #region Trojan
- ///
- /// trojan密码
- ///
- public string TrojanPassword { get; set; }
-
- ///
- /// trojan ws path
- ///
- public string Trojan_WS_Path { get; set; }
- #endregion
-
- #region ShadowsocksAEAD
- ///
- /// ss password
- ///
- public string ShadowsocksPassword { get; set; }
-
- ///
- /// ss method
- ///
- public string ShadowsocksMethod { get; set; }
-
- ///
- /// ss端口
- ///
- public int ShadowSocksPort { get; set; }
- #endregion
-
-
- ///
- /// 域名
- ///
- public string Domain { get; set; }
-
- ///
- /// 伪装域名
- ///
- public string MaskDomain { get; set; }
-
- ///
- /// 安装类型
- ///
- public List Types { get; set; }
-
- public List FreePorts
- {
- get
- {
- return new List
- {
- VLESS_gRPC_Port,
- VLESS_KCP_Port,
- VMESS_KCP_Port,
- ShadowSocksPort,
- };
- }
- }
-
- public string GetPath(XrayType type)
- {
- switch (type)
- {
- case XrayType.VLESS_WS:
- return VLESS_WS_Path;
- case XrayType.VLESS_H2:
- return VLESS_H2_Path;
-
- case XrayType.VMESS_TCP:
- return VMESS_TCP_Path;
- case XrayType.VMESS_WS:
- return VMESS_WS_Path;
- case XrayType.Trojan_WS:
- return Trojan_WS_Path;
-
- // no path
- case XrayType.VLESS_TCP_XTLS:
- case XrayType.VLESS_TCP:
- case XrayType.VLESS_KCP:
- case XrayType.VMESS_KCP:
- case XrayType.Trojan_TCP:
- return string.Empty;
- default:
- return string.Empty;
- }
- }
-
- }
-
-
-}
diff --git a/ProxySU_Core/Models/Host.cs b/ProxySU_Core/Models/Host.cs
deleted file mode 100644
index c4d3fc8..0000000
--- a/ProxySU_Core/Models/Host.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ProxySU_Core.Models
-{
- public class Host
- {
-
-
- public Host()
- {
- Proxy = new LocalProxy();
- }
-
-
- public string Tag { get; set; }
-
- public string Address { get; set; }
-
- public string UserName { get; set; }
-
- public string Password { get; set; }
-
- public int Port { get; set; } = 22;
-
- public string PrivateKeyPath { get; set; }
-
- public LocalProxy Proxy { get; set; }
-
- public LoginSecretType SecretType { get; set; }
- }
-}
diff --git a/ProxySU_Core/Models/LocalProxy.cs b/ProxySU_Core/Models/LocalProxy.cs
deleted file mode 100644
index 7e71c8b..0000000
--- a/ProxySU_Core/Models/LocalProxy.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace ProxySU_Core.Models
-{
- public class LocalProxy
- {
- public string Address { get; set; } = "127.0.0.1";
-
- public int Port { get; set; } = 1080;
-
- public LocalProxyType Type { get; set; }
-
- public string UserName { get; set; }
-
- public string Password { get; set; }
-
- }
-}
diff --git a/ProxySU_Core/Models/LocalProxyType.cs b/ProxySU_Core/Models/LocalProxyType.cs
deleted file mode 100644
index c74da49..0000000
--- a/ProxySU_Core/Models/LocalProxyType.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace ProxySU_Core.Models
-{
- public enum LocalProxyType
- {
- None = 0,
- //
- // 摘要:
- // A SOCKS4 proxy server.
- Socks4 = 1,
- //
- // 摘要:
- // A SOCKS5 proxy server.
- Socks5 = 2,
- //
- // 摘要:
- // A HTTP proxy server.
- Http = 3
- }
-}
diff --git a/ProxySU_Core/Models/LoginSecretType.cs b/ProxySU_Core/Models/LoginSecretType.cs
deleted file mode 100644
index 66c2602..0000000
--- a/ProxySU_Core/Models/LoginSecretType.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace ProxySU_Core.Models
-{
- public enum LoginSecretType
- {
- Password = 0,
- PrivateKey = 1
- }
-}
diff --git a/ProxySU_Core/Models/Record.cs b/ProxySU_Core/Models/Record.cs
deleted file mode 100644
index 091ac2f..0000000
--- a/ProxySU_Core/Models/Record.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using ProxySU_Core.Models;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace ProxySU_Core.Models
-{
- public class Record
- {
- public Record()
- {
-
- }
-
- public Record(Host host)
- {
- this.Host = host;
- }
-
- public Host Host { get; set; } = new Host();
-
- public XraySettings Settings { get; set; } = new XraySettings();
- }
-}
diff --git a/ProxySU_Core/Models/ShareLink.cs b/ProxySU_Core/Models/ShareLink.cs
deleted file mode 100644
index 8c606a4..0000000
--- a/ProxySU_Core/Models/ShareLink.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-using Newtonsoft.Json;
-using ProxySU_Core.Common;
-using ProxySU_Core.Models.Developers;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Web;
-
-namespace ProxySU_Core.Models
-{
- public class ShareLink
- {
- public static string Build(XrayType xrayType, XraySettings settings)
- {
-
- switch (xrayType)
- {
- case XrayType.VLESS_TCP:
- case XrayType.VLESS_TCP_XTLS:
- case XrayType.VLESS_WS:
- case XrayType.VLESS_KCP:
- case XrayType.VLESS_gRPC:
- case XrayType.Trojan_TCP:
- return BuildVlessShareLink(xrayType, settings);
- case XrayType.VMESS_TCP:
- case XrayType.VMESS_WS:
- case XrayType.VMESS_KCP:
- return BuildVmessShareLink(xrayType, settings);
- case XrayType.ShadowsocksAEAD:
- return BuildShadowSocksShareLink(settings);
- default:
- return string.Empty;
- }
- }
-
- private static string BuildShadowSocksShareLink(XraySettings settings)
- {
- var _method = settings.ShadowsocksMethod;
- var _password = settings.ShadowsocksPassword;
- var _server = settings.Domain;
- var _port = settings.ShadowSocksPort;
-
- var base64URL = Base64.Encode($"{_method}:{_password}@{_server}:{_port}");
- return "ss://" + base64URL + "#ShadowSocks";
- }
-
- private static string BuildVmessShareLink(XrayType xrayType, XraySettings settings)
- {
- var vmess = new Vmess
- {
- v = "2",
- add = settings.Domain,
- port = settings.Port.ToString(),
- id = settings.UUID,
- aid = "0",
- net = "",
- type = "none",
- host = settings.Domain,
- path = "",
- tls = "tls",
- ps = "",
- };
-
- switch (xrayType)
- {
- case XrayType.VMESS_TCP:
- vmess.ps = "vmess-tcp-tls";
- vmess.net = "tcp";
- vmess.type = "http";
- vmess.path = settings.VMESS_TCP_Path;
- break;
- case XrayType.VMESS_WS:
- vmess.ps = "vmess-ws-tls";
- vmess.net = "ws";
- vmess.type = "none";
- vmess.path = settings.VMESS_WS_Path;
- break;
- case XrayType.VMESS_KCP:
- vmess.ps = "vmess-mKCP";
- vmess.port = settings.VMESS_KCP_Port.ToString();
- vmess.net = "kcp";
- vmess.type = settings.VMESS_KCP_Type;
- vmess.path = settings.VMESS_KCP_Seed;
- vmess.tls = "";
- break;
- default:
- return string.Empty;
- }
-
- var base64Url = Base64.Encode(JsonConvert.SerializeObject(vmess));
- return $"vmess://" + base64Url;
- }
-
- private static string BuildVlessShareLink(XrayType xrayType, XraySettings settings)
- {
- var _protocol = string.Empty;
- var _uuid = settings.UUID;
- var _domain = settings.Domain;
- var _port = settings.Port;
- var _type = string.Empty;
- var _encryption = "none";
- var _security = "tls";
- var _path = "/";
- var _host = settings.Domain;
- var _descriptiveText = string.Empty;
- var _headerType = "none";
- var _seed = string.Empty;
-
- switch (xrayType)
- {
- case XrayType.VLESS_TCP:
- _protocol = "vless";
- _type = "tcp";
- _descriptiveText = "vless-tcp-tls";
- break;
- case XrayType.VLESS_TCP_XTLS:
- _protocol = "vless";
- _type = "tcp";
- _security = "xtls";
- _descriptiveText = "vless-tcp-xtls";
- break;
- case XrayType.VLESS_WS:
- _protocol = "vless";
- _type = "ws";
- _path = settings.VLESS_WS_Path;
- _descriptiveText = "vless-ws-tls";
- break;
- case XrayType.VLESS_KCP:
- _protocol = "vless";
- _type = "kcp";
- _headerType = settings.VLESS_KCP_Type;
- _seed = settings.VLESS_KCP_Seed;
- _port = settings.VLESS_KCP_Port;
- _security = "none";
- _descriptiveText = "vless-mKCP";
- break;
- case XrayType.VLESS_gRPC:
- _protocol = "vless";
- _type = "grpc";
- _path = settings.VLESS_gRPC_ServiceName;
- _descriptiveText = "vless-gRPC";
- break;
- case XrayType.Trojan_TCP:
- _protocol = "trojan";
- _uuid = settings.TrojanPassword;
- _descriptiveText = "trojan-tcp";
- break;
- default:
- throw new Exception("暂未实现的协议");
- }
-
-
- string parametersURL = string.Empty;
- if (xrayType != XrayType.Trojan_TCP)
- {
- // 4.3 传输层相关段
- parametersURL = $"?type={_type}&encryption={_encryption}&security={_security}&path={HttpUtility.UrlEncode(_path)}&headerType={_headerType}";
-
- // kcp
- if (xrayType == XrayType.VLESS_KCP)
- {
- parametersURL += $"&seed={_seed}";
- }
-
- // 4.4 TLS 相关段
- if (xrayType == XrayType.VLESS_TCP_XTLS)
- {
- parametersURL += "&flow=xtls-rprx-direct";
- }
- }
-
-
- return $"{_protocol}://{HttpUtility.UrlEncode(_uuid)}@{_domain}:{_port}{parametersURL}#{HttpUtility.UrlEncode(_descriptiveText)}";
- }
-
- }
-
-
-
- class Vmess
- {
- public string v { get; set; }
- public string ps { get; set; }
- public string add { get; set; }
- public string port { get; set; }
- public string id { get; set; }
- public string aid { get; set; }
- public string net { get; set; }
- public string type { get; set; }
- public string host { get; set; }
- public string path { get; set; }
- public string tls { get; set; }
- }
-}
diff --git a/ProxySU_Core/Models/XrayType.cs b/ProxySU_Core/Models/XrayType.cs
deleted file mode 100644
index 6611113..0000000
--- a/ProxySU_Core/Models/XrayType.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-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
- }
-}
diff --git a/ProxySU_Core/Properties/AssemblyInfo.cs b/ProxySU_Core/Properties/AssemblyInfo.cs
deleted file mode 100644
index 2107e9b..0000000
--- a/ProxySU_Core/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// 有关程序集的一般信息由以下
-// 控制。更改这些特性值可修改
-// 与程序集关联的信息。
-[assembly: AssemblyTitle("ProxySU_Core")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("ProxySU_Core")]
-[assembly: AssemblyCopyright("Copyright © 2021")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// 将 ComVisible 设置为 false 会使此程序集中的类型
-//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
-//请将此类型的 ComVisible 特性设置为 true。
-[assembly: ComVisible(false)]
-
-//若要开始生成可本地化的应用程序,请设置
-//.csproj 文件中的 CultureYouAreCodingWith
-//例如,如果您在源文件中使用的是美国英语,
-//使用的是美国英语,请将 设置为 en-US。 然后取消
-//对以下 NeutralResourceLanguage 特性的注释。 更新
-//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //主题特定资源词典所处位置
- //(未在页面中找到资源时使用,
- //或应用程序资源字典中找到时使用)
- ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
- //(未在页面中找到资源时使用,
- //、应用程序或任何主题专用资源字典中找到时使用)
-)]
-
-
-// 程序集的版本信息由下列四个值组成:
-//
-// 主版本
-// 次版本
-// 生成号
-// 修订号
-//
-//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
-//通过使用 "*",如下所示:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.1.3.0")]
-[assembly: AssemblyFileVersion("3.1.3.0")]
diff --git a/ProxySU_Core/Properties/Resources.Designer.cs b/ProxySU_Core/Properties/Resources.Designer.cs
deleted file mode 100644
index e7f1775..0000000
--- a/ProxySU_Core/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// 此代码由工具生成。
-// 运行时版本:4.0.30319.42000
-//
-// 对此文件的更改可能会导致不正确的行为,并且如果
-// 重新生成代码,这些更改将会丢失。
-//
-//------------------------------------------------------------------------------
-
-namespace ProxySU_Core.Properties {
- using System;
-
-
- ///
- /// 一个强类型的资源类,用于查找本地化的字符串等。
- ///
- // 此类是由 StronglyTypedResourceBuilder
- // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
- // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
- // (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// 返回此类使用的缓存的 ResourceManager 实例。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProxySU_Core.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// 重写当前线程的 CurrentUICulture 属性,对
- /// 使用此强类型资源类的所有资源查找执行重写。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
- }
-}
diff --git a/ProxySU_Core/Properties/Resources.resx b/ProxySU_Core/Properties/Resources.resx
deleted file mode 100644
index af7dbeb..0000000
--- a/ProxySU_Core/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/ProxySU_Core/Properties/Settings.Designer.cs b/ProxySU_Core/Properties/Settings.Designer.cs
deleted file mode 100644
index a45c35e..0000000
--- a/ProxySU_Core/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// 此代码由工具生成。
-// 运行时版本:4.0.30319.42000
-//
-// 对此文件的更改可能会导致不正确的行为,并且如果
-// 重新生成代码,这些更改将会丢失。
-//
-//------------------------------------------------------------------------------
-
-namespace ProxySU_Core.Properties {
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default {
- get {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/ProxySU_Core/Properties/Settings.settings b/ProxySU_Core/Properties/Settings.settings
deleted file mode 100644
index 033d7a5..0000000
--- a/ProxySU_Core/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ProxySU_Core/ProxySU.ico b/ProxySU_Core/ProxySU.ico
deleted file mode 100644
index 9d7a128..0000000
Binary files a/ProxySU_Core/ProxySU.ico and /dev/null differ
diff --git a/ProxySU_Core/ProxySU_Core.csproj b/ProxySU_Core/ProxySU_Core.csproj
deleted file mode 100644
index aeca57f..0000000
--- a/ProxySU_Core/ProxySU_Core.csproj
+++ /dev/null
@@ -1,463 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {B066015C-D347-4493-92F1-6556D3863996}
- WinExe
- ProxySU_Core
- ProxySU_Core
- v4.7.2
- 512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
- true
- true
-
-
- false
- C:\Users\huife\Desktop\publish_new\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 1
- 1.0.0.%2a
- false
- true
- true
-
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- D529B8E43BC86188988D830C545B400612900BB3
-
-
- ProxySU_Core_TemporaryKey.pfx
-
-
- true
-
-
- false
-
-
- ProxySU.ico
-
-
-
- ..\packages\ControlzEx.5.0.0\lib\net452\ControlzEx.dll
-
-
- ..\packages\MahApps.Metro.2.4.5\lib\net46\MahApps.Metro.dll
-
-
- ..\packages\MaterialDesignColors.2.0.1\lib\net452\MaterialDesignColors.dll
-
-
- ..\packages\MaterialDesignThemes.MahApps.0.1.7\lib\net452\MaterialDesignThemes.MahApps.dll
-
-
- ..\packages\MaterialDesignThemes.4.1.0\lib\net452\MaterialDesignThemes.Wpf.dll
-
-
- ..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.31\lib\net45\Microsoft.Xaml.Behaviors.dll
-
-
- ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll
-
-
- ..\packages\QRCoder.1.4.1\lib\net40\QRCoder.dll
-
-
- ..\packages\SSH.NET.2020.0.1\lib\net40\Renci.SshNet.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4.0
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
- App.xaml
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ClientInfoWindow.xaml
-
-
- ShadowSocksControl.xaml
-
-
- Trojan_TCP_Control.xaml
-
-
- VLESS_gRPC_Control.xaml
-
-
- VLESS_KCP_Control.xaml
-
-
- VLESS_TCP_TLS_Control.xaml
-
-
- VLESS_WS_TLS_Control.xaml
-
-
- VLESS_XTLS_Control.xaml
-
-
- VMESS_KCP_Control.xaml
-
-
- VMESS_TCP_TLS_Control.xaml
-
-
- VMESS_WS_TLS_Control.xaml
-
-
- MainWindow.xaml
-
-
- RecordEditorWindow.xaml
-
-
- ServerInfoControl.xaml
-
-
- XrayEditorControl.xaml
-
-
- TerminalWindow.xaml
-
-
- TextBoxWindow.xaml
-
-
-
-
-
- Code
-
-
- True
- True
- Resources.resx
-
-
- True
- Settings.settings
- True
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
-
-
-
-
-
- False
- Microsoft .NET Framework 4.6.1 %28x86 和 x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
- 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。
-
-
-
-
\ No newline at end of file
diff --git a/ProxySU_Core/Resources/Languages/en.xaml b/ProxySU_Core/Resources/Languages/en.xaml
deleted file mode 100644
index dc9d5ab..0000000
--- a/ProxySU_Core/Resources/Languages/en.xaml
+++ /dev/null
@@ -1,122 +0,0 @@
-
- Deployment
- Readme
-
- Language(语言)
- Chinese
- English
- Hosts
- Add Host
- Export Config
- Export Sub
- Random
-
-
-
- Selection
- Remark
- Host
- Port
- Proxy
- Actions
- Cnsole
- Config
- Edit
- Delete
-
-
- Actions
- Connect
- Edit
- Edit Xray
- Delete
- Install
- Save
- Save as
- Info
- Warning
- Error
-
-
-
- Server Editor
- Connection
- User
- Password
- Tag
- Host
- Port
- Method
- Password Login
- KeyLogin
- Key
- Upload
- Proxy
- Method
- None
- Http
- Socks5
- Host
- Port
- User
- Password
- Please enter host
- Please enter port
- Please enter proxy host
- Please enter proxy port
-
-
- VLESS over TCP With XTLS
Preferred
- VLESS over TCP with TLS
XTLS is Preferred
- VLESS over WS with TLS
Support CDN
- VLESS mKCP
low delay
- VMESS over WS with TLS
Support CDN
- VMESS mKCP
low delay
- ShadowSocks
Support CDN
- Trojan over TCP with TLS
Trojan
-
- Address
- GuiseHost
- UUID
- VLESS WS Path
- VLESS KCP Seed
- VLESS KCP Type
- VLESS KCP Port
- VMESS WS Path
- VMESS KCP Seed
- VMESS KCP Type
- VMESS KCP Port
- SS Pwd
- SS Method
- Trojan Pwd
- xray Port
- default port is 443
-
-
- Console
- xray/settings
- Install
- UpdateSettings
- UpdateXray
- UninstallXray
-
- cert/web
- UpdateCert
- UploadSelfCert
- UploadWebite
- UninstallCaddy
-
- Install: Finally output "please enjoy" to indicate completion, go to [Configuration] or [Config] to view the node
- Update Settings: After modifying the node configuration information, there is no need to reinstall, this function can update the configuration
- Update Cert: The certificate is automatically updated by default, but it is not guaranteed to be updated successfully. If it fails, please use [Update Cert] to update manually
- Upload website: Disguise the website, the correct static webpage must have an index.html file (please check), and then upload the website compressed package.
- The following is a static web page connection provided by netizens, please check whether there is an index.html file by yourself
-
-
-
-
- View Settings
-
-
\ No newline at end of file
diff --git a/ProxySU_Core/Resources/Languages/zh_cn.xaml b/ProxySU_Core/Resources/Languages/zh_cn.xaml
deleted file mode 100644
index dc13120..0000000
--- a/ProxySU_Core/Resources/Languages/zh_cn.xaml
+++ /dev/null
@@ -1,120 +0,0 @@
-
- 应用布署
- 说明文档
-
- 语言(Language)
- 中文
- 英文
- 主机列表
- 添加主机
- 导出配置
- 导出订阅
- 随机
-
-
- 选择
- 别名
- 主机
- 端口
- 代理
- 操作
- 控制台
- 查看配置
- 编辑
- 删除
-
-
- 连接
- 安装
- 编辑
- 编辑模板
- 删除
- 保存
- 另存为
- 消息
- 提示
- 错误
-
-
- 服务器管理
- 连接
- 用户名
- 密码
- 别名
- 主机
- 端口
- 登陆方式
- 密码登陆
- 密钥登陆
- 密钥
- 上传
- 代理
- 类型
- 无
- Http
- Socks5
- 代理地址
- 代理端口
- 用户名
- 密码
- 请输入主机
- 请输入端口号
- 请输入代理地址
- 请输入代理端口号
-
- VLESS Over TCP With XTLS
性能数倍,首选方式。
- VLESS over TCP with TLS
仍推荐XTLS。
- VLESS over WS with TLS
推荐,支持CDN。
- VLESS mKCP
游戏推荐,延迟低。
- VMESS over WS with TLS
推荐,支持CDN。
- VMESS mKCP
游戏推荐,延迟低。
- ShadowSocks
SS,支持udp。
- Trojan over TCP with TLS
Trojan。
-
-
- 域名
- 伪装域名
- UUID
- VLESS WS路径
- VLESS KCP Seed
- VLESS KCP伪装
- VLESS KCP端口
- VMESS WS路径
- VMESS KCP Seed
- VMESS KCP伪装
- VMESS KCP端口
- SS密码
- SS加密方式
- Trojan密码
- xray端口
- 默认端口443,不建议修改
-
-
-
-
- 控制台
- 内核/配置
- 一键安装
- 更新配置
- 更新xray内核
- 卸载代理
-
- 证书/网站
- 续签证书
- 上传自有证书
- 上传网站
- 卸载Caddy
-
- 一键安装: 最后输出 “请尽情享用” 表示完成,到[查看配置]或[导出配置]查看节点
- 更新配置: 修改节点配置信息后,不需要重新安装,这个功能就可以更新配置了
- 续签证书: 证书默认是自动续签,但不保证都能续签成功,如果失败请用[续签证书]手动续签
- 上传网站: 伪装网站,正确的静态网页要有index.html文件(请检查),然后将网站压缩包上传。
- 如下是网友提供的静态网页连接,请自行检查是否有index.html文件
-
-
-
- 查看配置信息
-
-
\ No newline at end of file
diff --git a/ProxySU_Core/Resources/ProxySU.ico b/ProxySU_Core/Resources/ProxySU.ico
deleted file mode 100644
index 9d7a128..0000000
Binary files a/ProxySU_Core/Resources/ProxySU.ico and /dev/null differ
diff --git a/ProxySU_Core/Resources/Styles/MaterialDesignThemes.Overrides.xaml b/ProxySU_Core/Resources/Styles/MaterialDesignThemes.Overrides.xaml
deleted file mode 100644
index 5909ff8..0000000
--- a/ProxySU_Core/Resources/Styles/MaterialDesignThemes.Overrides.xaml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/trojan-go/base.caddyfile b/ProxySU_Core/Templates/trojan-go/base.caddyfile
deleted file mode 100644
index 7975d73..0000000
--- a/ProxySU_Core/Templates/trojan-go/base.caddyfile
+++ /dev/null
@@ -1,9 +0,0 @@
-:##port## {
- root * /usr/share/caddy
- file_server
- ##reverse_proxy##
-}
-
-##domain##:80 {
- redir https://##domain##{uri}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/trojan-go/trojan-go.json b/ProxySU_Core/Templates/trojan-go/trojan-go.json
deleted file mode 100644
index acb0207..0000000
--- a/ProxySU_Core/Templates/trojan-go/trojan-go.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "run_type": "server",
- "local_addr": "0.0.0.0",
- "local_port": 443,
- "remote_addr": "127.0.0.1",
- "remote_port": 80,
- "password": [
- ""
- ],
- "ssl": {
- "cert": "/usr/local/etc/trojan-go/trojan-go.crt",
- "key": "/usr/local/etc/trojan-go/trojan-go.key",
- "sni": ""
- }
-
-}
diff --git a/ProxySU_Core/Templates/xray/base.json b/ProxySU_Core/Templates/xray/base.json
deleted file mode 100644
index 84a9d1f..0000000
--- a/ProxySU_Core/Templates/xray/base.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "log": {},
- "api": {},
- "dns": {},
- "routing": {},
- "policy": {},
- "inbounds": [],
- "outbounds": [],
- "transport": {},
- "stats": {},
- "reverse": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/caddy/base.caddyfile b/ProxySU_Core/Templates/xray/caddy/base.caddyfile
deleted file mode 100644
index 7975d73..0000000
--- a/ProxySU_Core/Templates/xray/caddy/base.caddyfile
+++ /dev/null
@@ -1,9 +0,0 @@
-:##port## {
- root * /usr/share/caddy
- file_server
- ##reverse_proxy##
-}
-
-##domain##:80 {
- redir https://##domain##{uri}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/00_log/00_log.json b/ProxySU_Core/Templates/xray/client/00_log/00_log.json
deleted file mode 100644
index 6a4cf00..0000000
--- a/ProxySU_Core/Templates/xray/client/00_log/00_log.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "log": {
- "loglevel": "warning"
- }
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/01_api/01_api.json b/ProxySU_Core/Templates/xray/client/01_api/01_api.json
deleted file mode 100644
index aa1982b..0000000
--- a/ProxySU_Core/Templates/xray/client/01_api/01_api.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "api": null
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/02_dns/02_dns.json b/ProxySU_Core/Templates/xray/client/02_dns/02_dns.json
deleted file mode 100644
index 63472d2..0000000
--- a/ProxySU_Core/Templates/xray/client/02_dns/02_dns.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "dns": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/03_routing/03_routing.json b/ProxySU_Core/Templates/xray/client/03_routing/03_routing.json
deleted file mode 100644
index a187d31..0000000
--- a/ProxySU_Core/Templates/xray/client/03_routing/03_routing.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "routing": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/04_policy/04_policy.json b/ProxySU_Core/Templates/xray/client/04_policy/04_policy.json
deleted file mode 100644
index 4beed61..0000000
--- a/ProxySU_Core/Templates/xray/client/04_policy/04_policy.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "policy": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/05_inbounds/05_inbounds.json b/ProxySU_Core/Templates/xray/client/05_inbounds/05_inbounds.json
deleted file mode 100644
index c402972..0000000
--- a/ProxySU_Core/Templates/xray/client/05_inbounds/05_inbounds.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "inbounds": [
- {
- "protocol": "http",
- "port": 1081
- },
- {
- "port": 1080,
- "protocol": "socks",
- "sniffing": {
- "enabled": true,
- "destOverride": [
- "http",
- "tls"
- ]
- },
- "settings": {
- "udp": true,
- "auth": "noauth"
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/06_outbounds/06_outbounds.json b/ProxySU_Core/Templates/xray/client/06_outbounds/06_outbounds.json
deleted file mode 100644
index 20e2beb..0000000
--- a/ProxySU_Core/Templates/xray/client/06_outbounds/06_outbounds.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "outbounds": []
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/06_outbounds/VLESS_HTTP2_TLS.json b/ProxySU_Core/Templates/xray/client/06_outbounds/VLESS_HTTP2_TLS.json
deleted file mode 100644
index 8718383..0000000
--- a/ProxySU_Core/Templates/xray/client/06_outbounds/VLESS_HTTP2_TLS.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "outbounds": [
- {
- "protocol": "vless",
- "settings": {
- "vnext": [
- {
- "address": "",
- "port": 443,
- "users": [
- {
- "id": "",
- "encryption": "none"
- }
- ]
- }
- ]
- },
- "streamSettings": {
- "network": "h2",
- "security": "tls",
- "httpSettings": {
- "host": [
- ""
- ],
- "path": null
- }
- }
- }
- ]
-}
diff --git a/ProxySU_Core/Templates/xray/client/06_outbounds/VLESS_TCP_TLS_WS.json b/ProxySU_Core/Templates/xray/client/06_outbounds/VLESS_TCP_TLS_WS.json
deleted file mode 100644
index 7a3c871..0000000
--- a/ProxySU_Core/Templates/xray/client/06_outbounds/VLESS_TCP_TLS_WS.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "outbounds": [
- {
- "protocol": "vless",
- "settings": {
- "vnext": [
- {
- "address": "",
- "port": 443,
- "users": [
- {
- "id": "",
- "encryption": "none",
- "level": 0
- }
- ]
- }
- ]
- },
- "streamSettings": {
- "network": "ws",
- "security": "tls",
- "tlsSettings": {
- "serverName": ""
- },
- "wsSettings": {
- "path": ""
- }
- }
- }
- ]
-}
diff --git a/ProxySU_Core/Templates/xray/client/07_transport/07_transport.json b/ProxySU_Core/Templates/xray/client/07_transport/07_transport.json
deleted file mode 100644
index 6269103..0000000
--- a/ProxySU_Core/Templates/xray/client/07_transport/07_transport.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "transport": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/08_stats/08_stats.json b/ProxySU_Core/Templates/xray/client/08_stats/08_stats.json
deleted file mode 100644
index 02c9ed0..0000000
--- a/ProxySU_Core/Templates/xray/client/08_stats/08_stats.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "stats": null
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/client/09_reverse/09_reverse.json b/ProxySU_Core/Templates/xray/client/09_reverse/09_reverse.json
deleted file mode 100644
index 6fa38a4..0000000
--- a/ProxySU_Core/Templates/xray/client/09_reverse/09_reverse.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "reverse": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/00_log/00_log.json b/ProxySU_Core/Templates/xray/server/00_log/00_log.json
deleted file mode 100644
index 40c2cd5..0000000
--- a/ProxySU_Core/Templates/xray/server/00_log/00_log.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "log": {
- "access": "none",
- "loglevel": "none"
- }
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/01_api/01_api.json b/ProxySU_Core/Templates/xray/server/01_api/01_api.json
deleted file mode 100644
index 34c6b17..0000000
--- a/ProxySU_Core/Templates/xray/server/01_api/01_api.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "api": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/02_dns/02_dns.json b/ProxySU_Core/Templates/xray/server/02_dns/02_dns.json
deleted file mode 100644
index 63472d2..0000000
--- a/ProxySU_Core/Templates/xray/server/02_dns/02_dns.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "dns": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/03_routing/03_routing.json b/ProxySU_Core/Templates/xray/server/03_routing/03_routing.json
deleted file mode 100644
index 0aa4964..0000000
--- a/ProxySU_Core/Templates/xray/server/03_routing/03_routing.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "routing": {
- "domainStrategy": "AsIs",
- "rules": [
- {
- "type": "field",
- "ip": [
- "geoip:private"
- ],
- "outboundTag": "block"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/04_policy/04_policy.json b/ProxySU_Core/Templates/xray/server/04_policy/04_policy.json
deleted file mode 100644
index 4beed61..0000000
--- a/ProxySU_Core/Templates/xray/server/04_policy/04_policy.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "policy": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/05_inbounds.json b/ProxySU_Core/Templates/xray/server/05_inbounds/05_inbounds.json
deleted file mode 100644
index 24465ae..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/05_inbounds.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "inbounds": []
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/Shadowsocks-AEAD.json b/ProxySU_Core/Templates/xray/server/05_inbounds/Shadowsocks-AEAD.json
deleted file mode 100644
index e7179e5..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/Shadowsocks-AEAD.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "port": 12345,
- "protocol": "shadowsocks",
- "settings": {
- "clients": [
- {
- "password": "",
- "method": "aes-128-gcm"
- }
- ],
- "network": "tcp,udp"
- }
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_TCP.json b/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_TCP.json
deleted file mode 100644
index 8ea5ad9..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_TCP.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "port": 1310,
- "listen": "127.0.0.1",
- "protocol": "trojan",
- "settings": {
- "clients": [
- {
- "password": ""
- }
- ],
- "fallbacks": [
- {
- "dest": 8080
- }
- ]
- },
- "streamSettings": {
- "network": "tcp",
- "security": "none",
- "tcpSettings": {
- "acceptProxyProtocol": true
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_WS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_WS.json
deleted file mode 100644
index 51d725c..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_WS.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "port": 1320,
- "listen": "127.0.0.1",
- "protocol": "trojan",
- "settings": {
- "clients": [
- {
- "password": ""
- }
- ],
- "fallbacks": [
- {
- "dest": 80
- }
- ]
- },
-
- "streamSettings": {
- "network": "ws",
- "security": "none",
- "wsSettings": {
- "acceptProxyProtocol": true,
- "path": "/trojanws"
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_HTTP2.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_HTTP2.json
deleted file mode 100644
index a99e848..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_HTTP2.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "port": 1234,
- "listen": "127.0.0.1",
- "protocol": "vmess",
- "settings": {
- "decryption": "none",
- "clients": [
- {
- "id": ""
- }
- ]
- },
- "streamSettings": {
- "network": "h2",
- "httpSettings": {
- "path": ""
- }
- }
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_KCP.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_KCP.json
deleted file mode 100644
index a619549..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_KCP.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "port": 3456,
- "protocol": "vless",
- "settings": {
- "clients": [
- {
- "id": ""
- }
- ],
- "decryption": "none"
- },
- "streamSettings": {
- "network": "mkcp",
- "kcpSettings": {
- "uplinkCapacity": 100,
- "downlinkCapacity": 100,
- "congestion": true,
- "header": {
- "type": "none"
- },
- "seed": null
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_TCP_XTLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_TCP_XTLS.json
deleted file mode 100644
index eab8363..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_TCP_XTLS.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "port": 443,
- "protocol": "vless",
- "settings": {
- "clients": [
- {
- "id": "",
- "flow": "xtls-rprx-direct"
- }
- ],
- "decryption": "none",
- "fallbacks": []
- },
- "streamSettings": {
- "network": "tcp",
- "security": "xtls",
- "xtlsSettings": {
- "allowInsecure": false,
- "minVersion": "1.2",
- "alpn": [
- "http/1.1"
- ],
- "certificates": [
- {
- "certificateFile": "/usr/local/etc/xray/ssl/xray_ssl.crt",
- "keyFile": "/usr/local/etc/xray/ssl/xray_ssl.key"
- }
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_WS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_WS.json
deleted file mode 100644
index 0abf2e8..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_WS.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "port": 1234,
- "listen": "127.0.0.1",
- "protocol": "vless",
- "settings": {
- "clients": [
- {
- "id": ""
- }
- ],
- "decryption": "none"
- },
- "streamSettings": {
- "network": "ws",
- "security": "none",
- "wsSettings": {
- "acceptProxyProtocol": true,
- "path": "/websocket"
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_gRPC.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_gRPC.json
deleted file mode 100644
index 319888d..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_gRPC.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "port": 2002,
- "listen": "127.0.0.1",
- "protocol": "vless",
- "settings": {
- "clients": [
- {
- "id": ""
- }
- ],
- "decryption": "none"
- },
- "streamSettings": {
- "network": "grpc",
- "grpcSettings": {
- "serviceName": "",
- "certificates": [
- {
- "certificateFile": "/usr/local/etc/xray/ssl/xray_ssl.crt",
- "keyFile": "/usr/local/etc/xray/ssl/xray_ssl.key"
- }
- ]
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_HTTP2.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_HTTP2.json
deleted file mode 100644
index 9957e76..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_HTTP2.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "port": 1234,
- "listen": "127.0.0.1",
- "protocol": "vmess",
- "settings": {
- "clients": [
- {
- "id": ""
- }
- ]
- },
- "streamSettings": {
- "network": "h2",
- "httpSettings": {
- "path": ""
- }
- }
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_KCP.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_KCP.json
deleted file mode 100644
index 0c3ea2b..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_KCP.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "port": 3456,
- "protocol": "vmess",
- "settings": {
- "clients": [
- {
- "id": ""
- }
- ]
- },
- "streamSettings": {
- "network": "mkcp",
- "kcpSettings": {
- "uplinkCapacity": 100,
- "downlinkCapacity": 100,
- "congestion": true,
- "header": {
- "type": "none"
- },
- "seed": null
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_TCP.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_TCP.json
deleted file mode 100644
index b14181e..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_TCP.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "port": 443,
- "listen": "127.0.0.1",
- "protocol": "vmess",
- "settings": {
- "clients": [
- {
- "id": ""
- }
- ]
- },
- "streamSettings": {
- "network": "tcp",
- "security": "none",
- "tcpSettings": {
- "acceptProxyProtocol": true,
- "header": {
- "type": "http",
- "request": {
- "path": [
- "/vmesstcp"
- ]
- }
- }
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_WS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_WS.json
deleted file mode 100644
index 2e863a4..0000000
--- a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_WS.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "port": 3456,
- "listen": "127.0.0.1",
- "protocol": "vmess",
- "settings": {
- "clients": [
- {
- "id": ""
- }
- ]
- },
- "streamSettings": {
- "network": "ws",
- "security": "none",
- "wsSettings": {
- "acceptProxyProtocol": true,
- "path": "/vmessws"
- }
- }
-}
diff --git a/ProxySU_Core/Templates/xray/server/06_outbounds/06_outbounds.json b/ProxySU_Core/Templates/xray/server/06_outbounds/06_outbounds.json
deleted file mode 100644
index 467a4e1..0000000
--- a/ProxySU_Core/Templates/xray/server/06_outbounds/06_outbounds.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "outbounds": [
- {
- "protocol": "freedom",
- "tag": "direct"
- },
- {
- "protocol": "blackhole",
- "tag": "block"
- }
- ]
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/07_transport/07_transport.json b/ProxySU_Core/Templates/xray/server/07_transport/07_transport.json
deleted file mode 100644
index 6269103..0000000
--- a/ProxySU_Core/Templates/xray/server/07_transport/07_transport.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "transport": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/08_stats/08_stats.json b/ProxySU_Core/Templates/xray/server/08_stats/08_stats.json
deleted file mode 100644
index b406e15..0000000
--- a/ProxySU_Core/Templates/xray/server/08_stats/08_stats.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "stats": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Templates/xray/server/09_reverse/09_reverse.json b/ProxySU_Core/Templates/xray/server/09_reverse/09_reverse.json
deleted file mode 100644
index 6fa38a4..0000000
--- a/ProxySU_Core/Templates/xray/server/09_reverse/09_reverse.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "reverse": {}
-}
\ No newline at end of file
diff --git a/ProxySU_Core/Tools/DateTimeUtils.cs b/ProxySU_Core/Tools/DateTimeUtils.cs
deleted file mode 100644
index 32cb7b5..0000000
--- a/ProxySU_Core/Tools/DateTimeUtils.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Net;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace ProxySU_Core.Tools
-{
- public static class DateTimeUtils
- {
- ///
- /// 从国家授时中心获取标准GMT时间,读取https://www.tsa.cn
- /// GMT时间与UTC时间没有差别,可以UTC=GMT
- ///
- /// 返回网络时间
- public static DateTime GetUTCTime()
- {
- DateTime time;
- try
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.tsa.cn");
- request.Method = "HEAD";
- request.AllowAutoRedirect = false;
- HttpWebResponse reponse = (HttpWebResponse)request.GetResponse();
- string cc = reponse.GetResponseHeader("date");
- reponse.Close();
-
- bool s = GMTStrParse(cc, out time);
- return time;
- }
- catch
- {
- return new DateTime(1970, 1, 1, 0, 0, 0, 0);
- }
- }
-
- public static bool GMTStrParse(string gmtStr, out DateTime gmtTime) //抓取的date是GMT格式的字符串,这里转成datetime
- {
- CultureInfo enUS = new CultureInfo("en-US");
- bool s = DateTime.TryParseExact(gmtStr, "r", enUS, DateTimeStyles.None, out gmtTime);
- return s;
- }
-
- //设置系统时间的API函数
- [DllImport("kernel32.dll")]
- private static extern bool SetLocalTime(ref SYSTEMTIME time);
-
- [StructLayout(LayoutKind.Sequential)]
- private struct SYSTEMTIME
- {
- public short year;
- public short month;
- public short dayOfWeek;
- public short day;
- public short hour;
- public short minute;
- public short second;
- public short milliseconds;
- }
-
- ///
- /// 设置系统时间
- ///
- /// 需要设置的时间
- /// 返回系统时间设置状态,true为成功,false为失败
- public static bool SetDate(DateTime dt)
- {
- SYSTEMTIME st;
-
- st.year = (short)dt.Year;
- st.month = (short)dt.Month;
- st.dayOfWeek = (short)dt.DayOfWeek;
- st.day = (short)dt.Day;
- st.hour = (short)dt.Hour;
- st.minute = (short)dt.Minute;
- st.second = (short)dt.Second;
- st.milliseconds = (short)dt.Millisecond;
- bool rt = SetLocalTime(ref st);
- return rt;
- }
- }
-}
diff --git a/ProxySU_Core/Tools/Extensions.cs b/ProxySU_Core/Tools/Extensions.cs
deleted file mode 100644
index 1c4af48..0000000
--- a/ProxySU_Core/Tools/Extensions.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace System
-{
- public static class Extensions
- {
- // Deep clone
- public static T DeepClone(this T obj)
- {
- if (obj == null)
- throw new ArgumentNullException("Object cannot be null");
- return (T)Process(obj);
- }
-
- static object Process(object obj)
- {
- if (obj == null)
- return null;
- Type type = obj.GetType();
- if (type.IsValueType || type == typeof(string))
- {
- return obj;
- }
- else if (type.IsArray)
- {
- Type elementType = Type.GetType(
- type.FullName.Replace("[]", string.Empty));
- var array = obj as Array;
- Array copied = Array.CreateInstance(elementType, array.Length);
- for (int i = 0; i < array.Length; i++)
- {
- copied.SetValue(Process(array.GetValue(i)), i);
- }
- return Convert.ChangeType(copied, obj.GetType());
- }
- else if (type.IsClass)
- {
- object toret = Activator.CreateInstance(obj.GetType());
- FieldInfo[] fields = type.GetFields(BindingFlags.Public |
- BindingFlags.NonPublic | BindingFlags.Instance);
- foreach (FieldInfo field in fields)
- {
- object fieldValue = field.GetValue(obj);
- if (fieldValue == null)
- continue;
- field.SetValue(toret, Process(fieldValue));
- }
- return toret;
- }
- else
- throw new ArgumentException("Unknown type");
- }
-
- }
-}
diff --git a/ProxySU_Core/ViewModels/BaseCommand.cs b/ProxySU_Core/ViewModels/BaseCommand.cs
deleted file mode 100644
index 21860cd..0000000
--- a/ProxySU_Core/ViewModels/BaseCommand.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Input;
-
-namespace ProxySU_Core.ViewModels
-{
- public class BaseCommand : ICommand
- {
- private readonly Action