The change notes finish the documentation pass, and CONTEXT.md points at the project specification.
34 lines
1.3 KiB
Markdown
34 lines
1.3 KiB
Markdown
# go-dns
|
||
|
||
Go library for dynamic DNS updates (RFC 2136 / nsupdate-style).
|
||
|
||
**Canonical spec:** [docs/project-specification.md](./docs/project-specification.md) — follow it for design and implementation.
|
||
|
||
## Stack
|
||
|
||
- **Language:** Go (see workspace `go.work` for version)
|
||
- **Module:** `gitea.neitzel.de/konrad/go-dns`
|
||
- **Package:** `godns` (module root)
|
||
- **Type:** Importable Go library (not a standalone service)
|
||
|
||
## Design (summary)
|
||
|
||
- Target **BIND** and RFC 2136–compatible authoritative nameservers
|
||
- **Dynamic update** (RFC 2136) and **full zone transfer** (AXFR) over DNS
|
||
- **TSIG** authentication with caller-supplied keys (no key generation in library)
|
||
- Typed **RR builders** per record type (not generic rdata strings)
|
||
- Domain names: **ASCII only** in v1
|
||
- UPDATE: **automatic TCP fallback** on UDP truncation
|
||
- Typed **zone data structures** (`Record`, `Zone`, etc.) for transfer/update results
|
||
- BIND guide: [docs/bind-tsig-configuration.md](./docs/bind-tsig-configuration.md)
|
||
- Project docs override workspace defaults for this module
|
||
|
||
## Tests
|
||
|
||
- Unit: `go test ./...`
|
||
- Integration: `go test -tags=integration ./...` — **BIND testcontainer** (Docker required)
|
||
|
||
## Work tracking
|
||
|
||
Local markdown issues: [../.scratch/](../.scratch/) — see [docs/agents/issue-tracker.md](../docs/agents/issue-tracker.md).
|