1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

Re-engineer TXT records for simplicity and better compliance (#1063)

TXT records are now handled different.

1. The raw input from dnsconfig.js is passed all the way to the provider. The provider can determine if it can or can't handle such records (auditrecords.go) and processes them internally as such.
2. The CanUseTXTMulti capability is no longer needed.

* DSPs now register a table of functions
* Use audits for txt record variations
* unit tests pass. integration fails.
* fix deepcopy problem
* rename to AuditRecordSupport
* Reduce use of TXTMulti
* Remove CanUseTXTMulti
* fix Test Skip
* fix DO
* fix vultr
* fix NDC
* msdns fixes
* Fix powerdns and cloudflare
* HEDNS: Fix usage of target field to resolve TXT handling (#1067)
* Fix HEXONET

Co-authored-by: Robert Blenkinsopp <robert@blenkinsopp.net>
Co-authored-by: Jakob Ackermann <das7pad@outlook.com>
This commit is contained in:
Tom Limoncelli
2021-03-07 13:19:22 -05:00
committed by GitHub
parent 56766f93a9
commit 8dea9edc34
96 changed files with 162611 additions and 828 deletions

View File

@ -212,135 +212,131 @@ var _escData = map[string]*_escFile{
"/helpers.js": {
name: "helpers.js",
local: "pkg/js/helpers.js",
size: 28655,
size: 28050,
modtime: 0,
compressed: `
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
`,
},
}