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

Add syntax for very long DKIM strings (#295)

* Add DKIM() function to split long strings.
* Add parse_test for DKIM()
This commit is contained in:
Tom Limoncelli
2018-01-04 21:17:08 -05:00
committed by GitHub
parent be50e1a6a3
commit a03c8f19e8
4 changed files with 115 additions and 80 deletions

View File

@ -601,3 +601,12 @@ function SPF_BUILDER(value) {
return r; return r;
} }
// Split a DKIM string if it is >254 bytes.
function DKIM(arr) {
chunkSize = 255;
var R = [];
for (var i = 0, len = arr.length; i < len; i += chunkSize)
R.push(arr.slice(i, i + chunkSize));
return R;
}

View File

@ -0,0 +1,3 @@
D("foo.com","none"
, TXT("dkimtest2",DKIM("this string is 255 bytes long.hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnKZogtjOlHoeY8iZ5o5brlPOsj/a2Q9Bopu1kHxlxrdw7tZVL9FzUMngiIYGrl8dbP7Rvk7TLMoxHxVkRZPBtIpsKIab/gOUoPLQVYbrAmzyguHYBwAApi3H/pvjUsK8+XF0dKY17AR96lokAPqvfBaUb+DSx8zNw2hrYWYVqvCtnxHUGEUhT1bTlEZBptH3jthis is the remainder. it is 156 bytes long.mOhl2JmbsFKy+RoMTwbkk0/meRvcEFWLHkr4MSgbnie6OpQvM4Y51+kO6DUVr3rwjrdVO9wpFt+n/hdQ92TNif17RMJtE5AGaQ6BN3yJQIDAQAB;"))
);

View File

@ -0,0 +1,21 @@
{
"registrars": [],
"dns_providers": [],
"domains": [
{
"name": "foo.com",
"registrar": "none",
"dnsProviders": {},
"records": [
{
"type": "TXT",
"name": "dkimtest2",
"target": "this string is 255 bytes long.hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnKZogtjOlHoeY8iZ5o5brlPOsj/a2Q9Bopu1kHxlxrdw7tZVL9FzUMngiIYGrl8dbP7Rvk7TLMoxHxVkRZPBtIpsKIab/gOUoPLQVYbrAmzyguHYBwAApi3H/pvjUsK8+XF0dKY17AR96lokAPqvfBaUb+DSx8zNw2hrYWYVqvCtnxHUGEUhT1bTlEZBptH3j",
"txtstrings": ["this string is 255 bytes long.hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnKZogtjOlHoeY8iZ5o5brlPOsj/a2Q9Bopu1kHxlxrdw7tZVL9FzUMngiIYGrl8dbP7Rvk7TLMoxHxVkRZPBtIpsKIab/gOUoPLQVYbrAmzyguHYBwAApi3H/pvjUsK8+XF0dKY17AR96lokAPqvfBaUb+DSx8zNw2hrYWYVqvCtnxHUGEUhT1bTlEZBptH3j",
"this is the remainder. it is 156 bytes long.mOhl2JmbsFKy+RoMTwbkk0/meRvcEFWLHkr4MSgbnie6OpQvM4Y51+kO6DUVr3rwjrdVO9wpFt+n/hdQ92TNif17RMJtE5AGaQ6BN3yJQIDAQAB;"
]
}
]
}
]
}

View File

@ -192,88 +192,90 @@ var _escData = map[string]*_escFile{
"/helpers.js": { "/helpers.js": {
local: "pkg/js/helpers.js", local: "pkg/js/helpers.js",
size: 17122, size: 17337,
modtime: 0, modtime: 0,
compressed: ` compressed: `
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
AP//3VPAQ7lDAAA=
`, `,
}, },