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 (as included in the package)
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.3 |
| 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 |
| Category | Network |
| Home page | https://github.com/dnsbase/dnsbase |
| Bug tracker | https://github.com/dnsbase/dnsbase/issues |
| Distributions | |
| Downloads | 0 total (0 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] |