mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
DOCS: Add tips about TXT records (#1622)
* Add tips about TXT records * More comments * Remove test temporarily * go generate * A a link to the test
This commit is contained in:
@@ -5,13 +5,33 @@ import (
|
||||
"net"
|
||||
)
|
||||
|
||||
// PopulateFromString populates a RecordConfig given a type and string.
|
||||
// Many providers give all the parameters of a resource record in one big
|
||||
// string (all the parameters of an MX, SRV, CAA, etc). Rather than have
|
||||
// each provider rewrite this code many times, here's a helper function to use.
|
||||
// PopulateFromString populates a RecordConfig given a type and string. Many
|
||||
// providers give all the parameters of a resource record in one big string.
|
||||
// This helper function lets you not re-invent the wheel.
|
||||
//
|
||||
// NOTE: You almost always want to special-case TXT records. Every provider
|
||||
// seems to quote them differently.
|
||||
//
|
||||
// Recommended calling convention: Process the exceptions first, then use the
|
||||
// function for everything else.
|
||||
// var err error
|
||||
// switch rType {
|
||||
// case "MX":
|
||||
// // MX priority in a separate field.
|
||||
// if err := rc.SetTargetMX(cr.Priority, target); err != nil {
|
||||
// return nil, fmt.Errorf("unparsable MX record received from cloudflare: %w", err)
|
||||
// }
|
||||
// case "TXT":
|
||||
// // TXT records are stored verbatim; no quoting/escaping to parse.
|
||||
// err = rc.SetTargetTXT(target)
|
||||
// // ProTip: Use rc.SetTargetTXTs(manystrings) if the API or parser returns a list of substrings.
|
||||
// default:
|
||||
// err = rec.PopulateFromString(rType, target, origin)
|
||||
// }
|
||||
// if err != nil {
|
||||
// return nil, fmt.Errorf("unparsable record received from CHANGE_TO_PROVDER_NAME: %w", err)
|
||||
// }
|
||||
//
|
||||
// If this doesn't work for all rtypes, process the special cases then
|
||||
// call this for the remainder.
|
||||
func (rc *RecordConfig) PopulateFromString(rtype, contents, origin string) error {
|
||||
if rc.Type != "" && rc.Type != rtype {
|
||||
panic(fmt.Errorf("assertion failed: rtype already set (%s) (%s)", rtype, rc.Type))
|
||||
|
||||
Reference in New Issue
Block a user