Initial implementation: dns-updater daemon
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful

RFC2136 dynamic-DNS updater. Watches a records file (inotify) and new
interface addresses and pushes TSIG-signed updates to BIND per zone, sending
only the delta. Native miekg/dns (structured per-zone RCODEs), local status
API + facter fact, systemd unit, nfpm RPM, Woodpecker CI.

Replaces the puppet dns-update shell script; keeps the same records-file and
TSIG-key contract.
This commit is contained in:
2026-07-17 23:24:49 +10:00
parent 9d38e67b35
commit 02e3e0315d
28 changed files with 2038 additions and 1 deletions
+34
View File
@@ -0,0 +1,34 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-merge-conflict
- id: mixed-line-ending
args: [--fix=lf]
# Local Go hooks. dnephin go-vet runs `go vet` at the repo root, which reports
# "no Go files" here (all code is under cmd/ and internal/), so vet ./...
# instead.
- repo: local
hooks:
- id: go-fmt
name: go fmt
entry: bash -c 'test -z "$(gofmt -l .)" || { gofmt -l .; exit 1; }'
language: system
pass_filenames: false
types: [go]
- id: go-vet
name: go vet
entry: go vet ./...
language: system
pass_filenames: false
types: [go]
- id: go-test
name: go test
entry: go test ./...
language: system
pass_filenames: false
types: [go]