diff --git a/pkg/js/helpers.js b/pkg/js/helpers.js index 1f041d942..9580d3cc8 100644 --- a/pkg/js/helpers.js +++ b/pkg/js/helpers.js @@ -601,3 +601,12 @@ function SPF_BUILDER(value) { 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; +} diff --git a/pkg/js/parse_tests/018-dkim.js b/pkg/js/parse_tests/018-dkim.js new file mode 100644 index 000000000..21c8a4cfa --- /dev/null +++ b/pkg/js/parse_tests/018-dkim.js @@ -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;")) +); diff --git a/pkg/js/parse_tests/018-dkim.json b/pkg/js/parse_tests/018-dkim.json new file mode 100644 index 000000000..d5ad6852c --- /dev/null +++ b/pkg/js/parse_tests/018-dkim.json @@ -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;" + ] + } + ] + } + ] +} diff --git a/pkg/js/static.go b/pkg/js/static.go index 37c46b6b6..dd1208082 100644 --- a/pkg/js/static.go +++ b/pkg/js/static.go @@ -192,88 +192,90 @@ var _escData = map[string]*_escFile{ "/helpers.js": { local: "pkg/js/helpers.js", - size: 17122, + size: 17337, modtime: 0, compressed: ` -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 +AP//3VPAQ7lDAAA= `, },