From c68a8ff8728f5e850994ee7ed9d77a1d7caddd53 Mon Sep 17 00:00:00 2001 From: ProxySU Date: Fri, 14 Aug 2020 00:26:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E5=8D=87=E7=BA=A7=E5=88=B0caddy2?= =?UTF-8?q?=E5=81=9A=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProxySU/MainWindow.xaml.cs | 293 ++++++++++-------- ProxySU/TemplateConfiguration.xaml.cs | 1 + ProxySU/bin/Beta/Beta.zip | Bin 494003 -> 494654 bytes .../Http2Web_server_config.caddyfile | 24 +- TemplateConfg/Http2Web_server_config.json | 7 +- .../WebSocketTLSWeb_server_config.caddyfile | 21 +- .../WebSocket_TLS_server_config.json | 4 +- TemplateConfg/http2_server_config.json | 4 +- TemplateConfg/tcp_TLS_server_config.json | 4 +- TemplateConfg/trojan_server_config.json | 2 +- 10 files changed, 196 insertions(+), 164 deletions(-) diff --git a/ProxySU/MainWindow.xaml.cs b/ProxySU/MainWindow.xaml.cs index 5194188..12659df 100644 --- a/ProxySU/MainWindow.xaml.cs +++ b/ProxySU/MainWindow.xaml.cs @@ -44,6 +44,7 @@ namespace ProxySU //ReceiveConfigurationParameters[6]----QUIC密钥 //ReceiveConfigurationParameters[7]----伪装网站 //public static ConnectionInfo ConnectionInfo; + static bool testDomain = false; //设置标识--域名是否需要检测解析,初始化为不需要 public MainWindow() { InitializeComponent(); @@ -192,6 +193,7 @@ namespace ProxySU if (String.IsNullOrEmpty(ReceiveConfigurationParameters[4])==true) { ReceiveConfigurationParameters[4] = TextBoxHost.Text.ToString(); + testDomain = false; } //选择模板 if (String.IsNullOrEmpty(ReceiveConfigurationParameters[0]) == true) @@ -201,62 +203,74 @@ namespace ProxySU } else if (String.Equals(ReceiveConfigurationParameters[0], "TCP")) { + testDomain = false; serverConfig = "TemplateConfg\\tcp_server_config.json"; clientConfig = "TemplateConfg\\tcp_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")) { + testDomain = false; serverConfig = "TemplateConfg\\tcp_http_server_config.json"; clientConfig = "TemplateConfg\\tcp_http_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS")) { + testDomain = true; serverConfig = "TemplateConfg\\tcp_TLS_server_config.json"; clientConfig = "TemplateConfg\\tcp_TLS_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")) { + testDomain = false; serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json"; clientConfig = "TemplateConfg\\tcpTLSselfSigned_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket")) { + testDomain = false; serverConfig = "TemplateConfg\\webSocket_server_config.json"; clientConfig = "TemplateConfg\\webSocket_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS")) { + testDomain = true; serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json"; clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")) { + testDomain = false; serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json"; clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) { + testDomain = true; serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json"; clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "Http2")) { + testDomain = true; serverConfig = "TemplateConfg\\http2_server_config.json"; clientConfig = "TemplateConfg\\http2_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web")) { + testDomain = true; serverConfig = "TemplateConfg\\Http2Web_server_config.json"; clientConfig = "TemplateConfg\\Http2Web_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")) { + testDomain = false; serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json"; clientConfig = "TemplateConfg\\Http2selfSigned_client_config.json"; } //else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard")) else if (ReceiveConfigurationParameters[0].Contains("mKCP")) { + testDomain = false; serverConfig = "TemplateConfg\\mkcp_server_config.json"; clientConfig = "TemplateConfg\\mkcp_client_config.json"; } @@ -264,6 +278,7 @@ namespace ProxySU // else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard")) else if (ReceiveConfigurationParameters[0].Contains("Quic")) { + testDomain = false; serverConfig = "TemplateConfg\\quic_server_config.json"; clientConfig = "TemplateConfg\\quic_client_config.json"; } @@ -481,12 +496,8 @@ namespace ProxySU textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - //client.RunCommand("find / -name v2ray"); string cmdTestV2rayInstalled = @"find / -name v2ray"; - //MessageBox.Show(cmdTestV2rayInstalled); string resultCmdTestV2rayInstalled = client.RunCommand(cmdTestV2rayInstalled).Result; - //client.Disconnect(); - //MessageBox.Show(resultCmdTestV2rayInstalled); if (resultCmdTestV2rayInstalled.Contains("/usr/bin/v2ray") == true || resultCmdTestV2rayInstalled.Contains("/usr/local/bin/v2ray") == true) { MessageBoxResult messageBoxResult = MessageBox.Show("远程主机已安装V2ray,是否强制重新安装?", "", MessageBoxButton.YesNo, MessageBoxImage.Question); @@ -506,7 +517,6 @@ namespace ProxySU Thread.Sleep(1000); string result = client.RunCommand("uname -r").Result; - string[] linuxKernelVerStr= result.Split('-'); bool detectResult = DetectKernelVersion(linuxKernelVerStr[0]); @@ -520,38 +530,59 @@ namespace ProxySU //检测系统是否支持yum 或 apt-get或zypper,且支持Systemd //如果不存在组件,则命令结果为空,string.IsNullOrEmpty值为真, - bool getApt = String.IsNullOrEmpty(client.RunCommand("command -v apt-get").Result); + bool getApt = String.IsNullOrEmpty(client.RunCommand("command -v apt").Result); + bool getDnf = String.IsNullOrEmpty(client.RunCommand("command -v dnf").Result); bool getYum = String.IsNullOrEmpty(client.RunCommand("command -v yum").Result); bool getZypper = String.IsNullOrEmpty(client.RunCommand("command -v zypper").Result); bool getSystemd = String.IsNullOrEmpty(client.RunCommand("command -v systemctl").Result); bool getGetenforce = String.IsNullOrEmpty(client.RunCommand("command -v getenforce").Result); - //没有安装apt-get,也没有安装yum,也没有安装zypper,或者没有安装systemd的,不满足安装条件 - //也就是apt-get ,yum, zypper必须安装其中之一,且必须安装Systemd的系统才能安装。 - if ((getApt && getYum && getZypper) || getSystemd) + //没有安装apt,也没有安装dnf\yum,也没有安装zypper,或者没有安装systemd的,不满足安装条件 + //也就是apt ,dnf\yum, zypper必须安装其中之一,且必须安装Systemd的系统才能安装。 + if ((getApt && getDnf && getYum && getZypper) || getSystemd) { - MessageBox.Show($"系统缺乏必要的安装组件如:apt-get||yum||zypper||Syetemd,主机系统推荐使用:CentOS 7/8,Debian 8/9/10,Ubuntu 16.04及以上版本"); + MessageBox.Show($"系统缺乏必要的安装组件如:apt||dnf||yum||zypper||Syetemd,主机系统推荐使用:CentOS 7/8,Debian 8/9/10,Ubuntu 16.04及以上版本"); currentStatus = "系统环境不满足要求,安装失败!!"; textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); client.Disconnect(); return; } + //在相应系统内安装curl(如果没有安装curl) + if (string.IsNullOrEmpty(client.RunCommand("command -v curl").Result) == true) + { + //为假则表示系统有相应的组件。 + if (getApt == false) + { + client.RunCommand("apt -qq update"); + client.RunCommand("apt -y -qq install curl"); + } + else if (getDnf == false) + { + client.RunCommand("dnf -q makecache"); + client.RunCommand("dnf -y -q install curl"); + } + else if (getYum == false) + { + client.RunCommand("yum -q makecache"); + client.RunCommand("yum -y -q install curl"); + } + //else if (getZypper == false) + //{ + // client.RunCommand("zypper ref"); + // client.RunCommand("zypper -y install curl"); + //} + } + //判断是否启用了SELinux,如果启用了,并且工作在Enforcing模式下,则改为Permissive模式 if (getGetenforce == false) { string testSELinux = client.RunCommand("getenforce").Result; - //MessageBox.Show(testSELinux); if (testSELinux.Contains("Enforcing")==true) { - //MessageBox.Show("Enforcing"); client.RunCommand("setenforce 0");//不重启改为Permissive模式 client.RunCommand("sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config");//重启也工作在Permissive模式下 } - //else - //{ - // MessageBox.Show("非Enforcing"); - //} } //校对时间 @@ -560,7 +591,7 @@ namespace ProxySU Thread.Sleep(1000); //获取远程主机的时间戳 long timeStampVPS = Convert.ToInt64(client.RunCommand("date +%s").Result.ToString()); - //MessageBox.Show(timesStampVPS.ToString()); + //获取本地时间戳 TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0); long timeStampLocal = Convert.ToInt64(ts.TotalSeconds); @@ -574,41 +605,19 @@ namespace ProxySU client.Disconnect(); return; } - //MessageBox.Show(timesStamp2.ToString()); - //如果使用如果是WebSocket + TLS + Web/http2/Http2Web/tcp_TLS/WebSocket_TLS模式,需要检测域名解析是否正确 - if (serverConfig.Contains("WebSocketTLSWeb") == true || serverConfig.Contains("http2") == true || serverConfig.Contains("Http2Web") == true || serverConfig.Contains("tcp_TLS") == true || serverConfig.Contains("WebSocket_TLS") == true) + //如果使用是WebSocket + TLS + Web/http2/Http2Web/tcp_TLS/WebSocket_TLS模式,需要检测域名解析是否正确 + if (testDomain == true) { currentStatus = "正在检测域名是否解析到当前VPS的IP上......"; textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - //在相应系统内安装curl(如果没有安装curl) - if (string.IsNullOrEmpty(client.RunCommand("command -v curl").Result) == true) - { - //为假则表示系统有相应的组件。 - if (getApt == false) - { - client.RunCommand("apt-get -qq update"); - client.RunCommand("apt-get -y -qq install curl"); - } - if (getYum == false) - { - client.RunCommand("yum -q makecache"); - client.RunCommand("yum -y -q install curl"); - } - if (getZypper == false) - { - client.RunCommand("zypper ref"); - client.RunCommand("zypper -y install curl"); - } - } - + string nativeIp = client.RunCommand("curl -4 ip.sb").Result.ToString(); string testDomainCmd = "ping " + ReceiveConfigurationParameters[4] + " -c 1 | grep -oE -m1 \"([0-9]{1,3}\\.){3}[0-9]{1,3}\""; string resultCmd = client.RunCommand(testDomainCmd).Result.ToString(); - //MessageBox.Show("nativeIp"+nativeIp); - //MessageBox.Show("resultCmd"+ resultCmd); + if (String.Equals(nativeIp, resultCmd) == true) { currentStatus = "解析正确!"; @@ -626,32 +635,36 @@ namespace ProxySU } } - if (serverConfig.Contains("TLS") == true || serverConfig.Contains("http2") == true || serverConfig.Contains("Http2") == true) { + if (testDomain == true) { //检测是否安装lsof if (string.IsNullOrEmpty(client.RunCommand("command -v lsof").Result) == true) { //为假则表示系统有相应的组件。 if (getApt == false) { - client.RunCommand("apt-get -qq update"); - client.RunCommand("apt-get -y -qq install lsof"); + client.RunCommand("apt -qq update"); + client.RunCommand("apt -y -qq install lsof"); } - if (getYum == false) + else if (getDnf == false) + { + client.RunCommand("dnf -q makecache"); + client.RunCommand("dnf -y -q install lsof"); + } + else if (getYum == false) { client.RunCommand("yum -q makecache"); client.RunCommand("yum -y -q install lsof"); } - if (getZypper == false) - { - client.RunCommand("zypper ref"); - client.RunCommand("zypper -y install lsof"); - } + //else if (getZypper == false) + //{ + // client.RunCommand("zypper ref"); + // client.RunCommand("zypper -y install lsof"); + //} } currentStatus = "正在检测端口占用情况......"; textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - //MessageBox.Show(@"lsof -n -P -i :80 | grep LISTEN"); - //MessageBox.Show(client.RunCommand(@"lsof -n -P -i :80 | grep LISTEN").Result); + if (String.IsNullOrEmpty(client.RunCommand(@"lsof -n -P -i :80 | grep LISTEN").Result) == false || String.IsNullOrEmpty(client.RunCommand(@"lsof -n -P -i :443 | grep LISTEN").Result) == false) { //MessageBox.Show("80/443端口之一,或全部被占用,请先用系统工具中的“释放80/443端口”工具,释放出,再重新安装"); @@ -671,12 +684,9 @@ namespace ProxySU string cmdTestPort = @"lsof -n -P -i :443 | grep LISTEN"; string cmdResult = client.RunCommand(cmdTestPort).Result; - //MessageBox.Show(cmdTestPort); if (String.IsNullOrEmpty(cmdResult) == false) { - //MessageBox.Show(cmdResult); - string[] cmdResultArry443 = cmdResult.Split(' '); - //MessageBox.Show(cmdResultArry443[3]); + string[] cmdResultArry443 = cmdResult.Split(' '); client.RunCommand($"systemctl stop {cmdResultArry443[0]}"); client.RunCommand($"systemctl disable {cmdResultArry443[0]}"); client.RunCommand($"kill -9 {cmdResultArry443[3]}"); @@ -701,28 +711,6 @@ namespace ProxySU textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - //在相应系统内安装curl(如果没有安装curl) - if (string.IsNullOrEmpty(client.RunCommand("command -v curl").Result) == true) - { - //为假则表示系统有相应的组件。 - if (getApt == false) - { - client.RunCommand("apt-get -qq update"); - client.RunCommand("apt-get -y -qq install curl"); - } - if (getYum == false) - { - client.RunCommand("yum -q makecache"); - client.RunCommand("yum -y -q install curl"); - } - if (getZypper == false) - { - client.RunCommand("zypper ref"); - client.RunCommand("zypper -y install curl"); - } - } - - //下载官方安装脚本安装 client.RunCommand("curl -o /tmp/go.sh https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh"); @@ -738,6 +726,7 @@ namespace ProxySU client.Disconnect(); return; } + client.RunCommand("systemctl enable v2ray; systemctl start v2ray"); //client.RunCommand("mv /etc/v2ray/config.json /etc/v2ray/config.json.1"); //上传配置文件 @@ -752,35 +741,35 @@ namespace ProxySU //设置uuid serverJson["inbounds"][0]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2]; //除WebSocketTLSWeb/http2Web模式外设置监听端口 - if (serverConfig.Contains("WebSocketTLSWeb") == false && serverConfig.Contains("Http2Web") == false) + if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") == false && ReceiveConfigurationParameters[0].Contains("http2Web") == false) { serverJson["inbounds"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]); } - //TLS自签证书/http2Web模式下,使用v2ctl 生成自签证书 - if (serverConfig.Contains("selfSigned") == true|| serverConfig.Contains("Http2Web") == true) + //TLS自签证书/WebSocketTLS(自签证书)/http2Web/http2自签证书模式下,使用v2ctl 生成自签证书 + if (ReceiveConfigurationParameters[0].Contains("WebSocketTLSselfSigned") == true || ReceiveConfigurationParameters[0].Contains("tcpTLSselfSigned") == true || ReceiveConfigurationParameters[0].Contains("http2Web") == true || ReceiveConfigurationParameters[0].Contains("http2selfSigned") == true) { - string selfSignedCa = client.RunCommand("/usr/bin/v2ray/v2ctl cert --ca").Result; + string selfSignedCa = client.RunCommand("/usr/local/bin/v2ctl cert --ca").Result; JObject selfSignedCaJObject = JObject.Parse(selfSignedCa); serverJson["inbounds"][0]["streamSettings"]["tlsSettings"]["certificates"][0] = selfSignedCaJObject; } //如果是WebSocketTLSWeb/WebSocketTLS/WebSocketTLS(自签证书)模式,则设置路径 - if (serverConfig.Contains("WebSocket") == true) + if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS") == true || ReceiveConfigurationParameters[0].Contains("WebSocketTLSselfSigned") == true || ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") == true) { serverJson["inbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3]; } //如果是Http2模式下,设置路径 - if (serverConfig.Contains("http2") == true|| serverConfig.Contains("Http2") == true) + if (ReceiveConfigurationParameters[0].Contains("Http2") == true || ReceiveConfigurationParameters[0].Contains("http2Web") == true || ReceiveConfigurationParameters[0].Contains("http2selfSigned") == true) { serverJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; } //如果是Http2Web模式下,设置host - if (serverConfig.Contains("Http2Web") == true) + if (ReceiveConfigurationParameters[0].Contains("http2Web") == true) { - serverJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + // serverJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; serverJson["inbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4]; } //mkcp模式下,设置伪装类型 - if (serverConfig.Contains("mkcp") == true) + if (ReceiveConfigurationParameters[0].Contains("mKCP") == true) { serverJson["inbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; if (String.IsNullOrEmpty(ReceiveConfigurationParameters[6])==false ) @@ -789,7 +778,7 @@ namespace ProxySU } } //quic模式下设置伪装类型及密钥 - if (serverConfig.Contains("quic") == true) + if (ReceiveConfigurationParameters[0].Contains("Quic") == true) { serverJson["inbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; serverJson["inbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6]; @@ -839,66 +828,100 @@ namespace ProxySU } //如果是WebSocket + TLS + Web模式,需要安装Caddy - if (serverConfig.Contains("WebSocketTLSWeb")==true || serverConfig.Contains("Http2Web") == true) + if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") ==true || ReceiveConfigurationParameters[0].Contains("http2Web") == true) { currentStatus = "使用WebSocket+TLS+Web/HTTP2+TLS+Web模式,正在安装Caddy......"; textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - - client.RunCommand("curl https://getcaddy.com -o getcaddy"); - client.RunCommand("bash getcaddy personal hook.service"); - client.RunCommand("mkdir -p /etc/caddy"); - client.RunCommand("mkdir -p /var/www"); - + + //为假则表示系统有相应的组件。 + if (getApt == false) + { + client.RunCommand(@"echo ""deb [trusted=yes] https://apt.fury.io/caddy/ /"" | tee -a /etc/apt/sources.list.d/caddy-fury.list"); + client.RunCommand("apt -qq update"); + client.RunCommand("apt -y -qq install caddy"); + } + else if (getDnf == false) + { + client.RunCommand(@"dnf install 'dnf-command(copr)' -y"); + client.RunCommand(@"dnf copr enable @caddy/caddy -y"); + //client.RunCommand("dnf -q makecache"); + client.RunCommand("dnf -y -q install caddy"); + } + else if (getYum == false) + { + client.RunCommand(@"yum install yum-plugin-copr -y"); + client.RunCommand(@"yum copr enable @caddy/caddy -y"); + //client.RunCommand("yum -q makecache"); + client.RunCommand("yum -y -q install caddy"); + } + //else if (getZypper == false) + //{ + // client.RunCommand("zypper ref"); + // client.RunCommand("zypper -y install curl"); + //} + installResult = client.RunCommand("find / -name caddy").Result.ToString(); + + if (!installResult.Contains("/usr/bin/caddy")) + { + MessageBox.Show("安装Caddy失败!"); + + currentStatus = "安装Caddy失败!"; + textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); + client.Disconnect(); + return; + } + else { + currentStatus = "Caddy安装成功!"; + textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); + Thread.Sleep(1000); + client.RunCommand("systemctl enable caddy"); + } currentStatus = "上传Caddy配置文件......"; textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - if (serverConfig.Contains("WebSocketTLSWeb") == true) + if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") == true) { - serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.caddyfile"; + serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.caddyfile"; } - if (serverConfig.Contains("Http2Web") == true) + else if (ReceiveConfigurationParameters[0].Contains("http2Web") == true) { serverConfig = "TemplateConfg\\Http2Web_server_config.caddyfile"; } upLoadPath = "/etc/caddy/Caddyfile"; + client.RunCommand("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak"); UploadConfig(connectionInfo, serverConfig, upLoadPath); - //设置Caddyfile文件中的tls 邮箱 + //设置Caddyfile文件中的tls 邮箱,在caddy2中已经不需要设置。 //string sshCmdEmail = $"email={ReceiveConfigurationParameters[4]};email=${{email/./@}};echo $email";//结尾有回车符 //string email = client.RunCommand(sshCmdEmail).Result.Replace("\n", "");//删除结尾的回车符 - string email = $"user@{ReceiveConfigurationParameters[4]}"; - string sshCmd = $"sed -i 's/off/{email}/' {upLoadPath}";//设置Caddyfile中的邮箱 + //string email = $"user@{ReceiveConfigurationParameters[4]}"; + //string sshCmd = $"sed -i 's/off/{email}/' {upLoadPath}";//设置Caddyfile中的邮箱 + //client.RunCommand(sshCmd); + + //设置域名 + string sshCmd = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/' {upLoadPath}"; client.RunCommand(sshCmd); + //设置Path sshCmd = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[3]}/' {upLoadPath}"; - //MessageBox.Show(sshCmd); - client.RunCommand(sshCmd); - //设置域名 - sshCmd = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/' {upLoadPath}"; - //MessageBox.Show(sshCmd); client.RunCommand(sshCmd); + + //设置伪装网站 if (String.IsNullOrEmpty(ReceiveConfigurationParameters[7])==false) { - sshCmd = $"sed -i 's/##sites##/proxy \\/ {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; - //MessageBox.Show(sshCmd); + sshCmd = $"sed -i 's/##sites##/reverse_proxy {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; client.RunCommand(sshCmd); } Thread.Sleep(2000); - - //安装Caddy服务 - sshCmd = $"caddy -service install -agree -conf /etc/caddy/Caddyfile -email {email}"; - //MessageBox.Show(sshCmd); - client.RunCommand(sshCmd); - //启动Caddy服务 - client.RunCommand("caddy -service restart"); + client.RunCommand("systemctl restart caddy"); } - if (serverConfig.Contains("http2") == true|| serverConfig.Contains("WebSocket_TLS") ==true|| serverConfig.Contains("tcp_TLS") == true) + if (ReceiveConfigurationParameters[0].Contains("Http2") == true|| ReceiveConfigurationParameters[0].Contains("WebSocketTLS") ==true|| ReceiveConfigurationParameters[0].Contains("tcpTLS") == true) { currentStatus = "使用Http2/WebSocket+TLS/tcp+TLS模式,正在安装acme.sh......"; textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); @@ -907,18 +930,23 @@ namespace ProxySU if (getApt == false) { //client.RunCommand("apt-get -qq update"); - client.RunCommand("apt-get -y -qq install socat"); + client.RunCommand("apt -y -qq install socat"); } - if (getYum == false) + else if (getDnf == false) + { + //client.RunCommand("yum -q makecache"); + client.RunCommand("dnf -y -q install socat"); + } + else if (getYum == false) { //client.RunCommand("yum -q makecache"); client.RunCommand("yum -y -q install socat"); } - if (getZypper == false) - { - // client.RunCommand("zypper ref"); - client.RunCommand("zypper -y install socat"); - } + //if (getZypper == false) + //{ + // // client.RunCommand("zypper ref"); + // client.RunCommand("zypper -y install socat"); + //} client.RunCommand("curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | INSTALLONLINE=1 sh"); client.RunCommand("cd ~/.acme.sh/"); client.RunCommand("alias acme.sh=~/.acme.sh/acme.sh"); @@ -927,13 +955,13 @@ namespace ProxySU textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - client.RunCommand("mkdir -p /etc/v2ray/ssl"); + client.RunCommand("mkdir -p /usr/local/etc/v2ray/ssl"); client.RunCommand($"/root/.acme.sh/acme.sh --issue --standalone -d {ReceiveConfigurationParameters[4]}"); currentStatus = "安装证书到V2ray......"; textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - client.RunCommand($"/root/.acme.sh/acme.sh --installcert -d {ReceiveConfigurationParameters[4]} --certpath /etc/v2ray/ssl/v2ray_ssl.crt --keypath /etc/v2ray/ssl/v2ray_ssl.key --capath /etc/v2ray/ssl/v2ray_ssl.crt --reloadcmd \"systemctl restart v2ray\""); + client.RunCommand($"/root/.acme.sh/acme.sh --installcert -d {ReceiveConfigurationParameters[4]} --certpath /usr/local/etc/v2ray/ssl/v2ray_ssl.crt --keypath /usr/local/etc/v2ray/ssl/v2ray_ssl.key --capath /usr/local/etc/v2ray/ssl/v2ray_ssl.crt --reloadcmd \"systemctl restart v2ray\""); } currentStatus = "正在启动V2ray......"; @@ -1083,7 +1111,8 @@ namespace ProxySU catch (Exception ex2) { MessageBox.Show("sftp" + ex2.ToString()); - MessageBox.Show("sftp出现未知错误"); + MessageBox.Show("sftp出现未知错误,上传文件失败,请重试!"); + return; } } @@ -1469,16 +1498,16 @@ namespace ProxySU Thread.Sleep(1000); } - //检测系统是否支持yum 或 apt-get或zypper,且支持Systemd + //检测系统是否支持yum 或 apt或zypper,且支持Systemd //如果不存在组件,则命令结果为空,string.IsNullOrEmpty值为真, - bool getApt = String.IsNullOrEmpty(client.RunCommand("command -v apt-get").Result); + bool getApt = String.IsNullOrEmpty(client.RunCommand("command -v apt").Result); bool getYum = String.IsNullOrEmpty(client.RunCommand("command -v yum").Result); bool getZypper = String.IsNullOrEmpty(client.RunCommand("command -v zypper").Result); bool getSystemd = String.IsNullOrEmpty(client.RunCommand("command -v systemctl").Result); bool getGetenforce = String.IsNullOrEmpty(client.RunCommand("command -v getenforce").Result); - //没有安装apt-get,也没有安装yum,也没有安装zypper,或者没有安装systemd的,不满足安装条件 - //也就是apt-get ,yum, zypper必须安装其中之一,且必须安装Systemd的系统才能安装。 + //没有安装apt,也没有安装yum,也没有安装zypper,或者没有安装systemd的,不满足安装条件 + //也就是apt ,yum, zypper必须安装其中之一,且必须安装Systemd的系统才能安装。 if ((getApt && getYum && getZypper) || getSystemd) { MessageBox.Show($"系统缺乏必要的安装组件如:apt-get||yum||zypper||Syetemd,主机系统推荐使用:CentOS 7/8,Debian 8/9/10,Ubuntu 16.04及以上版本"); diff --git a/ProxySU/TemplateConfiguration.xaml.cs b/ProxySU/TemplateConfiguration.xaml.cs index 18f6f25..303e819 100644 --- a/ProxySU/TemplateConfiguration.xaml.cs +++ b/ProxySU/TemplateConfiguration.xaml.cs @@ -60,6 +60,7 @@ namespace ProxySU { //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "TCPhttp"; + //伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "http"; } //TCP+TLS模式被选中 diff --git a/ProxySU/bin/Beta/Beta.zip b/ProxySU/bin/Beta/Beta.zip index c44b5eb0b87d3cde228a62ac0108c22c4241703c..8891babe8070283667becb17ae00879f4e500bc5 100644 GIT binary patch delta 49704 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
%PrD|NpAgq2b`oe?1Gb-gM=U3^%s~o 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 delta 48951 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 diff --git a/TemplateConfg/Http2Web_server_config.caddyfile b/TemplateConfg/Http2Web_server_config.caddyfile index 92e675a..467ecb9 100644 --- a/TemplateConfg/Http2Web_server_config.caddyfile +++ b/TemplateConfg/Http2Web_server_config.caddyfile @@ -1,14 +1,16 @@ ##domain## { - log stdout - errors stderr - root /var/www - tls off + root * /usr/share/caddy + file_server + tls { + protocols tls1.2 tls1.3 + ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 + curves x25519 + } + + reverse_proxy ##path## http://localhost:10000 { + transport http { + versions h2c 2 + } + } ##sites## - proxy ##path## https://localhost:10000 { - insecure_skip_verify - header_upstream Host {host} - header_upstream X-Real-IP {remote} - header_upstream X-Forwarded-For {remote} - header_upstream X-Forwarded-Port {server_port} - header_upstream X-Forwarded-Proto "https" } \ No newline at end of file diff --git a/TemplateConfg/Http2Web_server_config.json b/TemplateConfg/Http2Web_server_config.json index df87596..dc1fab1 100644 --- a/TemplateConfg/Http2Web_server_config.json +++ b/TemplateConfg/Http2Web_server_config.json @@ -14,17 +14,12 @@ }, "streamSettings": { "network": "h2", - "security": "tls", + "security": "none", "httpSettings": { "path": null, "host": [ "" ] - }, - "tlsSettings": { - "certificates": [ - {} - ] } } } diff --git a/TemplateConfg/WebSocketTLSWeb_server_config.caddyfile b/TemplateConfg/WebSocketTLSWeb_server_config.caddyfile index fbb8bc6..af33d56 100644 --- a/TemplateConfg/WebSocketTLSWeb_server_config.caddyfile +++ b/TemplateConfg/WebSocketTLSWeb_server_config.caddyfile @@ -1,11 +1,16 @@ ##domain## { - log stdout - errors stderr - root /var/www - tls off - ##sites## - proxy ##path## localhost:10000 { - websocket - header_upstream -Origin + root * /usr/share/caddy + file_server + tls { + protocols tls1.2 tls1.3 + ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 + curves x25519 } + @v2ray_websocket { + path ##path## + header Connection *Upgrade* + header Upgrade websocket + } + reverse_proxy @v2ray_websocket localhost:10000 + ##sites## } \ No newline at end of file diff --git a/TemplateConfg/WebSocket_TLS_server_config.json b/TemplateConfg/WebSocket_TLS_server_config.json index 6b82607..64641e4 100644 --- a/TemplateConfg/WebSocket_TLS_server_config.json +++ b/TemplateConfg/WebSocket_TLS_server_config.json @@ -16,8 +16,8 @@ "tlsSettings": { "certificates": [ { - "certificateFile": "/etc/v2ray/ssl/v2ray_ssl.crt", - "keyFile": "/etc/v2ray/ssl/v2ray_ssl.key" + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" } ] }, diff --git a/TemplateConfg/http2_server_config.json b/TemplateConfg/http2_server_config.json index 5bb1ef7..5334bf3 100644 --- a/TemplateConfg/http2_server_config.json +++ b/TemplateConfg/http2_server_config.json @@ -17,8 +17,8 @@ "tlsSettings": { "certificates": [ { - "certificateFile": "/etc/v2ray/ssl/v2ray_ssl.crt", - "keyFile": "/etc/v2ray/ssl/v2ray_ssl.key" + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" } ] }, diff --git a/TemplateConfg/tcp_TLS_server_config.json b/TemplateConfg/tcp_TLS_server_config.json index fb47415..209db44 100644 --- a/TemplateConfg/tcp_TLS_server_config.json +++ b/TemplateConfg/tcp_TLS_server_config.json @@ -16,8 +16,8 @@ "tlsSettings": { "certificates": [ { - "certificateFile": "/etc/v2ray/ssl/v2ray_ssl.crt", - "keyFile": "/etc/v2ray/ssl/v2ray_ssl.key" + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" } ] }, diff --git a/TemplateConfg/trojan_server_config.json b/TemplateConfg/trojan_server_config.json index fa0735c..69580dd 100644 --- a/TemplateConfg/trojan_server_config.json +++ b/TemplateConfg/trojan_server_config.json @@ -1,6 +1,6 @@ { "run_type": "server", - "local_addr": "0.0.0.0", + "local_addr": "::", "local_port": 443, "remote_addr": "127.0.0.1", "remote_port": 80,