dnsbase: Stub DNS resolver with a typed RData model and value-based extension API
A DNS stub resolver library for Haskell. The IO layer is
derived from Kazu Yamamoto's dns package; what dnsbase
adds is a rich set of RRtypes and a runtime-extensible
RRtype data model with a simple configuration interface.
Every RR type's payload is modeled as a dedicated Haskell type — these include, for example, the recent SVCB and HTTPS service-binding records, with extensible up-to-date SvcParam coverage. EDNS option support includes Extended DNS Errors (EDE) whose info-code name table is user-extensible. Coverage of both widely used and historical DNS RR types is comprehensive — only the most marginal obsolete or experimental types remain unimplemented.
Applications can extend the library with any missing RRTYPEs, EDNS(0) options, SVCB and HTTPS SvcParam values. Application-specified data types take precedence over any existing or later added built-in implementations.
Extensions are registered by constructing a pure resolver configuration value, rather than via IO actions on mutable global state. Adding custom data types to the library does not require a source-code fork. See the Net.DNSBase.Extensible module for detailed examples.
The library has been deployed as part of a DANE/DNSSEC survey
for many years, and performs ~108 million queries each day,
over approximately 3.5 hours (while also saving results to a
database and performing some SMTP STARTTLS probes). Domain-name
parsing supports 8-bit RFC 1035 names directly and also
supports pluggable Text-based parsers via external
libraries, for example from the companion
idna2008
package.
[Skip to Readme]
Modules
[Index] [Quick Jump]
- Net
- Net.DNSBase
- Net.DNSBase.Bytes
- Decode
- Net.DNSBase.Domain
- Net.DNSBase.EDNS
- Encode
- Net.DNSBase.Error
- Net.DNSBase.Extensible
- Net.DNSBase.Flags
- Net.DNSBase.Lookup
- Net.DNSBase.Message
- Net.DNSBase.Nat16
- Net.DNSBase.NonEmpty
- Net.DNSBase.NsecTypes
- Net.DNSBase.Opcode
- Net.DNSBase.Present
- Net.DNSBase.RCODE
- Net.DNSBase.RData
- Net.DNSBase.RR
- Net.DNSBase.RRCLASS
- Net.DNSBase.RRSet
- Net.DNSBase.RRTYPE
- Net.DNSBase.Resolver
- Net.DNSBase.Secalgs
- Net.DNSBase.Text
- Net.DNSBase
Downloads
- dnsbase-1.0.2.0.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 1.0.0.0, 1.0.1.0, 1.0.2.0 (info) |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.20 && <5), base16 (>=1.0 && <1.1), base32 (>=0.3 && <0.5), base64 (>=1.0 && <1.1), bytestring (>=0.10.8 && <0.13), containers (>=0.6 && <0.9), crypton (>=0.30 && <1.2), deepseq (>=1.5 && <1.6), hashtables (>=1.2 && <1.6), hourglass (>=0.2.12 && <0.3), iproute (>=1.7.9 && <1.8), monad-ste (>=0.1 && <0.2), mtl (>=2.2 && <2.4), network (>=3.1 && <3.3), primitive (>=0.8 && <0.10), template-haskell (>=2.22 && <2.25), text (>=2.0 && <2.2), time (>=1.11 && <1.16), transformers (>=0.5 && <2.7), unordered-containers (>=0.2 && <0.3) [details] |
| Tested with | ghc ==9.10.3, ghc ==9.12.4 |
| License | BSD-3-Clause[multiple license files] |
| Copyright | 2018-2026 Viktor Dukhovni |
| Author | Viktor Dukhovni |
| Maintainer | ietf-dane@dukhovni.org |
| Uploaded | by ietfdane at 2026-06-07T22:20:25Z |
| Revised | Revision 2 made by ietfdane at 2026-06-08T05:14:42Z |
| Category | Network |
| Home page | https://github.com/dnsbase/dnsbase |
| Bug tracker | https://github.com/dnsbase/dnsbase/issues |
| Distributions | |
| Downloads | 3 total (3 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs uploaded by user [build log] All reported builds failed as of 2026-06-07 [all 1 reports] |