1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

MAINT: Put some target-related warnings behind a flag (#1541)

* Cleanup

* wip!
This commit is contained in:
Tom Limoncelli
2022-06-17 12:40:44 -04:00
committed by GitHub
parent 0623fabc4c
commit 766f37f60d

View File

@ -9,36 +9,29 @@ import (
) )
/* .target is kind of a mess. /* .target is kind of a mess.
For simple rtypes it is the record's value. (i.e. for an A record If an rType has more than one field, one field goes in .target and the remaining are stored in bespoke fields.
it is the IP address). Not the best design, but we're stuck with it until we re-do RecordConfig, possibly using generics.
For complex rtypes (like an MX record has a preference and a value)
it might be a space-delimited string with all the parameters, or it
might just be the hostname.
This was a bad design decision that I regret. Eventually we will eliminate this
field and replace it with setters/getters. The setters/getters are below
so that it is easy to do things the right way in preparation.
*/ */
// Set debugWarnTxtField to true if you want a warning when
// GetTargetField is called on a TXT record.
// GetTargetField works fine on TXT records for casual output but it
// is often better to access .TxtStrings directly or call
// GetTargetRFC1035Quoted() for nicely quoted text.
var debugWarnTxtField = false
// GetTargetField returns the target. There may be other fields (for example // GetTargetField returns the target. There may be other fields (for example
// an MX record also has a .MxPreference field. // an MX record also has a .MxPreference field.
func (rc *RecordConfig) GetTargetField() string { func (rc *RecordConfig) GetTargetField() string {
//if rc.Type == "TXT" { if debugWarnTxtField {
// fmt.Printf("DEBUG: WARNING: GetTargetField called on TXT record is usually wrong: %q\n", rc.target) if rc.Type == "TXT" {
// //debug.PrintStack() fmt.Printf("DEBUG: WARNING: GetTargetField called on TXT record is frequently wrong: %q\n", rc.target)
//} //debug.PrintStack()
}
}
return rc.target return rc.target
} }
// // GetTargetSingle returns the target for types that have a single value target
// // and panics for all others.
// func (rc *RecordConfig) GetTargetSingle() string {
// if rc.Type == "MX" || rc.Type == "SRV" || rc.Type == "CAA" || rc.Type == "TLSA" || rc.Type == "TXT" {
// panic("TargetSingle called on a type with a multi-parameter rtype.")
// }
// return rc.target
// }
// GetTargetIP returns the net.IP stored in .target. // GetTargetIP returns the net.IP stored in .target.
func (rc *RecordConfig) GetTargetIP() net.IP { func (rc *RecordConfig) GetTargetIP() net.IP {
if rc.Type != "A" && rc.Type != "AAAA" { if rc.Type != "A" && rc.Type != "AAAA" {
@ -91,6 +84,8 @@ func (rc *RecordConfig) zoneFileQuoted() string {
return full[len(header):] return full[len(header):]
} }
// GetTargetRFC1035Quoted returns the target as it would be in an
// RFC1035-style zonefile.
func (rc *RecordConfig) GetTargetRFC1035Quoted() string { func (rc *RecordConfig) GetTargetRFC1035Quoted() string {
return rc.zoneFileQuoted() return rc.zoneFileQuoted()
} }
@ -149,10 +144,3 @@ func (rc *RecordConfig) SetTargetIP(ip net.IP) error {
rc.SetTarget(ip.String()) rc.SetTarget(ip.String())
return nil return nil
} }
// // SetTargetFQDN sets the target to a string, verifying this is an appropriate rtype.
// func (rc *RecordConfig) SetTargetFQDN(target string) error {
// // TODO(tlim): Verify the rtype is appropriate for an hostname.
// rc.Target = target
// return nil
// }