diff --git a/FastGithub.Scanner/DomainAddressProviders/MetaDomainAddressProvider.cs b/FastGithub.Scanner/DomainAddressProviders/GithubMetaProvider.cs similarity index 89% rename from FastGithub.Scanner/DomainAddressProviders/MetaDomainAddressProvider.cs rename to FastGithub.Scanner/DomainAddressProviders/GithubMetaProvider.cs index de019e9..d0543a7 100644 --- a/FastGithub.Scanner/DomainAddressProviders/MetaDomainAddressProvider.cs +++ b/FastGithub.Scanner/DomainAddressProviders/GithubMetaProvider.cs @@ -13,14 +13,14 @@ using System.Threading.Tasks; namespace FastGithub.Scanner.DomainMiddlewares { [Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))] - sealed class MetaDomainAddressProvider : IDomainAddressProvider + sealed class GithubMetaProvider : IDomainAddressProvider { private readonly IOptionsMonitor options; - private readonly ILogger logger; + private readonly ILogger logger; - public MetaDomainAddressProvider( + public GithubMetaProvider( IOptionsMonitor options, - ILogger logger) + ILogger logger) { this.options = options; this.logger = logger; @@ -28,7 +28,7 @@ namespace FastGithub.Scanner.DomainMiddlewares public async Task> CreateDomainAddressesAsync() { - var setting = this.options.CurrentValue.DominAddressProvider.MetaDomainAddress; + var setting = this.options.CurrentValue.DominAddressProviders.GithubMetaProvider; if (setting.Enable == false) { return Enumerable.Empty(); diff --git a/FastGithub.Scanner/DomainAddressProviders/IPAddressComDomainAddressProvider.cs b/FastGithub.Scanner/DomainAddressProviders/IPAddressComProvider.cs similarity index 84% rename from FastGithub.Scanner/DomainAddressProviders/IPAddressComDomainAddressProvider.cs rename to FastGithub.Scanner/DomainAddressProviders/IPAddressComProvider.cs index ef398df..d518236 100644 --- a/FastGithub.Scanner/DomainAddressProviders/IPAddressComDomainAddressProvider.cs +++ b/FastGithub.Scanner/DomainAddressProviders/IPAddressComProvider.cs @@ -12,15 +12,15 @@ using System.Threading.Tasks; namespace FastGithub.Scanner.DomainMiddlewares { [Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))] - sealed class IPAddressComDomainAddressProvider : IDomainAddressProvider + sealed class IPAddressComProvider : IDomainAddressProvider { private readonly IOptionsMonitor options; - private readonly ILogger logger; + private readonly ILogger logger; private readonly Uri lookupUri = new("https://www.ipaddress.com/ip-lookup"); - public IPAddressComDomainAddressProvider( - IOptionsMonitor options, - ILogger logger) + public IPAddressComProvider( + IOptionsMonitor options, + ILogger logger) { this.options = options; this.logger = logger; @@ -28,14 +28,14 @@ namespace FastGithub.Scanner.DomainMiddlewares public async Task> CreateDomainAddressesAsync() { - var setting = this.options.CurrentValue.DominAddressProvider.IPAddressComDomainAddress; + var setting = this.options.CurrentValue.DominAddressProviders.IPAddressComProvider; if (setting.Enable == false) { return Enumerable.Empty(); } using var httpClient = new HttpClient(); - var result = new List(); + var result = new HashSet(); foreach (var domain in setting.Domains) { try @@ -58,14 +58,14 @@ namespace FastGithub.Scanner.DomainMiddlewares { var keyValue = new KeyValuePair("host", domain); var content = new FormUrlEncodedContent(Enumerable.Repeat(keyValue, 1)); - var request = new HttpRequestMessage + using var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = lookupUri, Content = content }; - var response = await httpClient.SendAsync(request); + using var response = await httpClient.SendAsync(request); var html = await response.Content.ReadAsStringAsync(); var match = Regex.Match(html, @"(?<=

IP Lookup : )\d+\.\d+\.\d+\.\d+", RegexOptions.IgnoreCase); diff --git a/FastGithub.Scanner/DomainAddressProviders/DnsDomainAddressProvider.cs b/FastGithub.Scanner/DomainAddressProviders/PublicDnsProvider.cs similarity index 82% rename from FastGithub.Scanner/DomainAddressProviders/DnsDomainAddressProvider.cs rename to FastGithub.Scanner/DomainAddressProviders/PublicDnsProvider.cs index 1451d19..88d4dbd 100644 --- a/FastGithub.Scanner/DomainAddressProviders/DnsDomainAddressProvider.cs +++ b/FastGithub.Scanner/DomainAddressProviders/PublicDnsProvider.cs @@ -11,14 +11,14 @@ using System.Threading.Tasks; namespace FastGithub.Scanner.DomainMiddlewares { [Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))] - sealed class DnsDomainAddressProvider : IDomainAddressProvider + sealed class PublicDnsProvider : IDomainAddressProvider { private readonly IOptionsMonitor options; - private readonly ILogger logger; + private readonly ILogger logger; - public DnsDomainAddressProvider( + public PublicDnsProvider( IOptionsMonitor options, - ILogger logger) + ILogger logger) { this.options = options; this.logger = logger; @@ -26,17 +26,20 @@ namespace FastGithub.Scanner.DomainMiddlewares public async Task> CreateDomainAddressesAsync() { - var setting = this.options.CurrentValue.DominAddressProvider.DnsDomainAddress; + var setting = this.options.CurrentValue.DominAddressProviders.PublicDnsProvider; if (setting.Enable == false) { return Enumerable.Empty(); } - var result = new List(); + var result = new HashSet(); foreach (var dns in setting.Dnss) { var domainAddresses = await this.LookupAsync(dns, setting.Domains); - result.AddRange(domainAddresses); + foreach (var item in domainAddresses) + { + result.Add(item); + } } return result; diff --git a/FastGithub.Scanner/GithubOptions.cs b/FastGithub.Scanner/GithubOptions.cs index f56ad8c..5910756 100644 --- a/FastGithub.Scanner/GithubOptions.cs +++ b/FastGithub.Scanner/GithubOptions.cs @@ -7,7 +7,7 @@ namespace FastGithub.Scanner { public ScanSetting Scan { get; set; } = new ScanSetting(); - public DomainAddressProviderSetting DominAddressProvider { get; set; } = new DomainAddressProviderSetting(); + public DomainAddressProvidersSetting DominAddressProviders { get; set; } = new DomainAddressProvidersSetting(); public class ScanSetting { @@ -20,13 +20,26 @@ namespace FastGithub.Scanner public TimeSpan HttpsScanTimeout { get; set; } = TimeSpan.FromSeconds(2d); } - public class DomainAddressProviderSetting + public class DomainAddressProvidersSetting { - public DnsDomainAddressSetting DnsDomainAddress { get; set; } = new DnsDomainAddressSetting(); - public MetaDoaminAddressSetting MetaDomainAddress { get; set; } = new MetaDoaminAddressSetting(); - public IPAddressComDomainAddressSetting IPAddressComDomainAddress { get; set; } = new IPAddressComDomainAddressSetting(); + public GithubMetaProviderSetting GithubMetaProvider { get; set; } = new GithubMetaProviderSetting(); + public IPAddressComProviderSetting IPAddressComProvider { get; set; } = new IPAddressComProviderSetting(); + public PublicDnsProviderSetting PublicDnsProvider { get; set; } = new PublicDnsProviderSetting(); - public class DnsDomainAddressSetting + public class GithubMetaProviderSetting + { + public bool Enable { get; set; } = true; + + public Uri MetaUri { get; set; } = new Uri("https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json"); + } + + public class IPAddressComProviderSetting + { + public bool Enable { get; set; } = true; + + public string[] Domains { get; set; } = Array.Empty(); + } + public class PublicDnsProviderSetting { public bool Enable { get; set; } = true; @@ -34,20 +47,6 @@ namespace FastGithub.Scanner public string[] Domains { get; set; } = Array.Empty(); } - - public class MetaDoaminAddressSetting - { - public bool Enable { get; set; } = true; - - public Uri MetaUri { get; set; } = new Uri("https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json"); - } - - public class IPAddressComDomainAddressSetting - { - public bool Enable { get; set; } = true; - - public string[] Domains { get; set; } = Array.Empty(); - } } } } diff --git a/FastGithub/appsettings.json b/FastGithub/appsettings.json index fd19c75..16f5aa5 100644 --- a/FastGithub/appsettings.json +++ b/FastGithub/appsettings.json @@ -10,12 +10,13 @@ "TcpScanTimeout": "00:00:01", // tcp扫描超时时间 "HttpsScanTimeout": "00:00:02" // https扫描超时时间 }, - "DominAddressProvider": { - "MetaDomainAddress": { + "DominAddressProviders": { + "GithubMetaProvider": { "Enable": true, - "MetaUri": "https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json" // meta资源uri + // "MetaUri": "https://api.github.com/meta", // meta资源uri + "MetaUri": "https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json" }, - "IPAddressComDomainAddress": { + "IPAddressComProvider": { "Enable": true, "Domains": [ "github.com", @@ -23,21 +24,17 @@ "github.githubassets.com" ] }, - "DnsDomainAddress": { + "PublicDnsProvider": { "Enable": true, "Dnss": [ - "119.29.29.29", - "180.76.76.76", "8.8.8.8", - "8.8.4.4", "114.114.114.114", - "114.114.115.115", + "180.76.76.76", + "119.29.29.29", "223.5.5.5", - "223.6.6.6", "1.2.4.8", - "210.2.4.8", "208.67.220.220", - "208.67.222.222" + "123.125.81.6" ], "Domains": [ "github.com",