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

Fix TXT docs, remove AUTOSPLIT (#1083)

This commit is contained in:
Tom Limoncelli
2021-03-07 14:34:00 -05:00
committed by GitHub
parent 8dea9edc34
commit 50a24605e6
3 changed files with 186 additions and 157 deletions

View File

@ -10,11 +10,7 @@ TXT adds an TXT record To a domain. The name should be the relative
label for the record. Use `@` for the domain apex.
The contents is either a single or multiple strings. To
specify multiple strings, include them in an array.
TXT records with multiple strings are only supported by some
providers. DNSControl will produce a validation error if the
provider does not support multiple strings.
specify multiple strings, specify them as an array.
Each string is a JavaScript string (quoted using single or double
quotes). The (somewhat complex) quoting rules of the DNS protocol
@ -30,46 +26,82 @@ Modifiers can be any number of [record modifiers](#record-modifiers) or json obj
TXT('multiple', ['one', 'two', 'three']), // Multiple strings
TXT('quoted', 'any "quotes" and escapes? ugh; no worries!'),
TXT('_domainkey', 't=y; o=-;'), // Escapes are done for you automatically.
TXT('long', '#'.repeat(10), AUTOSPLIT) // Escapes are done for you automatically.
TXT('long', 'X'.repeat(300)) // Long strings are split automatically.
);
{%endhighlight%}
{% include endExample.html %}
NOTE: In the past, long strings had to be annotated with the keyword
`AUTOSPLIT`. This is no longer required. The keyword is now a no-op.
# Long and multiple strings
# Long strings
DNS RFCs limit TXT strings to 255 bytes, but you can have multiple
such strings. Most applications blindly concatenate the strings but
some services that use TXT records join them with a space between each
substring (citation needed!).
Strings that are longer than 255 octets (bytes) will be quietly
split into 255-octets chunks or the provider may report an error
if it does not handle multiple strings.
Not all providers support multiple strings and those that do often put
limits on them.
Therefore, DNSControl requires you to explicitly mark TXT records that
should be split.
# TXT record edge cases.
Here are some examples:
Most providers do not support the full possibilities of what a TXT
record can store. DNSControl can not handle all the edge cases
and incompatibles that providers have introduced. Instead, it
stores the string(s) that you provide and passes them to the provider
verbatim. The provider may opt to accept the data, fix it, or
reject it. This happens early in the processing, long before
the DNSControl talks to the provider's API.
VERY_LONG_STRING = 'Z'.repeat(300)
The RFCs specify that a TXT record stores one or more strings,
each is up to 255 octets (bytes) long. We call these individual
strings *chunks*. Each chunk may be zero to 255 octets long.
There is no limit to the number of chunks in a TXT record,
other than IP packet length restrictions. The contents of each chunk
may be octets of value from 0x00 to 0xff.
// This will produce a validation-time error:
TXT('long1', VERY_LONG_STRING),
In reality DNS Service Providers (DSPs) place many restrictions on TXT
records.
// String will be split on 255-byte boundaries:
TXT('long', VERY_LONG_STRING, AUTOSPLIT),
Some DSPs only support a single string of 255 octets or fewer.
Multiple strings, or any one string being longer than 255 octets will
result in an error. One provider limits the string to 254 octets,
which makes me think they're code has an off-by-one error.
// String split manually:
TXT('long', ['part1', 'part2', 'part3']),
Some DSPs only support one string, but it may be of any length.
Behind the scenes the provider splits it into 255-octet chunks
(except the last one, of course).
NOTE: Old releases of DNSControl blindly sent long strings to
providers. Some gave an error at that time, others quietly truncated
the strings, and some silently split them into multiple short
strings. If you see an error that mentions
`ERROR: txt target >255 bytes and AUTOSPLIT not set` this means you
need to add AUTOSPLIT to explicitly split the string manually.
Some DSPs support multiple strings, but API requests must be 512-bytes
or fewer, and with quoting, escaping, and other encoding mishegoss
you can't be sure what will be permitted until you actually try it.
An example error might look like this:
Regardless of the quantity and length of strings, some providers ban
double quotes, back-ticks, or other chars.
2020/11/21 00:03:21 printIR.go:94: ERROR: txt target >255 bytes and AUTOSPLIT not set: label="20201._domainkey" index=0 len=424 string[:50]="v=DKIM1; k=rsa; t=s; s=email; p=MIIBIjANBgkqhkiG9w..."
# Testing the support of a provider
## How can you tell if a provider will support a particular `TXT()` record?
Include the `TXT()` record in a `D()` as usual, along
with the `DnsProvider()` for that provider. Run `dnscontrol check` to
see if any errors are produced. The check command does not talk to
the provider's API, thus permitting you to do this without having an
account at that provider.
## What if the provider rejects a string that is supported?
Suppose I can create the TXT record using the DSP's web portal but
DNSControl rejects the string?
It is possible that the provider code in DNSControl rejects strings
that the DSP accepts. This is because the test is done in code, not
by querying the provider's API. It is possible that the code was
written to work around a bug (such as rejecting a string with a
back-tick) but now that bug has been fixed.
All such checks are in `providers/${providername}/auditrecords.go`.
You can try removing the check that you feel is in error and see if
the provider's API accepts the record. You can do this by running the
integration tests, or by simply adding that record to an existing
`dnsconfig.js` and seeing if `dnscontrol push` is able to push that
record into production. (Be careful if you are testing this on a
domain used in production.)

View File

@ -842,7 +842,6 @@ function SPF_BUILDER(value) {
// Only add the raw spf record if it isn't an empty string
if (value.raw !== '') {
rp = {};
rp.txtSplitAlgorithm = 'multistring'; // Split the target if needed.
if (value.ttl) {
r.push(TXT(value.raw, rawspf, rp, TTL(value.ttl)));
} else {
@ -864,8 +863,6 @@ function SPF_BUILDER(value) {
p.txtMaxSize = value.txtMaxSize;
}
p.txtSplitAlgorithm = 'multistring'; // Split the target if needed.
// Generate a TXT record with the metaparameters.
if (value.ttl) {
r.push(TXT(value.label, rawspf, p, TTL(value.ttl)));

View File

@ -212,131 +212,131 @@ var _escData = map[string]*_escFile{
"/helpers.js": {
name: "helpers.js",
local: "pkg/js/helpers.js",
size: 28050,
size: 27896,
modtime: 0,
compressed: `
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
AA==
`,
},
}