Skip to content

Commit

Permalink
Readme changes
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaCo committed Jun 10, 2018
1 parent 99148dd commit e63c54e
Showing 1 changed file with 10 additions and 26 deletions.
36 changes: 10 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
---
slug: readme
title: Readme
author: Michael Conrad
lastModified: 2017-04-05 12:00:00
pubDate: 2017-03-26 12:00:00
categories: DnsClient
---

# DnsClient.NET

DnsClient.NET is a simple yet very powerful and high performant open source library for the .NET Framework to do DNS lookups.

## Usage

See http://dnsclient.michaco.net for more details and documentation.

The following example instantiates a new `LookupClient` without specifying a DNS endpoint.
Expand All @@ -34,6 +27,7 @@ Get it via NuGet https://www.nuget.org/packages/DnsClient/
Get beta builds from [MyGet](https://www.myget.org/feed/dnsclient/package/nuget/DnsClient).

### Build from Code

Just clone the repository and open the solution in Visual Studio 2017.
Or use the dotnet client via command line.

Expand All @@ -57,41 +51,31 @@ dotnet run random -s localhost
```

## Features

### General

* Full Async API
* UDP and TCP lookup, configurable if TCP should be used as fallback in case UDP result is truncated (default=true).
* Caching
* Query result cache based on provided TTL
* Minimum TTL setting to overrule the result's TTL and always cache the responses for at least that time. (Even very low value, like a few milliseconds, do make a huge difference if used in high traffic low latency scenarios)
* Cache can be disabled altogether
* Supports multiple DNS endpoints to be configured
* Retry logic in case of timeouts and errors (configurable)
* Audit trail of each response
* Configurable retry over configured DNS servers if one or more returned a server error
* Configurable retry logic in case of timeouts and other exceptions
* Optional audit trail of each response and exception
* Configurable error handling. Throwing DNS errors, like `NotExistentDomain` is turned off by default

### Supported resource records

* PTR for reverse lookups
* A, AAAA, NS, CNAME, SOA, MB, MG, MR, WKS, HINFO, MINFO, MX, RP, TXT, AFSDB, SRV, URI, CAA
* OPT (currently only for reading the supported UDP buffer size, EDNS version)
* AXFR (as per spec, LookupClient has to be set to TCP mode only for this type. Also, the result depends on if the DNS server trusts your current connection)

## Examples

* The [Samples](https://github.com/MichaCo/DnsClient.NET.Samples) repository will have some solutions to showcase the usage and also to test some functionality.

* [MiniDig](https://github.com/MichaCo/DnsClient.NET/tree/dev/samples/MiniDig) (See the readme over there)

## Milestones
### 1.1 release
* More testing
* More RRs parsing

## Motivation and Thanks!
Thanks to

[<img src="https://www.browserstack.com/images/layout/browserstack-logo-600x315.png" width="300">](https://www.browserstack.com)

for supporting me to test my websites and projects!

I used [Heijden.Dns](https://github.com/ghuntley/Heijden.Dns) as a baseline for my first steps into the world of DNS RFCs. A big thanks to the original author of the code, Alphons van der Heijden and also Geoffrey Huntley who created a great package out of that. This was a great resource to learn from it and start building this API!

In the end, I decided to write my own API to make it easy to use, more robust, extensible and build on .NET Core for xplat support.

0 comments on commit e63c54e

Please sign in to comment.