mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Add SIP/JABBER labels to underscore exception list (#453)
* Improve comments in checkLabel * Reformat labelUnderscores to make it easier to add to * Add to exception list for label warnings * Add underscores in hostnames to the opinions list.
This commit is contained in:
@@ -86,7 +86,15 @@ func validateRecordTypes(rec *models.RecordConfig, domain string, pTypes []strin
|
||||
|
||||
// underscores in names are often used erroneously. They are valid for dns records, but invalid for urls.
|
||||
// here we list common records expected to have underscores. Anything else containing an underscore will print a warning.
|
||||
var labelUnderscores = []string{"_domainkey", "_dmarc", "_amazonses", "_acme-challenge"}
|
||||
var labelUnderscores = []string{
|
||||
"_acme-challenge",
|
||||
"_amazonses",
|
||||
"_dmarc",
|
||||
"_domainkey",
|
||||
"_jabber",
|
||||
"_sip",
|
||||
"_xmpp",
|
||||
}
|
||||
|
||||
// these record types may contain underscores
|
||||
var rTypeUnderscores = []string{"SRV", "TLSA", "TXT"}
|
||||
@@ -106,18 +114,23 @@ func checkLabel(label string, rType string, domain string, meta map[string]strin
|
||||
return errors.Errorf(`label %s ends with domain name %s. Record names should not be fully qualified. Add {skip_fqdn_check:"true"} to this record if you really want to make %s.%s`, label, domain, label, domain)
|
||||
}
|
||||
}
|
||||
// check for underscores last
|
||||
|
||||
// Underscores are permitted in labels, but we print a warning unless they
|
||||
// are used in a way we consider typical. Yes, we're opinionated here.
|
||||
|
||||
// Don't warn for certain rtypes:
|
||||
for _, ex := range rTypeUnderscores {
|
||||
if rType == ex {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
// Don't warn for certain label substrings
|
||||
for _, ex := range labelUnderscores {
|
||||
if strings.Contains(label, ex) {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
// underscores are warnings
|
||||
// Otherwise, warn.
|
||||
if strings.ContainsRune(label, '_') {
|
||||
return Warning{errors.Errorf("label %s.%s contains an underscore", label, domain)}
|
||||
}
|
||||
|
Reference in New Issue
Block a user