From ab9cd99c902cdf655809661e3272518040cb1cfe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=80=81=E4=B9=9D?= <366193849@qq.com>
Date: Mon, 13 Sep 2021 21:04:53 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E7=B1=BB=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FastGithub.ReverseProxy/CertService.cs | 38 ++++++++++++++++---
FastGithub.ReverseProxy/GitUtil.cs | 36 ------------------
.../GithubSshProxyHandler.cs | 8 ++--
3 files changed, 36 insertions(+), 46 deletions(-)
delete mode 100644 FastGithub.ReverseProxy/GitUtil.cs
diff --git a/FastGithub.ReverseProxy/CertService.cs b/FastGithub.ReverseProxy/CertService.cs
index d92d84a..4ae16e3 100644
--- a/FastGithub.ReverseProxy/CertService.cs
+++ b/FastGithub.ReverseProxy/CertService.cs
@@ -3,6 +3,7 @@ using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
@@ -74,18 +75,43 @@ namespace FastGithub.ReverseProxy
}
else if (OperatingSystem.IsLinux())
{
- this.logger.LogWarning($"不支持自动安装证书{this.CaCerFilePath}:请根据具体linux发行版安装CA证书");
+ this.logger.LogWarning($"请根据具体linux发行版手工安装CA证书{this.CaCerFilePath}");
}
else if (OperatingSystem.IsMacOS())
{
- this.logger.LogWarning($"不支持自动安装证书{this.CaCerFilePath}:请手工安装CA证书然后设置信任CA证书");
+ this.logger.LogWarning($"请手工安装CA证书然后设置信任CA证书{this.CaCerFilePath}");
}
else
{
- this.logger.LogWarning($"不支持自动安装证书{this.CaCerFilePath}:请根据你的系统平台手工安装和信任CA证书");
+ this.logger.LogWarning($"请根据你的系统平台手工安装和信任CA证书{this.CaCerFilePath}");
}
- GitUtil.ConfigSslverify(false);
+ GitConfigSslverify(false);
+ }
+
+ ///
+ /// 设置ssl验证
+ ///
+ /// 是否验证
+ ///
+ public static bool GitConfigSslverify(bool value)
+ {
+ try
+ {
+ Process.Start(new ProcessStartInfo
+ {
+ FileName = "git",
+ Arguments = $"config --global http.sslverify {value.ToString().ToLower()}",
+ UseShellExecute = true,
+ CreateNoWindow = true,
+ WindowStyle = ProcessWindowStyle.Hidden
+ });
+ return true;
+ }
+ catch (Exception)
+ {
+ return false;
+ }
}
///
@@ -113,9 +139,9 @@ namespace FastGithub.ReverseProxy
}
store.Close();
}
- catch (Exception ex)
+ catch (Exception)
{
- this.logger.LogWarning($"安装证书{this.CaCerFilePath}失败:请手动安装到“将所有的证书都放入下载存储”\\“受信任的根证书颁发机构”", ex);
+ this.logger.LogWarning($"请手工安装CA证书{this.CaCerFilePath}到“将所有的证书都放入下载存储”\\“受信任的根证书颁发机构”");
}
}
diff --git a/FastGithub.ReverseProxy/GitUtil.cs b/FastGithub.ReverseProxy/GitUtil.cs
deleted file mode 100644
index 63d8076..0000000
--- a/FastGithub.ReverseProxy/GitUtil.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using System.Diagnostics;
-
-namespace FastGithub.ReverseProxy
-{
- ///
- /// git工具
- ///
- static class GitUtil
- {
- ///
- /// 设置ssl验证
- ///
- /// 是否验证
- ///
- public static bool ConfigSslverify(bool value)
- {
- try
- {
- Process.Start(new ProcessStartInfo
- {
- FileName = "git",
- Arguments = $"config --global http.sslverify {value.ToString().ToLower()}",
- UseShellExecute = true,
- CreateNoWindow = true,
- WindowStyle = ProcessWindowStyle.Hidden
- });
- return true;
- }
- catch (Exception)
- {
- return false;
- }
- }
- }
-}
diff --git a/FastGithub.ReverseProxy/GithubSshProxyHandler.cs b/FastGithub.ReverseProxy/GithubSshProxyHandler.cs
index 7750570..f7b7883 100644
--- a/FastGithub.ReverseProxy/GithubSshProxyHandler.cs
+++ b/FastGithub.ReverseProxy/GithubSshProxyHandler.cs
@@ -27,17 +27,17 @@ namespace FastGithub.ReverseProxy
///
/// ssh连接后
///
- ///
+ ///
///
- public override async Task OnConnectedAsync(ConnectionContext connection)
+ public override async Task OnConnectedAsync(ConnectionContext context)
{
var address = await this.domainResolver.ResolveAsync(this.githubSshEndPoint);
using var socket = new Socket(address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
await socket.ConnectAsync(address, this.githubSshEndPoint.Port);
var targetStream = new NetworkStream(socket, ownsSocket: false);
- var task1 = targetStream.CopyToAsync(connection.Transport.Output);
- var task2 = connection.Transport.Input.CopyToAsync(targetStream);
+ var task1 = targetStream.CopyToAsync(context.Transport.Output);
+ var task2 = context.Transport.Input.CopyToAsync(targetStream);
await Task.WhenAny(task1, task2);
}
}