mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Fix NAPTR record support.
This commit is contained in:
Binary file not shown.
@@ -80,14 +80,14 @@ func (dc *DomainConfig) Punycode() error {
|
||||
}
|
||||
rec.SetLabelFromFQDN(t, dc.Name)
|
||||
switch rec.Type { // #rtype_variations
|
||||
case "ALIAS", "MX", "NS", "CNAME", "PTR", "NAPTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS":
|
||||
case "ALIAS", "MX", "NS", "CNAME", "PTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS":
|
||||
// These rtypes are hostnames, therefore need to be converted (unlike, for example, an AAAA record)
|
||||
t, err := idna.ToASCII(rec.GetTargetField())
|
||||
rec.SetTarget(t)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
case "A", "AAAA", "CAA", "SSHFP", "TXT", "TLSA":
|
||||
case "A", "AAAA", "CAA", "NAPTR", "SSHFP", "TXT", "TLSA":
|
||||
// Nothing to do.
|
||||
default:
|
||||
msg := fmt.Sprintf("Punycode rtype %v unimplemented", rec.Type)
|
||||
|
@@ -82,7 +82,7 @@ type RecordConfig struct {
|
||||
NaptrService string `json:"naptrservice,omitempty"`
|
||||
NaptrRegexp string `json:"naptrregexp,omitempty"`
|
||||
//NaptrReplacement string `json:"naptrreplacement,omitempty"`
|
||||
NaptrReplacement string `json:"target"`
|
||||
//NaptrReplacement string `json:"target"`
|
||||
SshfpAlgorithm uint8 `json:"sshfpalgorithm,omitempty"`
|
||||
SshfpFingerprint uint8 `json:"sshfpfingerprint,omitempty"`
|
||||
TlsaUsage uint8 `json:"tlsausage,omitempty"`
|
||||
@@ -215,8 +215,7 @@ func (rc *RecordConfig) ToRR() dns.RR {
|
||||
rr.(*dns.NAPTR).Flags = rc.NaptrFlags
|
||||
rr.(*dns.NAPTR).Service = rc.NaptrService
|
||||
rr.(*dns.NAPTR).Regexp = rc.NaptrRegexp
|
||||
//rr.(*dns.NAPTR).Replacement = rc.GetTargetField()
|
||||
rr.(*dns.NAPTR).Replacement = rc.NaptrReplacement
|
||||
rr.(*dns.NAPTR).Replacement = rc.GetTargetField()
|
||||
case dns.TypeMX:
|
||||
rr.(*dns.MX).Preference = rc.MxPreference
|
||||
rr.(*dns.MX).Mx = rc.GetTargetField()
|
||||
@@ -316,10 +315,10 @@ func downcase(recs []*RecordConfig) {
|
||||
r.Name = strings.ToLower(r.Name)
|
||||
r.NameFQDN = strings.ToLower(r.NameFQDN)
|
||||
switch r.Type { // #rtype_variations
|
||||
case "ANAME", "CNAME", "MX", "NS", "PTR", "NAPTR", "SRV":
|
||||
case "ANAME", "CNAME", "MX", "NS", "PTR", "SRV":
|
||||
// These record types have a target that is case insensitive, so we downcase it.
|
||||
r.Target = strings.ToLower(r.Target)
|
||||
case "A", "AAAA", "ALIAS", "CAA", "IMPORT_TRANSFORM", "TLSA", "TXT", "SOA", "SSHFP", "CF_REDIRECT", "CF_TEMP_REDIRECT":
|
||||
case "A", "AAAA", "ALIAS", "CAA", "IMPORT_TRANSFORM", "NAPTR", "TLSA", "TXT", "SOA", "SSHFP", "CF_REDIRECT", "CF_TEMP_REDIRECT":
|
||||
// These record types have a target that is case sensitive, or is an IP address. We leave them alone.
|
||||
// Do nothing.
|
||||
default:
|
||||
|
@@ -14,7 +14,8 @@ func (rc *RecordConfig) SetTargetNAPTR(order uint16, preference uint16, flags st
|
||||
rc.NaptrFlags = flags
|
||||
rc.NaptrService = service
|
||||
rc.NaptrRegexp = regexp
|
||||
rc.NaptrReplacement = target
|
||||
rc.SetTarget(target)
|
||||
|
||||
if rc.Type == "" {
|
||||
rc.Type = "NAPTR"
|
||||
}
|
||||
|
@@ -78,7 +78,7 @@ func (rc *RecordConfig) GetTargetDebug() string {
|
||||
case "A", "AAAA", "CNAME", "NS", "PTR", "TXT":
|
||||
// Nothing special.
|
||||
case "NAPTR":
|
||||
content += fmt.Sprintf(" naptrorder=%d naptrpreference=%d naptrflags=%s naptrservice=%s naptrregexp=%s naptrreplacement=%s", rc.NaptrOrder, rc.NaptrPreference, rc.NaptrFlags, rc.NaptrService, rc.NaptrRegexp, rc.NaptrReplacement)
|
||||
content += fmt.Sprintf(" naptrorder=%d naptrpreference=%d naptrflags=%s naptrservice=%s naptrregexp=%s", rc.NaptrOrder, rc.NaptrPreference, rc.NaptrFlags, rc.NaptrService, rc.NaptrRegexp)
|
||||
case "MX":
|
||||
content += fmt.Sprintf(" pref=%d", rc.MxPreference)
|
||||
case "SOA":
|
||||
|
Reference in New Issue
Block a user