mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-02-24 23:53:01 +08:00
SPF Flatten for non apex domains (#1220)
This commit is contained in:
parent
f63302b978
commit
243762d171
2 changed files with 12 additions and 2 deletions
|
@ -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{}
|
||||
|
|
|
@ -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"] != "" {
|
||||
|
|
Loading…
Reference in a new issue