SPF Flatten for non apex domains (#1220)

This commit is contained in:
Vincent Hagen 2021-07-25 17:53:31 +02:00 committed by GitHub
parent f63302b978
commit 243762d171
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 2 deletions

View file

@ -452,6 +452,16 @@ func (recs Records) FQDNMap() (m map[string]bool) {
return m
}
func (recs Records) GetByType(typeName string) Records {
results := Records{}
for _, rec := range recs {
if rec.Type == typeName {
results = append(results, rec)
}
}
return results
}
// GroupedByKey returns a map of keys to records.
func (recs Records) GroupedByKey() map[RecordKey]Records {
groups := map[RecordKey]Records{}

View file

@ -15,9 +15,9 @@ func flattenSPFs(cfg *models.DNSConfig) []error {
var errs []error
var err error
for _, domain := range cfg.Domains {
apexTXTs := domain.Records.GroupedByKey()[models.RecordKey{Type: "TXT", NameFQDN: domain.Name}]
txtRecords := domain.Records.GetByType("TXT")
// flatten all spf records that have the "flatten" metadata
for _, txt := range apexTXTs {
for _, txt := range txtRecords {
var rec *spflib.SPFRecord
txtTarget := strings.Join(txt.TxtStrings, "")
if txt.Metadata["flatten"] != "" || txt.Metadata["split"] != "" {