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 87 88 89 | // @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
* @returns {DomainModifier[]}
*/
function migaduDKIM(domain) {
return [
CNAME('key1._domainkey', 'key1.' + domain + '._domainkey.migadu.com.'),
CNAME('key2._domainkey', 'key2.' + domain + '._domainkey.migadu.com.'),
CNAME('key3._domainkey', 'key3.' + domain + '._domainkey.migadu.com.'),
]
}
var migaduMX = [
MX('@', 10, 'aspmx1.migadu.com.'),
MX('@', 20, 'aspmx2.migadu.com.'),
CNAME('autoconfig', 'autoconfig.migadu.com.'),
SRV('_autodiscover._tcp', 443, 0, 1, 'autodiscover.migadu.com.'),
SRV('_submissions._tcp', 465, 0, 1, 'smtp.migadu.com.'),
SRV('_imaps._tcp', 993, 0, 1, 'imap.migadu.com.'),
SRV('_pop3s._tcp', 995, 0, 1, 'pop.migadu.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)
})
: []
)
}
|