Files
go-dns/CONTEXT.md
T

26 lines
1.4 KiB
Markdown

# go-dns
Shared Go Library for authoritative DNS against BIND-compatible nameservers: full zone transfer (AXFR) and RFC 2136 dynamic UPDATE with caller-supplied TSIG. ExApps and Services import `gitea.neitzel.de/konrad/go-dns`.
## Language
**Session**:
A `Client` bound to one nameserver address, one zone name, and one TSIG key. AXFR and UPDATE both use that Session; there is no anonymous or unsigned mode in this Library.
_Avoid_: resolver client, stub, recursive lookup API
**Zone / RRSet / Record**:
A Zone is the in-memory result of an AXFR (origin, SOA serial, flat record list). An RRSet groups Records that share owner, class, and type. A Record is one resource record with presentation-format rdata.
_Avoid_: zone file on disk as the Library's primary type, miekg/dns RR as the public model
**UPDATE**:
An RFC 2136 dynamic DNS change batch (add and/or delete Records) sent through the Session. The Library builds and signs the message; the nameserver applies it.
_Avoid_: nsupdate script files, unsigned updates
**AXFR**:
A full zone transfer over TCP for the Session's zone, returning a Zone. Incremental transfer (IXFR) is out of scope.
_Avoid_: AXFR over UDP, treating AXFR as a recursive query
**TSIG key**:
Caller-supplied key name, algorithm (e.g. hmac-sha256), and base64 secret used to authenticate AXFR and UPDATE. The Library does not generate keys or write BIND configuration.
_Avoid_: API token, shared AppAPI secret, auto-provisioned keys