all repos — dns @ c2d207279709b932b88eeadb91f50699ba835179

DNS records for my domains, managed via dnscontrol

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)
    })
    : []
  )
}