helpers.js (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | // @ts-check
/// <reference path="types-dnscontrol.d.ts" />
// Helpers
/**
* @param {object} record
* @param {string[]} [record.alpn]
* @param {string[]} [record.ipv4hint]
* @param {string[]} [record.ipv6hint]
*/
function https(record) {
return Object.keys(record)
.map(function (key) {
return [key, record[key].join(',')].join('=')
})
.join(' ')
}
/**
* @param {string} target
* @param {string} prefix
*/
function prefix(target, prefix) {
return target === '@'
? prefix
: prefix + '.' + target
}
/**
* @param {string} name
* @param {string} acmeTarget
*/
function acmeDelegate(name, acmeTarget) {
return CNAME(
name === '@' ? '_acme-challenge' : '_acme-challenge.' + name,
acmeTarget,
TTL('15m'),
)
}
/**
* @param {string[]} sources
* @param {string} target
* @param {RecordModifier[]} [recordModifiers]
*/
function bulkCNAME(sources, target, recordModifiers) {
return sources.map(function (source) {
return CNAME.bind(CNAME, source, target).apply(CNAME, recordModifiers)
})
}
/**
* @param {string} domain
* @param {string} verification
* @param {string[]} [extras]
*/
function iCloudMail(domain, verification, extras) {
if (extras == null) {
extras = []
}
return [
MX('@', 10, 'mx01.mail.icloud.com.'),
MX('@', 10, 'mx02.mail.icloud.com.'),
TXT('@', 'apple-domain=' + verification),
SPF_BUILDER({
parts: ['v=spf1'].concat(extras).concat('include:icloud.com', '-all'),
}),
CNAME('sig1._domainkey', 'sig1.dkim.' + domain + '.at.icloudmailadmin.com.'),
]
}
/**
* @param {string} name
* @param {HostConfig} host
*/
function mkHostRecords(name, host) {
return [A(name, host.v4), AAAA(name, host.v6)].concat(
host.sshfp
? host.sshfp.map(function (sshfp) {
return SSHFP(name, sshfp.algo, sshfp.type, sshfp.fingerprint)
})
: []
)
}
|