mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-09 13:46:07 +08:00
RP works with dotted hosts
This commit is contained in:
parent
b0a909b853
commit
843478172c
5 changed files with 38 additions and 7 deletions
|
|
@ -179,6 +179,12 @@ func makeTests() []*TestGroup {
|
|||
tc("Create RP", rp("foo", "other.example.com.", "bar.com.")),
|
||||
tc("Create RP", rp("foo", "other.example.com.", "example.com.")),
|
||||
),
|
||||
testgroup("RP",
|
||||
requires(providers.CanUseRP),
|
||||
tc("Create RP", rp("foo", "user", "server")),
|
||||
tc("Create RP", rp("foo", "user2", "server")),
|
||||
tc("Create RP", rp("foo", "user2", "waiter")),
|
||||
),
|
||||
|
||||
// TXT
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
package rtype
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/StackExchange/dnscontrol/v4/models"
|
||||
"github.com/StackExchange/dnscontrol/v4/pkg/domaintags"
|
||||
"github.com/StackExchange/dnscontrol/v4/pkg/rtypecontrol"
|
||||
"github.com/miekg/dns"
|
||||
"github.com/miekg/dns/dnsutil"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
|
@ -27,10 +30,11 @@ func (handle *RP) FromArgs(dcn *domaintags.DomainNameVarieties, rec *models.Reco
|
|||
}
|
||||
fields := &RP{
|
||||
dns.RP{
|
||||
Mbox: args[1].(string),
|
||||
Txt: args[2].(string),
|
||||
Mbox: dnsutil.AddOrigin(args[1].(string), dcn.NameASCII),
|
||||
Txt: dnsutil.AddOrigin(args[2].(string), dcn.NameASCII),
|
||||
},
|
||||
}
|
||||
fmt.Printf("RP FromArgs: %+v\n", fields)
|
||||
|
||||
return handle.FromStruct(dcn, rec, args[0].(string), fields)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,7 +99,18 @@ func NewRecordConfigFromStruct(name string, ttl uint32, t string, fields any, dc
|
|||
|
||||
// setRecordNames updates the .Name* fields.
|
||||
func setRecordNames(rec *models.RecordConfig, dcn *domaintags.DomainNameVarieties, n string) {
|
||||
// FYI(tlim): This code could be collapse
|
||||
|
||||
if strings.HasSuffix(n, ".") {
|
||||
nr := n[:len(n)-1]
|
||||
rec.Name = strings.ToLower(domaintags.EfficientToASCII(nr))
|
||||
rec.NameRaw = nr
|
||||
rec.NameUnicode = domaintags.EfficientToUnicode(rec.Name)
|
||||
rec.NameFQDN = rec.Name
|
||||
rec.NameFQDNRaw = rec.NameRaw
|
||||
rec.NameFQDNUnicode = rec.NameUnicode
|
||||
return
|
||||
}
|
||||
|
||||
if rec.SubDomain == "" {
|
||||
// Not _EXTEND() mode:
|
||||
if n == "@" {
|
||||
|
|
@ -109,9 +120,6 @@ func setRecordNames(rec *models.RecordConfig, dcn *domaintags.DomainNameVarietie
|
|||
rec.NameFQDN = dcn.NameASCII
|
||||
rec.NameFQDNRaw = dcn.NameRaw
|
||||
rec.NameFQDNUnicode = dcn.NameUnicode
|
||||
rec.NameFQDN = dcn.NameASCII
|
||||
rec.NameFQDNRaw = dcn.NameRaw
|
||||
rec.NameFQDNUnicode = dcn.NameUnicode
|
||||
} else {
|
||||
rec.Name = strings.ToLower(domaintags.EfficientToASCII(n))
|
||||
rec.NameRaw = n
|
||||
|
|
|
|||
|
|
@ -172,6 +172,20 @@ func TestSetRecordNames(t *testing.T) {
|
|||
NameFQDNUnicode: "www.bücher.bücher.com",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "dotted_label",
|
||||
rec: &models.RecordConfig{},
|
||||
dc: dc,
|
||||
n: "example.com.",
|
||||
expectedRec: &models.RecordConfig{
|
||||
Name: "example.com",
|
||||
NameRaw: "example.com",
|
||||
NameUnicode: "example.com",
|
||||
NameFQDN: "example.com",
|
||||
NameFQDNRaw: "example.com",
|
||||
NameFQDNUnicode: "example.com",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
|
|||
|
|
@ -215,7 +215,6 @@ func ParseZoneContents(content string, zoneName string, zonefileName string) (mo
|
|||
switch rtype {
|
||||
case dns.TypeRP:
|
||||
name := rr.Header().Name
|
||||
name = strings.TrimSuffix(name, ".")
|
||||
prec, err = rtypecontrol.NewRecordConfigFromStruct(name, rr.Header().Ttl, "RP", rr, domaintags.MakeDomainNameVarieties(zoneName))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue