mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-22 05:06:08 +03:00
update 4.0.4
This commit is contained in:
parent
b9b41b6554
commit
860dfb6520
@ -3,6 +3,7 @@ using ProxySuper.Core.Services;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
namespace ProxySuper.Core.Models.Projects
|
namespace ProxySuper.Core.Models.Projects
|
||||||
{
|
{
|
||||||
@ -37,33 +38,11 @@ namespace ProxySuper.Core.Models.Projects
|
|||||||
}
|
}
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool WithTLS
|
public bool IsIPAddress
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var withOutTLSList = new List<XrayType> {
|
return IPAddress.TryParse(Domain, out _);
|
||||||
XrayType.ShadowsocksAEAD,
|
|
||||||
XrayType.VLESS_KCP,
|
|
||||||
XrayType.VMESS_KCP
|
|
||||||
};
|
|
||||||
|
|
||||||
return Types.Except(withOutTLSList).Count() > 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public bool IsFullbackMode
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var withoutFullback = new List<XrayType> {
|
|
||||||
XrayType.ShadowsocksAEAD,
|
|
||||||
XrayType.VLESS_KCP,
|
|
||||||
XrayType.VMESS_KCP,
|
|
||||||
XrayType.VLESS_gRPC,
|
|
||||||
};
|
|
||||||
|
|
||||||
return Types.Except(withoutFullback).Count() > 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -722,7 +722,6 @@ namespace ProxySuper.Core.Services
|
|||||||
throw new Exception("安装 acme.sh 失败,请联系开发者!");
|
throw new Exception("安装 acme.sh 失败,请联系开发者!");
|
||||||
}
|
}
|
||||||
|
|
||||||
RunCmd("cd ~/.acme.sh/");
|
|
||||||
RunCmd("alias acme.sh=~/.acme.sh/acme.sh");
|
RunCmd("alias acme.sh=~/.acme.sh/acme.sh");
|
||||||
|
|
||||||
// 申请证书
|
// 申请证书
|
||||||
|
@ -67,7 +67,7 @@ namespace ProxySuper.Core.Services
|
|||||||
public static string BuildCaddyConfig(XraySettings parameters, bool useCustomWeb = false)
|
public static string BuildCaddyConfig(XraySettings parameters, bool useCustomWeb = false)
|
||||||
{
|
{
|
||||||
var caddyStr = File.ReadAllText(Path.Combine(CaddyFileDir, "base.caddyfile"));
|
var caddyStr = File.ReadAllText(Path.Combine(CaddyFileDir, "base.caddyfile"));
|
||||||
caddyStr = caddyStr.Replace("##domain##", parameters.Domain);
|
caddyStr = caddyStr.Replace("##domain##", parameters.IsIPAddress ? "" : parameters.Domain);
|
||||||
caddyStr = caddyStr.Replace("##port##", FullbackPort.ToString());
|
caddyStr = caddyStr.Replace("##port##", FullbackPort.ToString());
|
||||||
|
|
||||||
if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
|
if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
|
||||||
@ -118,79 +118,77 @@ namespace ProxySuper.Core.Services
|
|||||||
|
|
||||||
var xrayConfig = LoadXrayConfig();
|
var xrayConfig = LoadXrayConfig();
|
||||||
|
|
||||||
if (parameters.IsFullbackMode)
|
var baseBound = GetBound("VLESS_TCP_XTLS.json");
|
||||||
|
baseBound.port = parameters.Port;
|
||||||
|
baseBound.settings.fallbacks.Add(JToken.FromObject(new
|
||||||
{
|
{
|
||||||
#region Fullbacks
|
dest = FullbackPort
|
||||||
var baseBound = GetBound("VLESS_TCP_XTLS.json");
|
}));
|
||||||
baseBound.port = parameters.Port;
|
xrayConfig.inbounds.Add(baseBound);
|
||||||
|
SetClients(baseBound, uuidList, withXtls: true);
|
||||||
|
|
||||||
|
#region Fullbacks
|
||||||
|
|
||||||
|
if (parameters.Types.Contains(XrayType.VLESS_WS))
|
||||||
|
{
|
||||||
|
var wsInbound = GetBound("VLESS_WS.json");
|
||||||
|
wsInbound.port = VLESS_WS_Port;
|
||||||
|
SetClients(wsInbound, uuidList);
|
||||||
|
wsInbound.streamSettings.wsSettings.path = parameters.VLESS_WS_Path;
|
||||||
baseBound.settings.fallbacks.Add(JToken.FromObject(new
|
baseBound.settings.fallbacks.Add(JToken.FromObject(new
|
||||||
{
|
{
|
||||||
dest = FullbackPort
|
dest = VLESS_WS_Port,
|
||||||
|
path = parameters.VLESS_WS_Path,
|
||||||
|
xver = 1,
|
||||||
}));
|
}));
|
||||||
xrayConfig.inbounds.Add(baseBound);
|
xrayConfig.inbounds.Add(JToken.FromObject(wsInbound));
|
||||||
SetClients(baseBound, uuidList, withXtls: true);
|
|
||||||
|
|
||||||
if (parameters.Types.Contains(XrayType.VLESS_WS))
|
|
||||||
{
|
|
||||||
var wsInbound = GetBound("VLESS_WS.json");
|
|
||||||
wsInbound.port = VLESS_WS_Port;
|
|
||||||
SetClients(wsInbound, uuidList);
|
|
||||||
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.VMESS_TCP))
|
|
||||||
{
|
|
||||||
var mtcpBound = GetBound("VMESS_TCP.json");
|
|
||||||
mtcpBound.port = VMESS_TCP_Port;
|
|
||||||
SetClients(mtcpBound, uuidList);
|
|
||||||
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;
|
|
||||||
SetClients(mwsBound, uuidList);
|
|
||||||
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.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));
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parameters.Types.Contains(XrayType.VMESS_TCP))
|
||||||
|
{
|
||||||
|
var mtcpBound = GetBound("VMESS_TCP.json");
|
||||||
|
mtcpBound.port = VMESS_TCP_Port;
|
||||||
|
SetClients(mtcpBound, uuidList);
|
||||||
|
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;
|
||||||
|
SetClients(mwsBound, uuidList);
|
||||||
|
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.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));
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
if (parameters.Types.Contains(XrayType.VLESS_gRPC))
|
if (parameters.Types.Contains(XrayType.VLESS_gRPC))
|
||||||
{
|
{
|
||||||
var gRPCInBound = GetBound("VLESS_gRPC.json");
|
var gRPCInBound = GetBound("VLESS_gRPC.json");
|
||||||
@ -211,8 +209,6 @@ namespace ProxySuper.Core.Services
|
|||||||
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound));
|
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (parameters.Types.Contains(XrayType.VMESS_KCP))
|
if (parameters.Types.Contains(XrayType.VMESS_KCP))
|
||||||
{
|
{
|
||||||
var kcpBound = GetBound("VMESS_KCP.json");
|
var kcpBound = GetBound("VMESS_KCP.json");
|
||||||
@ -223,7 +219,6 @@ namespace ProxySuper.Core.Services
|
|||||||
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound));
|
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (parameters.Types.Contains(XrayType.ShadowsocksAEAD))
|
if (parameters.Types.Contains(XrayType.ShadowsocksAEAD))
|
||||||
{
|
{
|
||||||
var ssBound = GetBound("Shadowsocks-AEAD.json");
|
var ssBound = GetBound("Shadowsocks-AEAD.json");
|
||||||
|
@ -68,18 +68,17 @@ namespace ProxySuper.Core.Services
|
|||||||
SyncTimeDiff();
|
SyncTimeDiff();
|
||||||
WriteOutput("时间同步完成");
|
WriteOutput("时间同步完成");
|
||||||
|
|
||||||
if (Parameters.WithTLS)
|
if (!Parameters.IsIPAddress)
|
||||||
{
|
{
|
||||||
WriteOutput("检测域名是否绑定本机IP...");
|
WriteOutput("检测域名是否绑定本机IP...");
|
||||||
ValidateDomain();
|
ValidateDomain();
|
||||||
WriteOutput("域名检测完成");
|
WriteOutput("域名检测完成");
|
||||||
|
|
||||||
|
|
||||||
WriteOutput("安装Caddy...");
|
|
||||||
InstallCaddy();
|
|
||||||
WriteOutput("Caddy安装完成");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WriteOutput("安装Caddy...");
|
||||||
|
InstallCaddy();
|
||||||
|
WriteOutput("Caddy安装完成");
|
||||||
|
|
||||||
WriteOutput("安装Xray-Core...");
|
WriteOutput("安装Xray-Core...");
|
||||||
InstallXrayWithCert();
|
InstallXrayWithCert();
|
||||||
WriteOutput("Xray-Core安装完成");
|
WriteOutput("Xray-Core安装完成");
|
||||||
@ -297,7 +296,7 @@ namespace ProxySuper.Core.Services
|
|||||||
RunCmd(@"mv /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.1");
|
RunCmd(@"mv /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.1");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Parameters.WithTLS)
|
if (!Parameters.IsIPAddress)
|
||||||
{
|
{
|
||||||
WriteOutput("安装TLS证书");
|
WriteOutput("安装TLS证书");
|
||||||
InstallCertToXray();
|
InstallCertToXray();
|
||||||
|
Loading…
Reference in New Issue
Block a user