|
@@ -14,7 +14,7 @@ namespace FastGithub.DomainResolve
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 域名的IP测速服务
|
|
/// 域名的IP测速服务
|
|
/// </summary>
|
|
/// </summary>
|
|
- sealed class DomainSpeedTester : IDisposable
|
|
|
|
|
|
+ sealed class DomainSpeedTester
|
|
{
|
|
{
|
|
private const string DOMAINS_JSON_FILE = "domains.json";
|
|
private const string DOMAINS_JSON_FILE = "domains.json";
|
|
|
|
|
|
@@ -73,15 +73,39 @@ namespace FastGithub.DomainResolve
|
|
/// 添加要测速的域名
|
|
/// 添加要测速的域名
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <param name="domain"></param>
|
|
/// <param name="domain"></param>
|
|
- /// <returns></returns>
|
|
|
|
- public bool Add(string domain)
|
|
|
|
|
|
+ public void Add(string domain)
|
|
{
|
|
{
|
|
lock (this.syncRoot)
|
|
lock (this.syncRoot)
|
|
{
|
|
{
|
|
- return this.domainIPAddressHashSet.TryAdd(domain, new IPAddressItemHashSet());
|
|
|
|
|
|
+ if (this.domainIPAddressHashSet.TryAdd(domain, new IPAddressItemHashSet()))
|
|
|
|
+ {
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ this.SaveDomains();
|
|
|
|
+ }
|
|
|
|
+ catch (Exception ex)
|
|
|
|
+ {
|
|
|
|
+ logger.LogWarning($"保存域名数据失败:{ex.Message}");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 保存域名
|
|
|
|
+ /// </summary>
|
|
|
|
+ private void SaveDomains()
|
|
|
|
+ {
|
|
|
|
+ var domains = this.domainIPAddressHashSet.Keys
|
|
|
|
+ .Select(item => new DomainPattern(item))
|
|
|
|
+ .OrderBy(item => item)
|
|
|
|
+ .Select(item => item.ToString())
|
|
|
|
+ .ToArray();
|
|
|
|
+
|
|
|
|
+ var utf8Json = JsonSerializer.SerializeToUtf8Bytes(domains, new JsonSerializerOptions { WriteIndented = true });
|
|
|
|
+ File.WriteAllBytes(DOMAINS_JSON_FILE, utf8Json);
|
|
|
|
+ }
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 获取测试后排序的IP
|
|
/// 获取测试后排序的IP
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -123,35 +147,5 @@ namespace FastGithub.DomainResolve
|
|
await hashSet.PingAllAsync();
|
|
await hashSet.PingAllAsync();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 释放资源
|
|
|
|
- /// </summary>
|
|
|
|
- public void Dispose()
|
|
|
|
- {
|
|
|
|
- try
|
|
|
|
- {
|
|
|
|
- this.SaveDomains();
|
|
|
|
- }
|
|
|
|
- catch (Exception ex)
|
|
|
|
- {
|
|
|
|
- this.logger.LogWarning($"保存域名数据失败:{ex.Message}");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 保存域名
|
|
|
|
- /// </summary>
|
|
|
|
- private void SaveDomains()
|
|
|
|
- {
|
|
|
|
- var domains = this.domainIPAddressHashSet.Keys
|
|
|
|
- .Select(item => new DomainPattern(item))
|
|
|
|
- .OrderBy(item => item)
|
|
|
|
- .Select(item => item.ToString())
|
|
|
|
- .ToArray();
|
|
|
|
-
|
|
|
|
- var utf8Json = JsonSerializer.SerializeToUtf8Bytes(domains, new JsonSerializerOptions { WriteIndented = true });
|
|
|
|
- File.WriteAllBytes(DOMAINS_JSON_FILE, utf8Json);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|