Async::DNS
Async::DNS is a high-performance DNS client resolver and server which can be easily integrated into other projects or used as a stand-alone daemon. It was forked from RubyDNS which is now implemented in terms of this library.
Usage
Please browse the source code index or refer to the guides below.
Getting Started
This guide explains how to get started with the async-dns gem.
Releases
Please browse the releases for more details.
v1.4.0
- Minimum Ruby version is now v3.1.
- Drop dependency on
Async::IOand refactor internal network code to useIO::EndpointandSocketdirectly. - Introduce
Async::DNS::Endpointfor getting the default endpoint for a given name server. - Remove old hacks for IPv6 on Ruby v2.3.
- Introduce
Async::DNS::Cachefor caching DNS lookups. - Remove
loggeras an option and instance variable in favour of usingConsole.loggerdirectly. This is a breaking change. - Update error logging to include more details.
- Use keyword arguments
**optionswhere possible. This is a breaking change. Async::DNS::StreamHandlerandAsync::DNS::DatagramHandlerhave been refactored to useIO::Endpointand have minor breaking interface changes.Async::DNS::Resolver.defaultshould be used to get a default resolver instance.- The resolver now supports
ndots:when resolving names. Async::DNS::Resolver#fully_qualified_nameis replaced byAsync::DNS::Resolver#fully_qualified_namesand can yield multiple names.- If the host system supports IPv6, the resolver will also try to resolve IPv6 addresses.
Async::DNS::Server::DEFAULT_ENDPOINTSis removed and replaced byAsync::DNS::Server.default_endpoint(port = 53).Async::DNS::Server#fireis removed with no replacement.- The default
Async::DNS::Server#processfails withNXDomaininstead ofNotImplementedError. Async::DNS::Systemimplementation is updated to support IPv6 andresolv.confoptions.
Contributing
We welcome contributions to this project.
- Fork it.
- Create your feature branch (
git checkout -b my-new-feature). - Commit your changes (
git commit -am 'Add some feature'). - Push to the branch (
git push origin my-new-feature). - Create new Pull Request.
Developer Certificate of Origin
In order to protect users of this project, we require all contributors to comply with the Developer Certificate of Origin. This ensures that all contributions are properly licensed and attributed.
Community Guidelines
This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.