mirror of
https://github.com/netchx/netch.git
synced 2026-03-20 18:19:44 +08:00
done
This commit is contained in:
214
Netch/3rd/DnsClient.NET/IDnsQuery.cs
Normal file
214
Netch/3rd/DnsClient.NET/IDnsQuery.cs
Normal file
@@ -0,0 +1,214 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DnsClient
|
||||
{
|
||||
/// <summary>
|
||||
/// Generic contract to query DNS endpoints. Implemented by <see cref="LookupClient"/>.
|
||||
/// </summary>
|
||||
public interface IDnsQuery
|
||||
{
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="query" />, <paramref name="queryType" /> and <paramref name="queryClass" />.
|
||||
/// </summary>
|
||||
/// <param name="query">The domain name query.</param>
|
||||
/// <param name="queryType">The <see cref="QueryType" />.</param>
|
||||
/// <param name="queryClass">The <see cref="QueryClass"/>.</param>
|
||||
/// <param name="queryOptions">Query options to be used instead of <see cref="LookupClient"/>'s settings.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="query"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
IDnsQueryResponse Query(string query, QueryType queryType, QueryClass queryClass = QueryClass.IN, DnsQueryOptions queryOptions = null);
|
||||
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="question" />.
|
||||
/// </summary>
|
||||
/// <param name="question">The domain name query.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="question"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
IDnsQueryResponse Query(DnsQuestion question);
|
||||
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="question" />.
|
||||
/// </summary>
|
||||
/// <param name="question">The domain name query.</param>
|
||||
/// <param name="queryOptions">Query options to be used instead of <see cref="LookupClient"/>'s settings.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="question"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
IDnsQueryResponse Query(DnsQuestion question, DnsQueryOptions queryOptions);
|
||||
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="query" />, <paramref name="queryType" /> and <paramref name="queryClass" />
|
||||
/// </summary>
|
||||
/// <param name="query">The domain name query.</param>
|
||||
/// <param name="queryType">The <see cref="QueryType" />.</param>
|
||||
/// <param name="queryClass">The <see cref="QueryClass" />.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <param name="queryOptions">Query options to be used instead of <see cref="LookupClient"/>'s settings.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="query"/> is null.</exception>
|
||||
/// <exception cref="OperationCanceledException">If cancellation has been requested for the passed in <paramref name="cancellationToken"/>.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
Task<IDnsQueryResponse> QueryAsync(string query, QueryType queryType, QueryClass queryClass = QueryClass.IN, DnsQueryOptions queryOptions = null, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="question" />.
|
||||
/// </summary>
|
||||
/// <param name="question">The domain name query.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="question"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
Task<IDnsQueryResponse> QueryAsync(DnsQuestion question, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="question" />.
|
||||
/// </summary>
|
||||
/// <param name="question">The domain name query.</param>
|
||||
/// <param name="queryOptions">Query options to be used instead of <see cref="LookupClient"/>'s settings.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="question"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
Task<IDnsQueryResponse> QueryAsync(DnsQuestion question, DnsQueryOptions queryOptions, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Does a reverse lookup for the <paramref name="ipAddress"/>.
|
||||
/// </summary>
|
||||
/// <param name="ipAddress">The <see cref="IPAddress"/>.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which might contain the <see cref="DnsClient.Protocol.PtrRecord" /> for the <paramref name="ipAddress"/>.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="ipAddress"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
IDnsQueryResponse QueryReverse(IPAddress ipAddress);
|
||||
|
||||
/// <summary>
|
||||
/// Does a reverse lookup for the <paramref name="ipAddress"/>.
|
||||
/// </summary>
|
||||
/// <param name="ipAddress">The <see cref="IPAddress"/>.</param>
|
||||
/// <param name="queryOptions">Query options to be used instead of <see cref="LookupClient"/>'s settings.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which might contain the <see cref="DnsClient.Protocol.PtrRecord" /> for the <paramref name="ipAddress"/>.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="ipAddress"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
IDnsQueryResponse QueryReverse(IPAddress ipAddress, DnsQueryOptions queryOptions);
|
||||
|
||||
/// <summary>
|
||||
/// Does a reverse lookup for the <paramref name="ipAddress" />.
|
||||
/// </summary>
|
||||
/// <param name="ipAddress">The <see cref="IPAddress" />.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which might contain the <see cref="DnsClient.Protocol.PtrRecord" /> for the <paramref name="ipAddress"/>.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="ipAddress"/> is null.</exception>
|
||||
/// <exception cref="OperationCanceledException">If cancellation has been requested for the passed in <paramref name="cancellationToken"/>.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
Task<IDnsQueryResponse> QueryReverseAsync(IPAddress ipAddress, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Does a reverse lookup for the <paramref name="ipAddress" />.
|
||||
/// </summary>
|
||||
/// <param name="ipAddress">The <see cref="IPAddress" />.</param>
|
||||
/// <param name="queryOptions">Query options to be used instead of <see cref="LookupClient"/>'s settings.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which might contain the <see cref="DnsClient.Protocol.PtrRecord" /> for the <paramref name="ipAddress"/>.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="ipAddress"/> is null.</exception>
|
||||
/// <exception cref="OperationCanceledException">If cancellation has been requested for the passed in <paramref name="cancellationToken"/>.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
Task<IDnsQueryResponse> QueryReverseAsync(IPAddress ipAddress, DnsQueryOptions queryOptions, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="query" />, <paramref name="queryType" /> and <paramref name="queryClass" />
|
||||
/// using only the passed in <paramref name="servers"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// To query specific servers can be useful in cases where you have to use a different DNS server than initially configured
|
||||
/// (without creating a new instance of <see cref="ILookupClient"/> for example).
|
||||
/// </remarks>
|
||||
/// <param name="servers">The list of one or more server(s) which should be used for the lookup.</param>
|
||||
/// <param name="query">The domain name query.</param>
|
||||
/// <param name="queryType">The <see cref="QueryType" />.</param>
|
||||
/// <param name="queryClass">The <see cref="QueryClass" />.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentOutOfRangeException">If the <paramref name="servers"/> collection doesn't contain any elements.</exception>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="query"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
IDnsQueryResponse QueryServer(IReadOnlyCollection<NameServer> servers, string query, QueryType queryType, QueryClass queryClass = QueryClass.IN);
|
||||
|
||||
/// <summary>
|
||||
/// Performs a DNS lookup for the given <paramref name="query" />, <paramref name="queryType" /> and <paramref name="queryClass" />
|
||||
/// using only the passed in <paramref name="servers"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// To query specific servers can be useful in cases where you have to use a different DNS server than initially configured
|
||||
/// (without creating a new instance of <see cref="ILookupClient"/> for example).
|
||||
/// </remarks>
|
||||
/// <param name="servers">The list of one or more server(s) which should be used for the lookup.</param>
|
||||
/// <param name="query">The domain name query.</param>
|
||||
/// <param name="queryType">The <see cref="QueryType" />.</param>
|
||||
/// <param name="queryClass">The <see cref="QueryClass" />.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which contains the response headers and lists of resource records.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentOutOfRangeException">If the <paramref name="servers"/> collection doesn't contain any elements.</exception>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="query"/> is null.</exception>
|
||||
/// <exception cref="OperationCanceledException">If cancellation has been requested for the passed in <paramref name="cancellationToken"/>.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
Task<IDnsQueryResponse> QueryServerAsync(IReadOnlyCollection<NameServer> servers, string query, QueryType queryType, QueryClass queryClass = QueryClass.IN, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Does a reverse lookup for the <paramref name="ipAddress" />
|
||||
/// using only the passed in <paramref name="servers"/>.
|
||||
/// </summary>
|
||||
/// <param name="servers">The list of one or more server(s) which should be used for the lookup.</param>
|
||||
/// <param name="ipAddress">The <see cref="IPAddress" />.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which might contain the <see cref="DnsClient.Protocol.PtrRecord" /> for the <paramref name="ipAddress"/>.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentOutOfRangeException">If the <paramref name="servers"/> collection doesn't contain any elements.</exception>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="ipAddress"/> is null.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
IDnsQueryResponse QueryServerReverse(IReadOnlyCollection<NameServer> servers, IPAddress ipAddress);
|
||||
|
||||
/// <summary>
|
||||
/// Does a reverse lookup for the <paramref name="ipAddress" />
|
||||
/// using only the passed in <paramref name="servers"/>.
|
||||
/// </summary>
|
||||
/// <param name="servers">The list of one or more server(s) which should be used for the lookup.</param>
|
||||
/// <param name="ipAddress">The <see cref="IPAddress" />.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>
|
||||
/// The <see cref="IDnsQueryResponse" /> which might contain the <see cref="DnsClient.Protocol.PtrRecord" /> for the <paramref name="ipAddress"/>.
|
||||
/// </returns>
|
||||
/// <exception cref="ArgumentOutOfRangeException">If the <paramref name="servers"/> collection doesn't contain any elements.</exception>
|
||||
/// <exception cref="ArgumentNullException">If <paramref name="ipAddress"/> is null.</exception>
|
||||
/// <exception cref="OperationCanceledException">If cancellation has been requested for the passed in <paramref name="cancellationToken"/>.</exception>
|
||||
/// <exception cref="DnsResponseException">After retries and fallbacks, if none of the servers were accessible, timed out or (if <see cref="ILookupClient.ThrowDnsErrors"/> is enabled) returned error results.</exception>
|
||||
Task<IDnsQueryResponse> QueryServerReverseAsync(IReadOnlyCollection<NameServer> servers, IPAddress ipAddress, CancellationToken cancellationToken = default);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user