Provider重命名

This commit is contained in:
xljiulang 2021-06-17 23:06:22 +08:00
parent 2390787863
commit 72fe4ece58
5 changed files with 52 additions and 53 deletions

View File

@ -13,14 +13,14 @@ using System.Threading.Tasks;
namespace FastGithub.Scanner.DomainMiddlewares namespace FastGithub.Scanner.DomainMiddlewares
{ {
[Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))] [Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))]
sealed class MetaDomainAddressProvider : IDomainAddressProvider sealed class GithubMetaProvider : IDomainAddressProvider
{ {
private readonly IOptionsMonitor<GithubOptions> options; private readonly IOptionsMonitor<GithubOptions> options;
private readonly ILogger<MetaDomainAddressProvider> logger; private readonly ILogger<GithubMetaProvider> logger;
public MetaDomainAddressProvider( public GithubMetaProvider(
IOptionsMonitor<GithubOptions> options, IOptionsMonitor<GithubOptions> options,
ILogger<MetaDomainAddressProvider> logger) ILogger<GithubMetaProvider> logger)
{ {
this.options = options; this.options = options;
this.logger = logger; this.logger = logger;
@ -28,7 +28,7 @@ namespace FastGithub.Scanner.DomainMiddlewares
public async Task<IEnumerable<DomainAddress>> CreateDomainAddressesAsync() public async Task<IEnumerable<DomainAddress>> CreateDomainAddressesAsync()
{ {
var setting = this.options.CurrentValue.DominAddressProvider.MetaDomainAddress; var setting = this.options.CurrentValue.DominAddressProviders.GithubMetaProvider;
if (setting.Enable == false) if (setting.Enable == false)
{ {
return Enumerable.Empty<DomainAddress>(); return Enumerable.Empty<DomainAddress>();

View File

@ -12,15 +12,15 @@ using System.Threading.Tasks;
namespace FastGithub.Scanner.DomainMiddlewares namespace FastGithub.Scanner.DomainMiddlewares
{ {
[Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))] [Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))]
sealed class IPAddressComDomainAddressProvider : IDomainAddressProvider sealed class IPAddressComProvider : IDomainAddressProvider
{ {
private readonly IOptionsMonitor<GithubOptions> options; private readonly IOptionsMonitor<GithubOptions> options;
private readonly ILogger<IPAddressComDomainAddressProvider> logger; private readonly ILogger<IPAddressComProvider> logger;
private readonly Uri lookupUri = new("https://www.ipaddress.com/ip-lookup"); private readonly Uri lookupUri = new("https://www.ipaddress.com/ip-lookup");
public IPAddressComDomainAddressProvider( public IPAddressComProvider(
IOptionsMonitor<GithubOptions> options, IOptionsMonitor<GithubOptions> options,
ILogger<IPAddressComDomainAddressProvider> logger) ILogger<IPAddressComProvider> logger)
{ {
this.options = options; this.options = options;
this.logger = logger; this.logger = logger;
@ -28,14 +28,14 @@ namespace FastGithub.Scanner.DomainMiddlewares
public async Task<IEnumerable<DomainAddress>> CreateDomainAddressesAsync() public async Task<IEnumerable<DomainAddress>> CreateDomainAddressesAsync()
{ {
var setting = this.options.CurrentValue.DominAddressProvider.IPAddressComDomainAddress; var setting = this.options.CurrentValue.DominAddressProviders.IPAddressComProvider;
if (setting.Enable == false) if (setting.Enable == false)
{ {
return Enumerable.Empty<DomainAddress>(); return Enumerable.Empty<DomainAddress>();
} }
using var httpClient = new HttpClient(); using var httpClient = new HttpClient();
var result = new List<DomainAddress>(); var result = new HashSet<DomainAddress>();
foreach (var domain in setting.Domains) foreach (var domain in setting.Domains)
{ {
try try
@ -58,14 +58,14 @@ namespace FastGithub.Scanner.DomainMiddlewares
{ {
var keyValue = new KeyValuePair<string?, string?>("host", domain); var keyValue = new KeyValuePair<string?, string?>("host", domain);
var content = new FormUrlEncodedContent(Enumerable.Repeat(keyValue, 1)); var content = new FormUrlEncodedContent(Enumerable.Repeat(keyValue, 1));
var request = new HttpRequestMessage using var request = new HttpRequestMessage
{ {
Method = HttpMethod.Post, Method = HttpMethod.Post,
RequestUri = lookupUri, RequestUri = lookupUri,
Content = content Content = content
}; };
var response = await httpClient.SendAsync(request); using var response = await httpClient.SendAsync(request);
var html = await response.Content.ReadAsStringAsync(); var html = await response.Content.ReadAsStringAsync();
var match = Regex.Match(html, @"(?<=<h1>IP Lookup : )\d+\.\d+\.\d+\.\d+", RegexOptions.IgnoreCase); var match = Regex.Match(html, @"(?<=<h1>IP Lookup : )\d+\.\d+\.\d+\.\d+", RegexOptions.IgnoreCase);

View File

@ -11,14 +11,14 @@ using System.Threading.Tasks;
namespace FastGithub.Scanner.DomainMiddlewares namespace FastGithub.Scanner.DomainMiddlewares
{ {
[Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))] [Service(ServiceLifetime.Singleton, ServiceType = typeof(IDomainAddressProvider))]
sealed class DnsDomainAddressProvider : IDomainAddressProvider sealed class PublicDnsProvider : IDomainAddressProvider
{ {
private readonly IOptionsMonitor<GithubOptions> options; private readonly IOptionsMonitor<GithubOptions> options;
private readonly ILogger<DnsDomainAddressProvider> logger; private readonly ILogger<PublicDnsProvider> logger;
public DnsDomainAddressProvider( public PublicDnsProvider(
IOptionsMonitor<GithubOptions> options, IOptionsMonitor<GithubOptions> options,
ILogger<DnsDomainAddressProvider> logger) ILogger<PublicDnsProvider> logger)
{ {
this.options = options; this.options = options;
this.logger = logger; this.logger = logger;
@ -26,17 +26,20 @@ namespace FastGithub.Scanner.DomainMiddlewares
public async Task<IEnumerable<DomainAddress>> CreateDomainAddressesAsync() public async Task<IEnumerable<DomainAddress>> CreateDomainAddressesAsync()
{ {
var setting = this.options.CurrentValue.DominAddressProvider.DnsDomainAddress; var setting = this.options.CurrentValue.DominAddressProviders.PublicDnsProvider;
if (setting.Enable == false) if (setting.Enable == false)
{ {
return Enumerable.Empty<DomainAddress>(); return Enumerable.Empty<DomainAddress>();
} }
var result = new List<DomainAddress>(); var result = new HashSet<DomainAddress>();
foreach (var dns in setting.Dnss) foreach (var dns in setting.Dnss)
{ {
var domainAddresses = await this.LookupAsync(dns, setting.Domains); var domainAddresses = await this.LookupAsync(dns, setting.Domains);
result.AddRange(domainAddresses); foreach (var item in domainAddresses)
{
result.Add(item);
}
} }
return result; return result;

View File

@ -7,7 +7,7 @@ namespace FastGithub.Scanner
{ {
public ScanSetting Scan { get; set; } = new ScanSetting(); public ScanSetting Scan { get; set; } = new ScanSetting();
public DomainAddressProviderSetting DominAddressProvider { get; set; } = new DomainAddressProviderSetting(); public DomainAddressProvidersSetting DominAddressProviders { get; set; } = new DomainAddressProvidersSetting();
public class ScanSetting public class ScanSetting
{ {
@ -20,13 +20,26 @@ namespace FastGithub.Scanner
public TimeSpan HttpsScanTimeout { get; set; } = TimeSpan.FromSeconds(2d); public TimeSpan HttpsScanTimeout { get; set; } = TimeSpan.FromSeconds(2d);
} }
public class DomainAddressProviderSetting public class DomainAddressProvidersSetting
{ {
public DnsDomainAddressSetting DnsDomainAddress { get; set; } = new DnsDomainAddressSetting(); public GithubMetaProviderSetting GithubMetaProvider { get; set; } = new GithubMetaProviderSetting();
public MetaDoaminAddressSetting MetaDomainAddress { get; set; } = new MetaDoaminAddressSetting(); public IPAddressComProviderSetting IPAddressComProvider { get; set; } = new IPAddressComProviderSetting();
public IPAddressComDomainAddressSetting IPAddressComDomainAddress { get; set; } = new IPAddressComDomainAddressSetting(); 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<string>();
}
public class PublicDnsProviderSetting
{ {
public bool Enable { get; set; } = true; public bool Enable { get; set; } = true;
@ -34,20 +47,6 @@ namespace FastGithub.Scanner
public string[] Domains { get; set; } = Array.Empty<string>(); public string[] Domains { get; set; } = Array.Empty<string>();
} }
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<string>();
}
} }
} }
} }

View File

@ -10,12 +10,13 @@
"TcpScanTimeout": "00:00:01", // tcp "TcpScanTimeout": "00:00:01", // tcp
"HttpsScanTimeout": "00:00:02" // https "HttpsScanTimeout": "00:00:02" // https
}, },
"DominAddressProvider": { "DominAddressProviders": {
"MetaDomainAddress": { "GithubMetaProvider": {
"Enable": true, "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, "Enable": true,
"Domains": [ "Domains": [
"github.com", "github.com",
@ -23,21 +24,17 @@
"github.githubassets.com" "github.githubassets.com"
] ]
}, },
"DnsDomainAddress": { "PublicDnsProvider": {
"Enable": true, "Enable": true,
"Dnss": [ "Dnss": [
"119.29.29.29",
"180.76.76.76",
"8.8.8.8", "8.8.8.8",
"8.8.4.4",
"114.114.114.114", "114.114.114.114",
"114.114.115.115", "180.76.76.76",
"119.29.29.29",
"223.5.5.5", "223.5.5.5",
"223.6.6.6",
"1.2.4.8", "1.2.4.8",
"210.2.4.8",
"208.67.220.220", "208.67.220.220",
"208.67.222.222" "123.125.81.6"
], ],
"Domains": [ "Domains": [
"github.com", "github.com",