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

TXT records should check length at check/preview time (#947)

* TXT records should check length
* Add validation to TXT generator
* Split and validate long TXT targets
* Add a metaparameter to TXT records to indicate autosplit is requested.
* SPF_BUILDER marks TXT records as needing to be autosplit.
* Validate should check for overly-long TXT targets
This commit is contained in:
Tom Limoncelli
2020-11-18 07:05:26 -05:00
committed by GitHub
parent 550fa436ed
commit 13a1360779
8 changed files with 333 additions and 143 deletions

View File

@@ -19,6 +19,7 @@ func flattenSPFs(cfg *models.DNSConfig) []error {
// flatten all spf records that have the "flatten" metadata
for _, txt := range apexTXTs {
var rec *spflib.SPFRecord
txtTarget := strings.Join(txt.TxtStrings, "")
if txt.Metadata["flatten"] != "" || txt.Metadata["split"] != "" {
if cache == nil {
cache, err = spflib.NewCache("spfcache.json")
@@ -26,13 +27,13 @@ func flattenSPFs(cfg *models.DNSConfig) []error {
return []error{err}
}
}
rec, err = spflib.Parse(txt.GetTargetField(), cache)
rec, err = spflib.Parse(txtTarget, cache)
if err != nil {
errs = append(errs, err)
continue
}
}
if flatten, ok := txt.Metadata["flatten"]; ok && strings.HasPrefix(txt.GetTargetField(), "v=spf1") {
if flatten, ok := txt.Metadata["flatten"]; ok && strings.HasPrefix(txtTarget, "v=spf1") {
rec = rec.Flatten(flatten)
err = txt.SetTargetTXT(rec.TXT())
if err != nil {