hooks/dehydrated/dehydrated-ssb-dns01-hook.jsView |
---|
70 | 70 … | } |
71 | 71 … | |
72 | 72 … | function resolveDomains(sbot, hostnames, cb) { |
73 | 73 … | console.log('resolve domains ', hostnames) |
74 | | - |
| 74 … | + if (!hostnames.length) return cb() |
| 75 … | + var done = multicb({pluck: 1}) |
| 76 … | + hostnames.forEach(function (hostname) { |
| 77 … | + dns.resolve(hostname, done()) |
| 78 … | + }) |
| 79 … | + done(cb) |
| 80 … | + |
75 | 81 … | pull( |
76 | 82 … | sbot.messagesByType('ssb-dns'), |
77 | 83 … | pull.filter(function (msg) { |
78 | 84 … | var c = msg.value.content |
84 | 90 … | filterBranches(), |
85 | 91 … | pull.map(function (msg) { return msg.value.content.record.data }), |
86 | 92 … | pull.collect(cb) |
87 | 93 … | ) |
| 94 … | + */ |
88 | 95 … | } |
89 | 96 … | |
90 | 97 … | function resolveNameservers(sbot, hostnames, cb) { |
91 | 98 … | console.log('resolve nameservers ', hostnames) |
92 | | - |
| 99 … | + if (!hostnames.length) return cb() |
| 100 … | + var done = multicb({pluck: 1}) |
| 101 … | + hostnames.forEach(function (hostname) { |
| 102 … | + var domain = hostname.replace(/[^.]*\./, '') |
| 103 … | + console.log('domain', domain) |
| 104 … | + dns.resolveNs(domain, done()) |
| 105 … | + }) |
| 106 … | + done(cb) |
| 107 … | + |
93 | 108 … | pull( |
94 | 109 … | sbot.messagesByType('ssb-dns'), |
95 | 110 … | pull.filter(function (msg) { |
96 | 111 … | var c = msg.value.content |
102 | 117 … | filterBranches(), |
103 | 118 … | pull.map(function (msg) { return msg.value.content.record.data }), |
104 | 119 … | pull.collect(cb) |
105 | 120 … | ) |
| 121 … | + */ |
106 | 122 … | } |
107 | 123 … | |
108 | 124 … | function getNameserverHosts(sbot, domains, cb) { |
109 | 125 … | resolveNameservers(sbot, domains, function (err, nameservers) { |
| 126 … | + console.log('resolved', nameservers) |
110 | 127 … | if (err) return cb(err) |
111 | 128 … | resolveDomains(sbot, nameservers, cb) |
112 | 129 … | }) |
113 | 130 … | } |
194 | 211 … | console.log('gossip msgs', msgs.map(function (msg) { return msg.key})) |
195 | 212 … | var records = msgs.map(function (msg) { return msg.value.content.record }) |
196 | 213 … | var domains = records.map(function (r) { return r.name }).filter(uniques()) |
197 | 214 … | getNameserverHosts(sbot, domains, function (err, hosts) { |
198 | | - if (err) return cb(err) |
| 215 … | + if (err) { |
| 216 … | + console.error('unable to get nameservers:', err) |
| 217 … | + return waitForRecords(records, 900e3, [], cb) |
| 218 … | + } |
199 | 219 … | getPubAddressesForHosts(sbot, hosts, function (err, addrs) { |
200 | 220 … | if (err) return cb(err) |
201 | | - gossipWithPubs(sbot, addrs, 600e3, function (err) { |
| 221 … | + gossipWithPubs(sbot, addrs, 900e3, function (err) { |
202 | 222 … | if (err) return cb(err) |
203 | | - waitForRecords(records, 600e3, hosts, cb) |
| 223 … | + waitForRecords(records, 900e3, hosts, cb) |
204 | 224 … | }) |
205 | 225 … | }) |
206 | 226 … | }) |
207 | 227 … | } |
270 | 290 … | var value = { |
271 | 291 … | type: 'ssb-dns', |
272 | 292 … | record: { |
273 | 293 … | name: '_acme-challenge.' + challenge.domainName, |
274 | | - ttl: 180, |
| 294 … | + ttl: 30, |
275 | 295 … | class: 'IN', |
276 | 296 … | type: 'TXT', |
277 | 297 … | data: challenge.tokenContent |
278 | 298 … | } |
297 | 317 … | sbot.publish({ |
298 | 318 … | type: 'ssb-dns', |
299 | 319 … | record: { |
300 | 320 … | name: name, |
301 | | - ttl: 180, |
| 321 … | + ttl: 30, |
302 | 322 … | class: 'IN', |
303 | 323 … | type: 'TXT', |
304 | 324 … | }, |
305 | 325 … | branch: branches |
319 | 339 … | console.log('deployed challenges') |
320 | 340 … | if (err) return cb(err) |
321 | 341 … | gossipMsgs(sbot, msgs, function (err) { |
322 | 342 … | if (!err) console.log('gossip success') |
| 343 … | + cb() |
323 | 344 … | }) |
324 | 345 … | }) |
325 | 346 … | }) |
326 | 347 … | } |