From 87deb0c5cbb84919a649b6ead99689064fbe722f Mon Sep 17 00:00:00 2001 From: xljiulang <366193849@qq.com> Date: Sun, 20 Jun 2021 15:23:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=89=AB=E6=8F=8F=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E6=90=9C=E7=B4=A2=E6=9B=BF=E4=BB=A3dns=E8=A7=A3?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...HttpHandler.cs => GithubDnsHttpHandler.cs} | 40 ++++++------------- .../ScannerServiceCollectionExtensions.cs | 2 +- 2 files changed, 13 insertions(+), 29 deletions(-) rename FastGithub.Scanner/{LoopbackDnsHttpHandler.cs => GithubDnsHttpHandler.cs} (53%) diff --git a/FastGithub.Scanner/LoopbackDnsHttpHandler.cs b/FastGithub.Scanner/GithubDnsHttpHandler.cs similarity index 53% rename from FastGithub.Scanner/LoopbackDnsHttpHandler.cs rename to FastGithub.Scanner/GithubDnsHttpHandler.cs index 529d390..abb498b 100644 --- a/FastGithub.Scanner/LoopbackDnsHttpHandler.cs +++ b/FastGithub.Scanner/GithubDnsHttpHandler.cs @@ -1,8 +1,5 @@ -using DNS.Client; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using System; -using System.Linq; -using System.Net; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -10,15 +7,21 @@ using System.Threading.Tasks; namespace FastGithub.Scanner { /// - /// 由本程序提值的dns的httpHandler + /// Github的dns解析的httpHandler + /// 使扫描索结果作为github的https请求的域名解析 /// [Service(ServiceLifetime.Transient)] - sealed class LoopbackDnsHttpHandler : DelegatingHandler + sealed class GithubDnsHttpHandler : DelegatingHandler { + private readonly GithubContextCollection scanResults; + /// - /// 本程序的dns + /// Github的dns解析的httpHandler /// - private static readonly DnsClient dnsClient = new(IPAddress.Loopback); + public GithubDnsHttpHandler(GithubContextCollection scanResults) + { + this.scanResults = scanResults; + } /// /// 发送消息 @@ -31,7 +34,7 @@ namespace FastGithub.Scanner var uri = request.RequestUri; if (uri != null && uri.HostNameType == UriHostNameType.Dns) { - var address = await LookupAsync(uri.Host); + var address = this.scanResults.FindBestAddress(uri.Host); if (address != null) { var builder = new UriBuilder(uri) @@ -45,24 +48,5 @@ namespace FastGithub.Scanner return await base.SendAsync(request, cancellationToken); } - - /// - /// dns解析ip - /// - /// - /// - private static async Task LookupAsync(string host) - { - try - { - using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMilliseconds(500d)); - var addresses = await dnsClient.Lookup(host, cancellationToken: cancellationTokenSource.Token); - return addresses.FirstOrDefault(); - } - catch (Exception) - { - return default; - } - } } } diff --git a/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs b/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs index f5cda97..ca46c4d 100644 --- a/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs +++ b/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs @@ -37,7 +37,7 @@ namespace FastGithub UseProxy = false, AllowAutoRedirect = false }) - .AddHttpMessageHandler(); + .AddHttpMessageHandler(); return services .AddMemoryCache()