dns-message 1.0.0 → 1.0.1-canary-197f34977c71a09b51a96f1a99eb26e7aa8186a5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/dns-message.d.ts +3 -3
- package/dist/dns-message.js +529 -505
- package/dist/dns-message.js.map +1 -1
- package/dist/dns-message.mjs +105 -81
- package/dist/dns-message.mjs.map +1 -1
- package/package.json +1 -1
package/dist/dns-message.js
CHANGED
|
@@ -58,7 +58,7 @@ let e = function(t) {
|
|
|
58
58
|
return t;
|
|
59
59
|
}({});
|
|
60
60
|
|
|
61
|
-
let
|
|
61
|
+
let r = function(t) {
|
|
62
62
|
t[t.IN = 1] = "IN";
|
|
63
63
|
t[t.CS = 2] = "CS";
|
|
64
64
|
t[t.CH = 3] = "CH";
|
|
@@ -67,7 +67,7 @@ let n = function(t) {
|
|
|
67
67
|
return t;
|
|
68
68
|
}({});
|
|
69
69
|
|
|
70
|
-
let
|
|
70
|
+
let n = function(t) {
|
|
71
71
|
t[t.NOERR = 0] = "NOERR";
|
|
72
72
|
t[t.FORMERR = 1] = "FORMERR";
|
|
73
73
|
t[t.SERVFAIL = 2] = "SERVFAIL";
|
|
@@ -115,15 +115,15 @@ const i = new TextDecoder;
|
|
|
115
115
|
|
|
116
116
|
const o = "undefined" != typeof Buffer ? t => Buffer.byteLength(t) : t => {
|
|
117
117
|
let e = t.length;
|
|
118
|
-
for (let
|
|
119
|
-
const
|
|
120
|
-
if (
|
|
118
|
+
for (let r = e - 1; r >= 0; r--) {
|
|
119
|
+
const n = t.charCodeAt(r);
|
|
120
|
+
if (n > 127 && n <= 2047) {
|
|
121
121
|
e++;
|
|
122
|
-
} else if (
|
|
122
|
+
} else if (n > 2047 && n <= 65535) {
|
|
123
123
|
e += 2;
|
|
124
124
|
}
|
|
125
|
-
if (
|
|
126
|
-
|
|
125
|
+
if (n >= 56320 && n <= 57343) {
|
|
126
|
+
r--;
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
return e;
|
|
@@ -145,135 +145,142 @@ const c = {
|
|
|
145
145
|
if ("." === t[t.length - 1]) {
|
|
146
146
|
e--;
|
|
147
147
|
}
|
|
148
|
-
|
|
148
|
+
e += t.replace(/\\\./g, ".").length;
|
|
149
|
+
if (e > 255) {
|
|
150
|
+
throw new RangeError(`Name "${t}" is above 255 byte limit.`);
|
|
151
|
+
}
|
|
152
|
+
return e;
|
|
149
153
|
}
|
|
150
154
|
},
|
|
151
|
-
write(t, e,
|
|
152
|
-
const
|
|
153
|
-
for (let
|
|
154
|
-
|
|
155
|
-
while (
|
|
156
|
-
|
|
155
|
+
write(t, e, r) {
|
|
156
|
+
const n = a.encode(r);
|
|
157
|
+
for (let s = 46 === n[0] ? 1 : 0, a = 0; s < n.byteLength; s = a + 1) {
|
|
158
|
+
a = n.indexOf(46, s);
|
|
159
|
+
while (a > -1 && 92 === n[a - 1]) {
|
|
160
|
+
a = n.indexOf(46, a + 1);
|
|
157
161
|
}
|
|
158
|
-
if (-1 ===
|
|
159
|
-
|
|
162
|
+
if (-1 === a) {
|
|
163
|
+
a = n.byteLength;
|
|
160
164
|
}
|
|
161
|
-
if (
|
|
165
|
+
if (a === s) {
|
|
162
166
|
continue;
|
|
167
|
+
} else if (a - s > 63) {
|
|
168
|
+
throw new RangeError(`Label in "${r}" is above 63 byte limit.`);
|
|
163
169
|
}
|
|
164
|
-
let
|
|
165
|
-
for (let e =
|
|
166
|
-
if (92 ===
|
|
170
|
+
let i = e + 1;
|
|
171
|
+
for (let e = s; e < a; e++) {
|
|
172
|
+
if (92 === n[e] && 46 === n[e + 1]) {
|
|
167
173
|
e++;
|
|
168
174
|
}
|
|
169
|
-
t.setUint8(
|
|
175
|
+
t.setUint8(i++, n[e]);
|
|
170
176
|
}
|
|
171
|
-
t.setUint8(e,
|
|
172
|
-
e =
|
|
173
|
-
|
|
177
|
+
t.setUint8(e, i - e - 1);
|
|
178
|
+
e = i;
|
|
179
|
+
s = a + 1;
|
|
174
180
|
}
|
|
175
181
|
return e + 1;
|
|
176
182
|
},
|
|
177
183
|
read(t, e) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (0 ===
|
|
184
|
+
const r = [];
|
|
185
|
+
let n = e.offset;
|
|
186
|
+
let s = e;
|
|
187
|
+
while (1) {
|
|
188
|
+
const e = t.getUint8(s.offset);
|
|
189
|
+
if (0 === e) {
|
|
190
|
+
advance(s, 1);
|
|
184
191
|
break;
|
|
185
|
-
} else if (!(192 &
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
} else if (!(192 & e)) {
|
|
193
|
+
advance(s, 1);
|
|
194
|
+
const n = sliceView(t, s, e);
|
|
195
|
+
r.push(i.decode(n).replace(/\./g, "\\."));
|
|
196
|
+
} else {
|
|
197
|
+
const e = t.getUint16(s.offset) - 49152;
|
|
198
|
+
advance(s, 2);
|
|
199
|
+
if (e < n) {
|
|
200
|
+
s = {
|
|
201
|
+
offset: n = e,
|
|
202
|
+
length: 0
|
|
203
|
+
};
|
|
204
|
+
} else {
|
|
205
|
+
advance(s, 2);
|
|
206
|
+
break;
|
|
197
207
|
}
|
|
198
|
-
e.offset = n;
|
|
199
|
-
e.length = r;
|
|
200
|
-
break;
|
|
201
208
|
}
|
|
202
209
|
}
|
|
203
|
-
return
|
|
210
|
+
return r.join(".") || ".";
|
|
204
211
|
}
|
|
205
212
|
};
|
|
206
213
|
|
|
207
214
|
const f = {
|
|
208
215
|
bytes: t => "string" == typeof t ? o(t) : t.byteLength,
|
|
209
|
-
write(t, e,
|
|
210
|
-
const
|
|
211
|
-
new Uint8Array(t.buffer, t.byteOffset + e,
|
|
212
|
-
return e +=
|
|
216
|
+
write(t, e, r) {
|
|
217
|
+
const n = "string" == typeof r ? a.encode(r) : r;
|
|
218
|
+
new Uint8Array(t.buffer, t.byteOffset + e, n.byteLength).set(n);
|
|
219
|
+
return e += n.byteLength;
|
|
213
220
|
},
|
|
214
221
|
read: (t, e) => sliceView(t, e)
|
|
215
222
|
};
|
|
216
223
|
|
|
217
224
|
const d = {
|
|
218
225
|
bytes: t => o(t) + 1,
|
|
219
|
-
write(t, e,
|
|
220
|
-
const
|
|
221
|
-
t.setUint8(e++,
|
|
222
|
-
return f.write(t, e,
|
|
226
|
+
write(t, e, r) {
|
|
227
|
+
const n = a.encode(r);
|
|
228
|
+
t.setUint8(e++, n.byteLength);
|
|
229
|
+
return f.write(t, e, n);
|
|
223
230
|
},
|
|
224
231
|
read(t, e) {
|
|
225
|
-
const
|
|
232
|
+
const r = t.getUint8(e.offset);
|
|
226
233
|
advance(e, 1);
|
|
227
|
-
return i.decode(sliceView(t, e,
|
|
234
|
+
return i.decode(sliceView(t, e, r));
|
|
228
235
|
}
|
|
229
236
|
};
|
|
230
237
|
|
|
231
238
|
const u = {
|
|
232
239
|
bytes(t) {
|
|
233
240
|
const e = [];
|
|
234
|
-
for (let
|
|
235
|
-
e[t[
|
|
241
|
+
for (let r = 0; r < t.length; r++) {
|
|
242
|
+
e[t[r] >> 8] = Math.max(e[t[r] >> 8] || 0, 255 & t[r]);
|
|
236
243
|
}
|
|
237
|
-
let
|
|
244
|
+
let r = 0;
|
|
238
245
|
for (let t = 0; t < e.length; t++) {
|
|
239
246
|
if (null != e[t]) {
|
|
240
|
-
|
|
247
|
+
r += 2 + Math.ceil((e[t] + 1) / 8);
|
|
241
248
|
}
|
|
242
249
|
}
|
|
243
|
-
return
|
|
250
|
+
return r;
|
|
244
251
|
},
|
|
245
|
-
write(t, e,
|
|
246
|
-
const
|
|
247
|
-
for (let t = 0; t <
|
|
248
|
-
(r[
|
|
252
|
+
write(t, e, r) {
|
|
253
|
+
const n = [];
|
|
254
|
+
for (let t = 0; t < r.length; t++) {
|
|
255
|
+
(n[r[t] >> 8] || (n[r[t] >> 8] = []))[r[t] >> 3 & 31] |= 1 << 7 - (7 & r[t]);
|
|
249
256
|
}
|
|
250
|
-
for (let
|
|
251
|
-
const s = r
|
|
257
|
+
for (let r = 0; r < n.length; r++) {
|
|
258
|
+
const s = n[r];
|
|
252
259
|
if (null != s) {
|
|
253
|
-
t.setUint8(e++,
|
|
260
|
+
t.setUint8(e++, r);
|
|
254
261
|
t.setUint8(e++, s.length);
|
|
255
|
-
for (let
|
|
256
|
-
t.setUint8(e++, s[
|
|
262
|
+
for (let r = 0; r < s.length; r++) {
|
|
263
|
+
t.setUint8(e++, s[r]);
|
|
257
264
|
}
|
|
258
265
|
}
|
|
259
266
|
}
|
|
260
267
|
return e;
|
|
261
268
|
},
|
|
262
269
|
read(t, e) {
|
|
263
|
-
const {offset:
|
|
270
|
+
const {offset: r, length: n} = e;
|
|
264
271
|
const s = [];
|
|
265
|
-
while (e.offset -
|
|
266
|
-
const
|
|
267
|
-
const
|
|
268
|
-
for (let a = 0; a <
|
|
269
|
-
const
|
|
272
|
+
while (e.offset - r < n) {
|
|
273
|
+
const r = t.getUint8(e.offset);
|
|
274
|
+
const n = t.getUint8(e.offset + 1);
|
|
275
|
+
for (let a = 0; a < n; a++) {
|
|
276
|
+
const n = t.getUint8(e.offset + 2 + a);
|
|
270
277
|
for (let t = 0; t < 8; t++) {
|
|
271
|
-
if (
|
|
272
|
-
s.push(
|
|
278
|
+
if (n & 1 << 7 - t) {
|
|
279
|
+
s.push(r << 8 | a << 3 | t);
|
|
273
280
|
}
|
|
274
281
|
}
|
|
275
282
|
}
|
|
276
|
-
advance(e, 2 +
|
|
283
|
+
advance(e, 2 + n);
|
|
277
284
|
}
|
|
278
285
|
return s;
|
|
279
286
|
}
|
|
@@ -281,155 +288,156 @@ const u = {
|
|
|
281
288
|
|
|
282
289
|
const l = {
|
|
283
290
|
bytes: () => 4,
|
|
284
|
-
write(t, e,
|
|
285
|
-
const
|
|
286
|
-
for (let
|
|
287
|
-
t.setUint8(e++, parseInt(r
|
|
291
|
+
write(t, e, r) {
|
|
292
|
+
const n = r.split(".", 4);
|
|
293
|
+
for (let r = 0; r < 4; r++) {
|
|
294
|
+
t.setUint8(e++, parseInt(n[r], 10));
|
|
288
295
|
}
|
|
289
296
|
return e;
|
|
290
297
|
},
|
|
291
298
|
read(t, e) {
|
|
292
|
-
const
|
|
293
|
-
const
|
|
294
|
-
advance(e,
|
|
295
|
-
return
|
|
299
|
+
const r = Math.min(e.length, 4);
|
|
300
|
+
const n = new Array(4).fill(0).map((n, s) => s < r ? t.getUint8(e.offset + s) : 0).join(".");
|
|
301
|
+
advance(e, r);
|
|
302
|
+
return n;
|
|
296
303
|
}
|
|
297
304
|
};
|
|
298
305
|
|
|
299
306
|
const g = {
|
|
300
307
|
bytes: () => 2,
|
|
301
|
-
write(t, e,
|
|
302
|
-
t.setUint16(e,
|
|
308
|
+
write(t, e, r) {
|
|
309
|
+
t.setUint16(e, r);
|
|
303
310
|
return e + 2;
|
|
304
311
|
},
|
|
305
312
|
read(t, e) {
|
|
306
|
-
const
|
|
313
|
+
const r = t.getUint16(e.offset);
|
|
307
314
|
advance(e, 2);
|
|
308
|
-
return
|
|
315
|
+
return r;
|
|
309
316
|
}
|
|
310
317
|
};
|
|
311
318
|
|
|
312
319
|
const y = {
|
|
313
320
|
bytes: () => 16,
|
|
314
|
-
write(t, e,
|
|
315
|
-
const
|
|
316
|
-
const s = (
|
|
317
|
-
const a =
|
|
321
|
+
write(t, e, r) {
|
|
322
|
+
const n = r.indexOf("::");
|
|
323
|
+
const s = (n > -1 ? r.slice(0, n) : r).split(":");
|
|
324
|
+
const a = n > -1 ? r.slice(n + 2).split(":") : [];
|
|
318
325
|
const i = a.length > 0 && a[a.length - 1].includes(".") ? a.pop() : void 0;
|
|
319
|
-
for (let
|
|
320
|
-
t.setUint16(e, parseInt(s[
|
|
326
|
+
for (let r = 0; r < s.length; r++) {
|
|
327
|
+
t.setUint16(e, parseInt(s[r], 16));
|
|
321
328
|
e += 2;
|
|
322
329
|
}
|
|
323
|
-
for (let
|
|
330
|
+
for (let r = 8 - (s.length + a.length + (i ? 2 : 0)); r > 0; r--) {
|
|
324
331
|
t.setUint16(e, 0);
|
|
325
332
|
e += 2;
|
|
326
333
|
}
|
|
327
|
-
for (let
|
|
328
|
-
t.setUint16(e, parseInt(a[
|
|
334
|
+
for (let r = 0; r < a.length; r++) {
|
|
335
|
+
t.setUint16(e, parseInt(a[r], 16));
|
|
329
336
|
e += 2;
|
|
330
337
|
}
|
|
331
338
|
if (i) {
|
|
332
|
-
const
|
|
333
|
-
t.setUint16(e,
|
|
334
|
-
t.setUint16(e + 2,
|
|
339
|
+
const r = i.split(".", 4).map(t => parseInt(t, 10));
|
|
340
|
+
t.setUint16(e, r[0] << 8 | r[1]);
|
|
341
|
+
t.setUint16(e + 2, r[2] << 8 | r[3]);
|
|
335
342
|
e += 4;
|
|
336
343
|
}
|
|
337
344
|
return e;
|
|
338
345
|
},
|
|
339
346
|
read(t, e) {
|
|
340
|
-
let
|
|
341
|
-
const
|
|
342
|
-
for (let s = 0; s <
|
|
347
|
+
let r = "";
|
|
348
|
+
const n = Math.min(e.length, 16);
|
|
349
|
+
for (let s = 0; s < n; s += 2) {
|
|
343
350
|
if (0 !== s) {
|
|
344
|
-
|
|
351
|
+
r += ":";
|
|
345
352
|
}
|
|
346
|
-
|
|
353
|
+
r += t.getUint16(e.offset + s).toString(16);
|
|
347
354
|
}
|
|
348
|
-
advance(e,
|
|
349
|
-
return
|
|
355
|
+
advance(e, n);
|
|
356
|
+
return r.replace(/(^|:)0(:0)*:0(:|$)/, "$1::$3").replace(/:{3,4}/, "::");
|
|
350
357
|
}
|
|
351
358
|
};
|
|
352
359
|
|
|
353
360
|
const withRDLength = t => ({
|
|
354
361
|
bytes: e => t.bytes(e) + 2,
|
|
355
|
-
write(e,
|
|
356
|
-
const s =
|
|
357
|
-
|
|
358
|
-
e.setUint16(s,
|
|
359
|
-
return
|
|
362
|
+
write(e, r, n) {
|
|
363
|
+
const s = r;
|
|
364
|
+
r = t.write(e, r + 2, n);
|
|
365
|
+
e.setUint16(s, r - s - 2);
|
|
366
|
+
return r;
|
|
360
367
|
},
|
|
361
|
-
read(e,
|
|
362
|
-
const {offset:
|
|
363
|
-
const a =
|
|
364
|
-
|
|
365
|
-
const i = t.read(e,
|
|
366
|
-
|
|
367
|
-
|
|
368
|
+
read(e, r) {
|
|
369
|
+
const {offset: n, length: s} = r;
|
|
370
|
+
const a = r.length = e.getUint16(r.offset);
|
|
371
|
+
r.offset += 2;
|
|
372
|
+
const i = t.read(e, r);
|
|
373
|
+
r.offset = n + 2 + a;
|
|
374
|
+
r.length = s;
|
|
368
375
|
return i;
|
|
369
376
|
}
|
|
370
377
|
});
|
|
371
378
|
|
|
372
379
|
const array = t => ({
|
|
373
380
|
bytes(e) {
|
|
374
|
-
let
|
|
375
|
-
for (let
|
|
376
|
-
|
|
381
|
+
let r = 0;
|
|
382
|
+
for (let n = 0; null != e && n < e.length; n++) {
|
|
383
|
+
r += t.bytes(e[n]);
|
|
377
384
|
}
|
|
378
|
-
return
|
|
385
|
+
return r;
|
|
379
386
|
},
|
|
380
|
-
write(e,
|
|
381
|
-
for (let s = 0; null !=
|
|
382
|
-
|
|
387
|
+
write(e, r, n) {
|
|
388
|
+
for (let s = 0; null != n && s < n.length; s++) {
|
|
389
|
+
r = t.write(e, r, n[s]);
|
|
383
390
|
}
|
|
384
|
-
return
|
|
391
|
+
return r;
|
|
385
392
|
},
|
|
386
|
-
read(e,
|
|
387
|
-
const {offset:
|
|
393
|
+
read(e, r) {
|
|
394
|
+
const {offset: n, length: s} = r;
|
|
388
395
|
const a = [];
|
|
389
|
-
while (
|
|
390
|
-
a.push(t.read(e,
|
|
396
|
+
while (r.offset - n < s) {
|
|
397
|
+
a.push(t.read(e, r));
|
|
391
398
|
}
|
|
392
399
|
return a;
|
|
393
400
|
}
|
|
394
401
|
});
|
|
395
402
|
|
|
396
403
|
const advance = (t, e) => {
|
|
397
|
-
t.offset += e;
|
|
398
|
-
t.length -= e;
|
|
404
|
+
t.offset += 0 | e;
|
|
405
|
+
t.length -= 0 | e;
|
|
406
|
+
t.length &= ~(t.length >> 31);
|
|
399
407
|
};
|
|
400
408
|
|
|
401
|
-
const sliceView = (t, e,
|
|
402
|
-
const
|
|
403
|
-
advance(e,
|
|
404
|
-
return
|
|
409
|
+
const sliceView = (t, e, r = e.length) => {
|
|
410
|
+
const n = new Uint8Array(t.buffer, t.byteOffset + e.offset, r);
|
|
411
|
+
advance(e, r);
|
|
412
|
+
return n;
|
|
405
413
|
};
|
|
406
414
|
|
|
407
415
|
const U = 32768;
|
|
408
416
|
|
|
409
417
|
const h = {
|
|
410
418
|
bytes: t => c.bytes(t.name) + 4,
|
|
411
|
-
write(t, e,
|
|
412
|
-
let s =
|
|
413
|
-
if (
|
|
419
|
+
write(t, e, n) {
|
|
420
|
+
let s = n.class || r.IN;
|
|
421
|
+
if (n.qu) {
|
|
414
422
|
s |= U;
|
|
415
423
|
}
|
|
416
|
-
e = c.write(t, e,
|
|
417
|
-
t.setUint16(e,
|
|
424
|
+
e = c.write(t, e, n.name);
|
|
425
|
+
t.setUint16(e, n.type);
|
|
418
426
|
t.setUint16(e + 2, s);
|
|
419
427
|
return e += 4;
|
|
420
428
|
},
|
|
421
429
|
read(t, e) {
|
|
422
|
-
const
|
|
430
|
+
const n = c.read(t, e);
|
|
423
431
|
const s = t.getUint16(e.offset);
|
|
424
|
-
let a = t.getUint16(e.offset + 2) ||
|
|
432
|
+
let a = t.getUint16(e.offset + 2) || r.ANY;
|
|
425
433
|
let i = !1;
|
|
426
|
-
if (a !==
|
|
434
|
+
if (a !== r.ANY && a & U) {
|
|
427
435
|
a &= -32769;
|
|
428
436
|
i = !0;
|
|
429
437
|
}
|
|
430
438
|
advance(e, 4);
|
|
431
439
|
return {
|
|
432
|
-
name:
|
|
440
|
+
name: n,
|
|
433
441
|
type: s,
|
|
434
442
|
class: a,
|
|
435
443
|
qu: i
|
|
@@ -437,15 +445,15 @@ const h = {
|
|
|
437
445
|
}
|
|
438
446
|
};
|
|
439
447
|
|
|
440
|
-
let
|
|
448
|
+
let w = function(t) {
|
|
441
449
|
t[t.v4 = 1] = "v4";
|
|
442
450
|
t[t.v6 = 2] = "v6";
|
|
443
451
|
return t;
|
|
444
452
|
}({});
|
|
445
453
|
|
|
446
|
-
const
|
|
454
|
+
const p = withRDLength({
|
|
447
455
|
bytes: t => f.bytes(t.data),
|
|
448
|
-
write: (t, e,
|
|
456
|
+
write: (t, e, r) => f.write(t, e, r.data),
|
|
449
457
|
read: (t, e) => ({
|
|
450
458
|
code: s.OPTION_0,
|
|
451
459
|
data: f.read(t, e)
|
|
@@ -458,56 +466,56 @@ const E = new RegExp(`^${`(?:${b}\\.){3}${b}`}$`);
|
|
|
458
466
|
|
|
459
467
|
const A = withRDLength({
|
|
460
468
|
bytes: t => Math.ceil((t.sourcePrefixLength || 0) / 8) + 4,
|
|
461
|
-
write(t, e,
|
|
462
|
-
const
|
|
463
|
-
const s =
|
|
464
|
-
const a =
|
|
465
|
-
const i = Math.ceil(
|
|
469
|
+
write(t, e, r) {
|
|
470
|
+
const n = r.sourcePrefixLength || 0;
|
|
471
|
+
const s = r.scopePrefixLength || 0;
|
|
472
|
+
const a = r.family || (E.test(r.ip) ? w.v4 : w.v6);
|
|
473
|
+
const i = Math.ceil(n / 8);
|
|
466
474
|
t.setUint16(e, a);
|
|
467
|
-
t.setUint8(e + 2,
|
|
475
|
+
t.setUint8(e + 2, n);
|
|
468
476
|
t.setUint8(e + 3, s);
|
|
469
477
|
e += 4;
|
|
470
478
|
const o = ((t, e) => {
|
|
471
|
-
const
|
|
472
|
-
const
|
|
473
|
-
return new Uint8Array(
|
|
474
|
-
})(a ===
|
|
475
|
-
for (let
|
|
476
|
-
t.setUint8(e++, o[
|
|
479
|
+
const r = new ArrayBuffer(t.bytes(e));
|
|
480
|
+
const n = t.write(new DataView(r), 0, e);
|
|
481
|
+
return new Uint8Array(r, 0, n);
|
|
482
|
+
})(a === w.v4 ? l : y, r.ip);
|
|
483
|
+
for (let r = 0; r < i; r++) {
|
|
484
|
+
t.setUint8(e++, o[r]);
|
|
477
485
|
}
|
|
478
486
|
return e;
|
|
479
487
|
},
|
|
480
488
|
read(t, e) {
|
|
481
|
-
const
|
|
482
|
-
const
|
|
489
|
+
const r = t.getUint16(e.offset);
|
|
490
|
+
const n = t.getUint8(e.offset + 2);
|
|
483
491
|
const a = t.getUint8(e.offset + 3);
|
|
484
492
|
advance(e, 4);
|
|
485
493
|
return {
|
|
486
494
|
code: s.CLIENT_SUBNET,
|
|
487
|
-
family:
|
|
488
|
-
sourcePrefixLength:
|
|
495
|
+
family: r,
|
|
496
|
+
sourcePrefixLength: n,
|
|
489
497
|
scopePrefixLength: a,
|
|
490
|
-
ip:
|
|
498
|
+
ip: r === w.v4 ? l.read(t, e) : y.read(t, e)
|
|
491
499
|
};
|
|
492
500
|
}
|
|
493
501
|
});
|
|
494
502
|
|
|
495
|
-
const
|
|
503
|
+
const N = withRDLength({
|
|
496
504
|
bytes: t => t.timeout ? 2 : 0,
|
|
497
|
-
write(t, e,
|
|
498
|
-
if (
|
|
499
|
-
t.setUint16(e,
|
|
505
|
+
write(t, e, r) {
|
|
506
|
+
if (r.timeout) {
|
|
507
|
+
t.setUint16(e, r.timeout);
|
|
500
508
|
e += 2;
|
|
501
509
|
}
|
|
502
510
|
return e;
|
|
503
511
|
},
|
|
504
512
|
read(t, e) {
|
|
505
513
|
if (e.length) {
|
|
506
|
-
const
|
|
514
|
+
const r = t.getUint16(e.offset);
|
|
507
515
|
advance(e, 2);
|
|
508
516
|
return {
|
|
509
517
|
code: s.TCP_KEEPALIVE,
|
|
510
|
-
timeout:
|
|
518
|
+
timeout: r
|
|
511
519
|
};
|
|
512
520
|
} else {
|
|
513
521
|
return {
|
|
@@ -518,32 +526,32 @@ const S = withRDLength({
|
|
|
518
526
|
}
|
|
519
527
|
});
|
|
520
528
|
|
|
521
|
-
const
|
|
529
|
+
const S = withRDLength({
|
|
522
530
|
bytes: t => t.length || 0,
|
|
523
|
-
write: (t, e,
|
|
531
|
+
write: (t, e, r) => e + (r.length || 0),
|
|
524
532
|
read(t, e) {
|
|
525
|
-
const {length:
|
|
526
|
-
advance(e,
|
|
533
|
+
const {length: r} = e;
|
|
534
|
+
advance(e, r);
|
|
527
535
|
return {
|
|
528
536
|
code: s.PADDING,
|
|
529
|
-
length:
|
|
537
|
+
length: r
|
|
530
538
|
};
|
|
531
539
|
}
|
|
532
540
|
});
|
|
533
541
|
|
|
534
542
|
const T = withRDLength({
|
|
535
543
|
bytes: t => 2 * t.tags.length,
|
|
536
|
-
write(t, e,
|
|
537
|
-
for (let
|
|
538
|
-
t.setUint16(e,
|
|
544
|
+
write(t, e, r) {
|
|
545
|
+
for (let n = 0; n < r.tags.length; n++) {
|
|
546
|
+
t.setUint16(e, r.tags[n]);
|
|
539
547
|
e += 2;
|
|
540
548
|
}
|
|
541
549
|
return e;
|
|
542
550
|
},
|
|
543
551
|
read(t, e) {
|
|
544
|
-
const {offset:
|
|
552
|
+
const {offset: r, length: n} = e;
|
|
545
553
|
const a = [];
|
|
546
|
-
while (e.offset -
|
|
554
|
+
while (e.offset - r < n) {
|
|
547
555
|
a.push(t.getUint16(e.offset));
|
|
548
556
|
advance(e, 2);
|
|
549
557
|
}
|
|
@@ -559,62 +567,62 @@ const isUnknownOpt = t => !!t.data;
|
|
|
559
567
|
const I = {
|
|
560
568
|
bytes(t) {
|
|
561
569
|
if (isUnknownOpt(t)) {
|
|
562
|
-
return
|
|
570
|
+
return p.bytes(t) + 2;
|
|
563
571
|
}
|
|
564
572
|
switch (t.code) {
|
|
565
573
|
case s.CLIENT_SUBNET:
|
|
566
574
|
return A.bytes(t) + 2;
|
|
567
575
|
|
|
568
576
|
case s.TCP_KEEPALIVE:
|
|
569
|
-
return
|
|
577
|
+
return N.bytes(t) + 2;
|
|
570
578
|
|
|
571
579
|
case s.PADDING:
|
|
572
|
-
return
|
|
580
|
+
return S.bytes(t) + 2;
|
|
573
581
|
|
|
574
582
|
case s.KEY_TAG:
|
|
575
583
|
return T.bytes(t) + 2;
|
|
576
584
|
}
|
|
577
585
|
},
|
|
578
|
-
write(t, e,
|
|
579
|
-
t.setUint16(e,
|
|
586
|
+
write(t, e, r) {
|
|
587
|
+
t.setUint16(e, r.code);
|
|
580
588
|
e += 2;
|
|
581
|
-
if (isUnknownOpt(
|
|
582
|
-
return
|
|
589
|
+
if (isUnknownOpt(r)) {
|
|
590
|
+
return p.write(t, e, r);
|
|
583
591
|
}
|
|
584
|
-
switch (
|
|
592
|
+
switch (r.code) {
|
|
585
593
|
case s.CLIENT_SUBNET:
|
|
586
|
-
return A.write(t, e,
|
|
594
|
+
return A.write(t, e, r);
|
|
587
595
|
|
|
588
596
|
case s.TCP_KEEPALIVE:
|
|
589
|
-
return
|
|
597
|
+
return N.write(t, e, r);
|
|
590
598
|
|
|
591
599
|
case s.PADDING:
|
|
592
|
-
return
|
|
600
|
+
return S.write(t, e, r);
|
|
593
601
|
|
|
594
602
|
case s.KEY_TAG:
|
|
595
|
-
return T.write(t, e,
|
|
603
|
+
return T.write(t, e, r);
|
|
596
604
|
}
|
|
597
605
|
},
|
|
598
606
|
read(t, e) {
|
|
599
|
-
const
|
|
607
|
+
const r = t.getUint16(e.offset);
|
|
600
608
|
advance(e, 2);
|
|
601
|
-
switch (
|
|
609
|
+
switch (r) {
|
|
602
610
|
case s.CLIENT_SUBNET:
|
|
603
611
|
return A.read(t, e);
|
|
604
612
|
|
|
605
613
|
case s.TCP_KEEPALIVE:
|
|
606
|
-
return
|
|
614
|
+
return N.read(t, e);
|
|
607
615
|
|
|
608
616
|
case s.PADDING:
|
|
609
|
-
return
|
|
617
|
+
return S.read(t, e);
|
|
610
618
|
|
|
611
619
|
case s.KEY_TAG:
|
|
612
620
|
return T.read(t, e);
|
|
613
621
|
|
|
614
622
|
default:
|
|
615
|
-
const
|
|
616
|
-
|
|
617
|
-
return
|
|
623
|
+
const n = p.read(t, e);
|
|
624
|
+
n.code = r;
|
|
625
|
+
return n;
|
|
618
626
|
}
|
|
619
627
|
}
|
|
620
628
|
};
|
|
@@ -644,7 +652,7 @@ const O = withRDLength(array(y));
|
|
|
644
652
|
|
|
645
653
|
const L = withRDLength(f);
|
|
646
654
|
|
|
647
|
-
const
|
|
655
|
+
const v = {
|
|
648
656
|
bytes(t) {
|
|
649
657
|
let e = 0;
|
|
650
658
|
if (null != t.mandatory) {
|
|
@@ -676,47 +684,47 @@ const x = {
|
|
|
676
684
|
}
|
|
677
685
|
return e;
|
|
678
686
|
},
|
|
679
|
-
write(t, e,
|
|
680
|
-
if (null !=
|
|
687
|
+
write(t, e, r) {
|
|
688
|
+
if (null != r.mandatory) {
|
|
681
689
|
t.setUint16(e, P.Mandatory);
|
|
682
|
-
e = R.write(t, e + 2,
|
|
690
|
+
e = R.write(t, e + 2, r.mandatory);
|
|
683
691
|
}
|
|
684
|
-
if (null !=
|
|
692
|
+
if (null != r.alpn) {
|
|
685
693
|
t.setUint16(e, P.Alpn);
|
|
686
|
-
e = D.write(t, e + 2,
|
|
694
|
+
e = D.write(t, e + 2, r.alpn);
|
|
687
695
|
}
|
|
688
|
-
if (
|
|
696
|
+
if (r["no-default-alpn"]) {
|
|
689
697
|
t.setUint16(e, P.NoDefaultAlpn);
|
|
690
698
|
e += 4;
|
|
691
699
|
}
|
|
692
|
-
if (null !=
|
|
700
|
+
if (null != r.port) {
|
|
693
701
|
t.setUint16(e, P.Port);
|
|
694
|
-
e = C.write(t, e + 2,
|
|
702
|
+
e = C.write(t, e + 2, r.port);
|
|
695
703
|
}
|
|
696
|
-
if (
|
|
704
|
+
if (r.ipv4hint) {
|
|
697
705
|
t.setUint16(e, P.Ipv4Hint);
|
|
698
|
-
e = m.write(t, e + 2,
|
|
706
|
+
e = m.write(t, e + 2, r.ipv4hint);
|
|
699
707
|
}
|
|
700
|
-
if (
|
|
708
|
+
if (r.ipv6hint) {
|
|
701
709
|
t.setUint16(e, P.Ipv6Hint);
|
|
702
|
-
e = O.write(t, e + 2,
|
|
710
|
+
e = O.write(t, e + 2, r.ipv6hint);
|
|
703
711
|
}
|
|
704
|
-
if (
|
|
712
|
+
if (r.echconfig) {
|
|
705
713
|
t.setUint16(e, P.EchConfig);
|
|
706
|
-
e = L.write(t, e + 2,
|
|
714
|
+
e = L.write(t, e + 2, r.echconfig);
|
|
707
715
|
}
|
|
708
|
-
if (
|
|
716
|
+
if (r.dohpath) {
|
|
709
717
|
t.setUint16(e, P.DohPath);
|
|
710
|
-
e = L.write(t, e + 2,
|
|
718
|
+
e = L.write(t, e + 2, r.dohpath);
|
|
711
719
|
}
|
|
712
|
-
if (
|
|
720
|
+
if (r.odoh) {
|
|
713
721
|
t.setUint16(e, P.Odoh);
|
|
714
|
-
e = L.write(t, e + 2,
|
|
722
|
+
e = L.write(t, e + 2, r.odoh);
|
|
715
723
|
}
|
|
716
724
|
return e;
|
|
717
725
|
},
|
|
718
726
|
read(t, e) {
|
|
719
|
-
const {length:
|
|
727
|
+
const {length: r, offset: n} = e;
|
|
720
728
|
const s = {
|
|
721
729
|
mandatory: void 0,
|
|
722
730
|
alpn: void 0,
|
|
@@ -728,10 +736,10 @@ const x = {
|
|
|
728
736
|
dohpath: void 0,
|
|
729
737
|
odoh: void 0
|
|
730
738
|
};
|
|
731
|
-
while (e.offset -
|
|
732
|
-
const
|
|
739
|
+
while (e.offset - n < r) {
|
|
740
|
+
const r = t.getUint16(e.offset);
|
|
733
741
|
advance(e, 2);
|
|
734
|
-
switch (
|
|
742
|
+
switch (r) {
|
|
735
743
|
case P.Mandatory:
|
|
736
744
|
s.mandatory = R.read(t, e);
|
|
737
745
|
break;
|
|
@@ -777,45 +785,45 @@ const x = {
|
|
|
777
785
|
}
|
|
778
786
|
};
|
|
779
787
|
|
|
780
|
-
const
|
|
788
|
+
const x = withRDLength(f);
|
|
781
789
|
|
|
782
790
|
const H = withRDLength(c);
|
|
783
791
|
|
|
784
792
|
const _ = withRDLength(l);
|
|
785
793
|
|
|
786
|
-
const
|
|
794
|
+
const M = withRDLength(y);
|
|
787
795
|
|
|
788
|
-
const
|
|
796
|
+
const V = withRDLength(array(d));
|
|
789
797
|
|
|
790
|
-
const
|
|
798
|
+
const Y = withRDLength({
|
|
791
799
|
bytes: t => c.bytes(t.target) + 6,
|
|
792
|
-
write(t, e,
|
|
793
|
-
t.setUint16(e,
|
|
794
|
-
t.setUint16(e + 2,
|
|
795
|
-
t.setUint16(e + 4,
|
|
796
|
-
return c.write(t, e + 6,
|
|
800
|
+
write(t, e, r) {
|
|
801
|
+
t.setUint16(e, r.priority || 0);
|
|
802
|
+
t.setUint16(e + 2, r.weight || 0);
|
|
803
|
+
t.setUint16(e + 4, r.port || 0);
|
|
804
|
+
return c.write(t, e + 6, r.target);
|
|
797
805
|
},
|
|
798
806
|
read(t, e) {
|
|
799
|
-
const
|
|
807
|
+
const r = {
|
|
800
808
|
priority: 0,
|
|
801
809
|
weight: 0,
|
|
802
810
|
port: 0,
|
|
803
811
|
target: ""
|
|
804
812
|
};
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
813
|
+
r.priority = t.getUint16(e.offset);
|
|
814
|
+
r.weight = t.getUint16(e.offset + 2);
|
|
815
|
+
r.port = t.getUint16(e.offset + 4);
|
|
808
816
|
advance(e, 6);
|
|
809
|
-
|
|
810
|
-
return
|
|
817
|
+
r.target = c.read(t, e);
|
|
818
|
+
return r;
|
|
811
819
|
}
|
|
812
820
|
});
|
|
813
821
|
|
|
814
|
-
const
|
|
822
|
+
const K = withRDLength({
|
|
815
823
|
bytes: t => d.bytes(t.cpu) + d.bytes(t.os),
|
|
816
|
-
write(t, e,
|
|
817
|
-
e = d.write(t, e,
|
|
818
|
-
return e = d.write(t, e,
|
|
824
|
+
write(t, e, r) {
|
|
825
|
+
e = d.write(t, e, r.cpu);
|
|
826
|
+
return e = d.write(t, e, r.os);
|
|
819
827
|
},
|
|
820
828
|
read: (t, e) => ({
|
|
821
829
|
cpu: d.read(t, e),
|
|
@@ -837,41 +845,41 @@ const toCaaTag = t => {
|
|
|
837
845
|
|
|
838
846
|
const X = withRDLength({
|
|
839
847
|
bytes: t => d.bytes(t.tag) + f.bytes(t.value) + 1,
|
|
840
|
-
write(t, e,
|
|
841
|
-
let
|
|
842
|
-
if (
|
|
843
|
-
|
|
848
|
+
write(t, e, r) {
|
|
849
|
+
let n = r.flags || 0;
|
|
850
|
+
if (r.issuerCritical) {
|
|
851
|
+
n = 128;
|
|
844
852
|
}
|
|
845
|
-
t.setUint8(e,
|
|
846
|
-
e = d.write(t, e + 1,
|
|
847
|
-
return e = f.write(t, e,
|
|
853
|
+
t.setUint8(e, n);
|
|
854
|
+
e = d.write(t, e + 1, r.tag);
|
|
855
|
+
return e = f.write(t, e, r.value);
|
|
848
856
|
},
|
|
849
857
|
read(t, e) {
|
|
850
|
-
const
|
|
858
|
+
const r = t.getUint8(e.offset);
|
|
851
859
|
advance(e, 1);
|
|
852
860
|
return {
|
|
853
|
-
flags:
|
|
861
|
+
flags: r,
|
|
854
862
|
tag: toCaaTag(d.read(t, e)),
|
|
855
863
|
value: f.read(t, e),
|
|
856
|
-
issuerCritical: !!(128 &
|
|
864
|
+
issuerCritical: !!(128 & r)
|
|
857
865
|
};
|
|
858
866
|
}
|
|
859
867
|
});
|
|
860
868
|
|
|
861
869
|
const F = withRDLength({
|
|
862
870
|
bytes: t => c.bytes(t.mname) + c.bytes(t.rname) + 20,
|
|
863
|
-
write(t, e,
|
|
864
|
-
e = c.write(t, e,
|
|
865
|
-
e = c.write(t, e,
|
|
866
|
-
t.setUint32(e,
|
|
867
|
-
t.setUint32(e + 4,
|
|
868
|
-
t.setUint32(e + 8,
|
|
869
|
-
t.setUint32(e + 12,
|
|
870
|
-
t.setUint32(e + 16,
|
|
871
|
+
write(t, e, r) {
|
|
872
|
+
e = c.write(t, e, r.mname);
|
|
873
|
+
e = c.write(t, e, r.rname);
|
|
874
|
+
t.setUint32(e, r.serial || 0);
|
|
875
|
+
t.setUint32(e + 4, r.refresh || 0);
|
|
876
|
+
t.setUint32(e + 8, r.retry || 0);
|
|
877
|
+
t.setUint32(e + 12, r.expire || 0);
|
|
878
|
+
t.setUint32(e + 16, r.minimum || 0);
|
|
871
879
|
return e + 20;
|
|
872
880
|
},
|
|
873
881
|
read(t, e) {
|
|
874
|
-
const
|
|
882
|
+
const r = {
|
|
875
883
|
mname: c.read(t, e),
|
|
876
884
|
rname: c.read(t, e),
|
|
877
885
|
serial: t.getUint32(e.offset),
|
|
@@ -882,42 +890,42 @@ const F = withRDLength({
|
|
|
882
890
|
};
|
|
883
891
|
e.offset += 20;
|
|
884
892
|
e.length -= 20;
|
|
885
|
-
return
|
|
893
|
+
return r;
|
|
886
894
|
}
|
|
887
895
|
});
|
|
888
896
|
|
|
889
897
|
const G = withRDLength({
|
|
890
898
|
bytes: t => c.bytes(t.exchange) + 2,
|
|
891
|
-
write(t, e,
|
|
892
|
-
t.setUint16(e,
|
|
893
|
-
return c.write(t, e + 2,
|
|
899
|
+
write(t, e, r) {
|
|
900
|
+
t.setUint16(e, r.preference || 0);
|
|
901
|
+
return c.write(t, e + 2, r.exchange);
|
|
894
902
|
},
|
|
895
903
|
read(t, e) {
|
|
896
|
-
const
|
|
904
|
+
const r = {
|
|
897
905
|
preference: t.getUint16(e.offset),
|
|
898
906
|
exchange: ""
|
|
899
907
|
};
|
|
900
908
|
advance(e, 2);
|
|
901
|
-
|
|
902
|
-
return
|
|
909
|
+
r.exchange = c.read(t, e);
|
|
910
|
+
return r;
|
|
903
911
|
}
|
|
904
912
|
});
|
|
905
913
|
|
|
906
914
|
const B = withRDLength({
|
|
907
915
|
bytes: t => f.bytes(t.key) + 4,
|
|
908
|
-
write(t, e,
|
|
909
|
-
t.setUint16(e,
|
|
916
|
+
write(t, e, r) {
|
|
917
|
+
t.setUint16(e, r.flags);
|
|
910
918
|
t.setUint8(e + 2, 3);
|
|
911
|
-
t.setUint8(e + 3,
|
|
912
|
-
return f.write(t, e + 4,
|
|
919
|
+
t.setUint8(e + 3, r.algorithm);
|
|
920
|
+
return f.write(t, e + 4, r.key);
|
|
913
921
|
},
|
|
914
922
|
read(t, e) {
|
|
915
|
-
const
|
|
916
|
-
const
|
|
923
|
+
const r = t.getUint16(e.offset);
|
|
924
|
+
const n = t.getUint8(e.offset + 3);
|
|
917
925
|
advance(e, 4);
|
|
918
926
|
return {
|
|
919
|
-
flags:
|
|
920
|
-
algorithm:
|
|
927
|
+
flags: r,
|
|
928
|
+
algorithm: n,
|
|
921
929
|
key: f.read(t, e)
|
|
922
930
|
};
|
|
923
931
|
}
|
|
@@ -925,20 +933,20 @@ const B = withRDLength({
|
|
|
925
933
|
|
|
926
934
|
const k = withRDLength({
|
|
927
935
|
bytes: t => 18 + c.bytes(t.signersName) + f.bytes(t.signature),
|
|
928
|
-
write(t, e,
|
|
929
|
-
t.setUint16(e,
|
|
930
|
-
t.setUint8(e + 2,
|
|
931
|
-
t.setUint8(e + 3,
|
|
932
|
-
t.setUint32(e + 4,
|
|
933
|
-
t.setUint32(e + 8,
|
|
934
|
-
t.setUint32(e + 12,
|
|
935
|
-
t.setUint16(e + 16,
|
|
936
|
-
e = c.write(t, e + 18,
|
|
937
|
-
return e = f.write(t, e,
|
|
936
|
+
write(t, e, r) {
|
|
937
|
+
t.setUint16(e, r.typeCovered);
|
|
938
|
+
t.setUint8(e + 2, r.algorithm);
|
|
939
|
+
t.setUint8(e + 3, r.labels);
|
|
940
|
+
t.setUint32(e + 4, r.originalTTL);
|
|
941
|
+
t.setUint32(e + 8, r.expiration);
|
|
942
|
+
t.setUint32(e + 12, r.inception);
|
|
943
|
+
t.setUint16(e + 16, r.keyTag);
|
|
944
|
+
e = c.write(t, e + 18, r.signersName);
|
|
945
|
+
return e = f.write(t, e, r.signature);
|
|
938
946
|
},
|
|
939
947
|
read(t, e) {
|
|
940
|
-
const
|
|
941
|
-
const
|
|
948
|
+
const r = t.getUint16(e.offset);
|
|
949
|
+
const n = t.getUint8(e.offset + 2);
|
|
942
950
|
const s = t.getUint8(e.offset + 3);
|
|
943
951
|
const a = t.getUint32(e.offset + 4);
|
|
944
952
|
const i = t.getUint32(e.offset + 8);
|
|
@@ -946,8 +954,8 @@ const k = withRDLength({
|
|
|
946
954
|
const d = t.getUint16(e.offset + 16);
|
|
947
955
|
advance(e, 18);
|
|
948
956
|
return {
|
|
949
|
-
typeCovered:
|
|
950
|
-
algorithm:
|
|
957
|
+
typeCovered: r,
|
|
958
|
+
algorithm: n,
|
|
951
959
|
labels: s,
|
|
952
960
|
originalTTL: a,
|
|
953
961
|
expiration: i,
|
|
@@ -961,9 +969,9 @@ const k = withRDLength({
|
|
|
961
969
|
|
|
962
970
|
const $ = withRDLength({
|
|
963
971
|
bytes: t => c.bytes(t.mbox) + c.bytes(t.txt),
|
|
964
|
-
write(t, e,
|
|
965
|
-
e = c.write(t, e,
|
|
966
|
-
return e = c.write(t, e,
|
|
972
|
+
write(t, e, r) {
|
|
973
|
+
e = c.write(t, e, r.mbox);
|
|
974
|
+
return e = c.write(t, e, r.txt);
|
|
967
975
|
},
|
|
968
976
|
read: (t, e) => ({
|
|
969
977
|
mbox: c.read(t, e),
|
|
@@ -973,9 +981,9 @@ const $ = withRDLength({
|
|
|
973
981
|
|
|
974
982
|
const q = withRDLength({
|
|
975
983
|
bytes: t => c.bytes(t.nextDomain) + u.bytes(t.rrtypes),
|
|
976
|
-
write(t, e,
|
|
977
|
-
e = c.write(t, e,
|
|
978
|
-
return e = u.write(t, e,
|
|
984
|
+
write(t, e, r) {
|
|
985
|
+
e = c.write(t, e, r.nextDomain);
|
|
986
|
+
return e = u.write(t, e, r.rrtypes);
|
|
979
987
|
},
|
|
980
988
|
read: (t, e) => ({
|
|
981
989
|
nextDomain: c.read(t, e),
|
|
@@ -985,22 +993,22 @@ const q = withRDLength({
|
|
|
985
993
|
|
|
986
994
|
const Q = withRDLength({
|
|
987
995
|
bytes: t => d.bytes(t.salt) + d.bytes(t.nextDomain) + u.bytes(t.rrtypes) + 4,
|
|
988
|
-
write(t, e,
|
|
989
|
-
t.setUint8(e,
|
|
990
|
-
t.setUint8(e + 1,
|
|
991
|
-
t.setUint16(e + 2,
|
|
992
|
-
e = d.write(t, e + 4,
|
|
993
|
-
e = d.write(t, e,
|
|
994
|
-
return e = u.write(t, e,
|
|
996
|
+
write(t, e, r) {
|
|
997
|
+
t.setUint8(e, r.algorithm);
|
|
998
|
+
t.setUint8(e + 1, r.flags);
|
|
999
|
+
t.setUint16(e + 2, r.iterations);
|
|
1000
|
+
e = d.write(t, e + 4, r.salt);
|
|
1001
|
+
e = d.write(t, e, r.nextDomain);
|
|
1002
|
+
return e = u.write(t, e, r.rrtypes);
|
|
995
1003
|
},
|
|
996
1004
|
read(t, e) {
|
|
997
|
-
const
|
|
998
|
-
const
|
|
1005
|
+
const r = t.getUint8(e.offset);
|
|
1006
|
+
const n = t.getUint8(e.offset + 1);
|
|
999
1007
|
const s = t.getUint16(e.offset + 2);
|
|
1000
1008
|
advance(e, 4);
|
|
1001
1009
|
return {
|
|
1002
|
-
algorithm:
|
|
1003
|
-
flags:
|
|
1010
|
+
algorithm: r,
|
|
1011
|
+
flags: n,
|
|
1004
1012
|
iterations: s,
|
|
1005
1013
|
salt: d.read(t, e),
|
|
1006
1014
|
nextDomain: d.read(t, e),
|
|
@@ -1011,18 +1019,18 @@ const Q = withRDLength({
|
|
|
1011
1019
|
|
|
1012
1020
|
const j = withRDLength({
|
|
1013
1021
|
bytes: t => f.bytes(t.fingerprint) + 2,
|
|
1014
|
-
write(t, e,
|
|
1015
|
-
t.setUint8(e,
|
|
1016
|
-
t.setUint8(e + 1,
|
|
1017
|
-
return f.write(t, e + 2,
|
|
1022
|
+
write(t, e, r) {
|
|
1023
|
+
t.setUint8(e, r.algorithm);
|
|
1024
|
+
t.setUint8(e + 1, r.hash);
|
|
1025
|
+
return f.write(t, e + 2, r.fingerprint);
|
|
1018
1026
|
},
|
|
1019
1027
|
read(t, e) {
|
|
1020
|
-
const
|
|
1021
|
-
const
|
|
1028
|
+
const r = t.getUint8(e.offset);
|
|
1029
|
+
const n = t.getUint8(e.offset + 1);
|
|
1022
1030
|
advance(e, 2);
|
|
1023
1031
|
return {
|
|
1024
|
-
algorithm:
|
|
1025
|
-
hash:
|
|
1032
|
+
algorithm: r,
|
|
1033
|
+
hash: n,
|
|
1026
1034
|
fingerprint: f.read(t, e)
|
|
1027
1035
|
};
|
|
1028
1036
|
}
|
|
@@ -1030,20 +1038,20 @@ const j = withRDLength({
|
|
|
1030
1038
|
|
|
1031
1039
|
const z = withRDLength({
|
|
1032
1040
|
bytes: t => f.bytes(t.digest) + 4,
|
|
1033
|
-
write(t, e,
|
|
1034
|
-
t.setUint16(e,
|
|
1035
|
-
t.setUint8(e + 2,
|
|
1036
|
-
t.setUint8(e + 3,
|
|
1037
|
-
return e = f.write(t, e + 4,
|
|
1041
|
+
write(t, e, r) {
|
|
1042
|
+
t.setUint16(e, r.keyTag);
|
|
1043
|
+
t.setUint8(e + 2, r.algorithm);
|
|
1044
|
+
t.setUint8(e + 3, r.digestType);
|
|
1045
|
+
return e = f.write(t, e + 4, r.digest);
|
|
1038
1046
|
},
|
|
1039
1047
|
read(t, e) {
|
|
1040
|
-
const
|
|
1041
|
-
const
|
|
1048
|
+
const r = t.getUint16(e.offset);
|
|
1049
|
+
const n = t.getUint8(e.offset + 2);
|
|
1042
1050
|
const s = t.getUint8(e.offset + 3);
|
|
1043
1051
|
advance(e, 4);
|
|
1044
1052
|
return {
|
|
1045
|
-
keyTag:
|
|
1046
|
-
algorithm:
|
|
1053
|
+
keyTag: r,
|
|
1054
|
+
algorithm: n,
|
|
1047
1055
|
digestType: s,
|
|
1048
1056
|
digest: f.read(t, e)
|
|
1049
1057
|
};
|
|
@@ -1052,21 +1060,21 @@ const z = withRDLength({
|
|
|
1052
1060
|
|
|
1053
1061
|
const W = withRDLength({
|
|
1054
1062
|
bytes: t => d.bytes(t.flags) + d.bytes(t.services) + d.bytes(t.regexp) + c.bytes(t.replacement) + 4,
|
|
1055
|
-
write(t, e,
|
|
1056
|
-
t.setUint16(e,
|
|
1057
|
-
t.setUint16(e + 2,
|
|
1058
|
-
e = d.write(t, e + 4,
|
|
1059
|
-
e = d.write(t, e,
|
|
1060
|
-
e = d.write(t, e,
|
|
1061
|
-
return e = c.write(t, e,
|
|
1063
|
+
write(t, e, r) {
|
|
1064
|
+
t.setUint16(e, r.order);
|
|
1065
|
+
t.setUint16(e + 2, r.preference);
|
|
1066
|
+
e = d.write(t, e + 4, r.flags);
|
|
1067
|
+
e = d.write(t, e, r.services);
|
|
1068
|
+
e = d.write(t, e, r.regexp);
|
|
1069
|
+
return e = c.write(t, e, r.replacement);
|
|
1062
1070
|
},
|
|
1063
1071
|
read(t, e) {
|
|
1064
|
-
const
|
|
1065
|
-
const
|
|
1072
|
+
const r = t.getUint16(e.offset);
|
|
1073
|
+
const n = t.getUint16(e.offset + 2);
|
|
1066
1074
|
advance(e, 4);
|
|
1067
1075
|
return {
|
|
1068
|
-
order:
|
|
1069
|
-
preference:
|
|
1076
|
+
order: r,
|
|
1077
|
+
preference: n,
|
|
1070
1078
|
flags: d.read(t, e),
|
|
1071
1079
|
services: d.read(t, e),
|
|
1072
1080
|
regexp: d.read(t, e),
|
|
@@ -1077,20 +1085,20 @@ const W = withRDLength({
|
|
|
1077
1085
|
|
|
1078
1086
|
const Z = withRDLength({
|
|
1079
1087
|
bytes: t => f.bytes(t.certificate) + 3,
|
|
1080
|
-
write(t, e,
|
|
1081
|
-
t.setUint8(e,
|
|
1082
|
-
t.setUint8(e + 1,
|
|
1083
|
-
t.setUint8(e + 2,
|
|
1084
|
-
return f.write(t, e + 3,
|
|
1088
|
+
write(t, e, r) {
|
|
1089
|
+
t.setUint8(e, r.usage);
|
|
1090
|
+
t.setUint8(e + 1, r.selector);
|
|
1091
|
+
t.setUint8(e + 2, r.matchingType);
|
|
1092
|
+
return f.write(t, e + 3, r.certificate);
|
|
1085
1093
|
},
|
|
1086
1094
|
read(t, e) {
|
|
1087
|
-
const
|
|
1088
|
-
const
|
|
1095
|
+
const r = t.getUint8(e.offset);
|
|
1096
|
+
const n = t.getUint8(e.offset + 1);
|
|
1089
1097
|
const s = t.getUint8(e.offset + 2);
|
|
1090
1098
|
advance(e, 3);
|
|
1091
1099
|
return {
|
|
1092
|
-
usage:
|
|
1093
|
-
selector:
|
|
1100
|
+
usage: r,
|
|
1101
|
+
selector: n,
|
|
1094
1102
|
matchingType: s,
|
|
1095
1103
|
certificate: f.read(t, e)
|
|
1096
1104
|
};
|
|
@@ -1098,19 +1106,19 @@ const Z = withRDLength({
|
|
|
1098
1106
|
});
|
|
1099
1107
|
|
|
1100
1108
|
const J = withRDLength({
|
|
1101
|
-
bytes: t => c.bytes(t.name) +
|
|
1102
|
-
write(t, e,
|
|
1103
|
-
t.setUint16(e,
|
|
1104
|
-
e = c.write(t, e + 2,
|
|
1105
|
-
return e =
|
|
1109
|
+
bytes: t => c.bytes(t.name) + v.bytes(t.params) + 2,
|
|
1110
|
+
write(t, e, r) {
|
|
1111
|
+
t.setUint16(e, r.priority || 0);
|
|
1112
|
+
e = c.write(t, e + 2, r.name);
|
|
1113
|
+
return e = v.write(t, e, r.params);
|
|
1106
1114
|
},
|
|
1107
1115
|
read(t, e) {
|
|
1108
|
-
const
|
|
1116
|
+
const r = t.getUint16(e.offset);
|
|
1109
1117
|
advance(e, 2);
|
|
1110
1118
|
return {
|
|
1111
1119
|
name: c.read(t, e),
|
|
1112
|
-
priority:
|
|
1113
|
-
params:
|
|
1120
|
+
priority: r,
|
|
1121
|
+
params: v.read(t, e)
|
|
1114
1122
|
};
|
|
1115
1123
|
}
|
|
1116
1124
|
});
|
|
@@ -1119,176 +1127,186 @@ const tt = withRDLength(array(I));
|
|
|
1119
1127
|
|
|
1120
1128
|
const et = 32768;
|
|
1121
1129
|
|
|
1122
|
-
const
|
|
1130
|
+
const rt = {
|
|
1123
1131
|
bytes(t) {
|
|
1124
|
-
const
|
|
1132
|
+
const r = 8 + c.bytes(t.type === e.OPT ? "." : t.name);
|
|
1125
1133
|
switch (t.type) {
|
|
1126
1134
|
case e.A:
|
|
1127
|
-
return
|
|
1135
|
+
return r + _.bytes(t.data);
|
|
1128
1136
|
|
|
1129
1137
|
case e.NS:
|
|
1130
|
-
return
|
|
1138
|
+
return r + H.bytes(t.data);
|
|
1131
1139
|
|
|
1132
1140
|
case e.SOA:
|
|
1133
|
-
return
|
|
1141
|
+
return r + F.bytes(t.data);
|
|
1134
1142
|
|
|
1135
1143
|
case e.HINFO:
|
|
1136
|
-
return
|
|
1144
|
+
return r + K.bytes(t.data);
|
|
1137
1145
|
|
|
1138
1146
|
case e.MX:
|
|
1139
|
-
return
|
|
1147
|
+
return r + G.bytes(t.data);
|
|
1140
1148
|
|
|
1141
1149
|
case e.TXT:
|
|
1142
|
-
return
|
|
1150
|
+
return r + V.bytes(t.data);
|
|
1143
1151
|
|
|
1144
1152
|
case e.RP:
|
|
1145
|
-
return
|
|
1153
|
+
return r + $.bytes(t.data);
|
|
1146
1154
|
|
|
1147
1155
|
case e.AAAA:
|
|
1148
|
-
return
|
|
1156
|
+
return r + M.bytes(t.data);
|
|
1149
1157
|
|
|
1150
1158
|
case e.SRV:
|
|
1151
|
-
return
|
|
1159
|
+
return r + Y.bytes(t.data);
|
|
1152
1160
|
|
|
1153
1161
|
case e.NAPTR:
|
|
1154
|
-
return
|
|
1162
|
+
return r + W.bytes(t.data);
|
|
1155
1163
|
|
|
1156
1164
|
case e.OPT:
|
|
1157
|
-
return
|
|
1165
|
+
return r + tt.bytes(t.data);
|
|
1158
1166
|
|
|
1159
1167
|
case e.DS:
|
|
1160
|
-
return
|
|
1168
|
+
return r + z.bytes(t.data);
|
|
1161
1169
|
|
|
1162
1170
|
case e.SSHFP:
|
|
1163
|
-
return
|
|
1171
|
+
return r + j.bytes(t.data);
|
|
1164
1172
|
|
|
1165
1173
|
case e.RRSIG:
|
|
1166
|
-
return
|
|
1174
|
+
return r + k.bytes(t.data);
|
|
1167
1175
|
|
|
1168
1176
|
case e.NSEC:
|
|
1169
|
-
return
|
|
1177
|
+
return r + q.bytes(t.data);
|
|
1170
1178
|
|
|
1171
1179
|
case e.DNSKEY:
|
|
1172
|
-
return
|
|
1180
|
+
return r + B.bytes(t.data);
|
|
1173
1181
|
|
|
1174
1182
|
case e.NSEC3:
|
|
1175
|
-
return
|
|
1183
|
+
return r + Q.bytes(t.data);
|
|
1176
1184
|
|
|
1177
1185
|
case e.TLSA:
|
|
1178
|
-
return
|
|
1186
|
+
return r + Z.bytes(t.data);
|
|
1179
1187
|
|
|
1180
1188
|
case e.SVCB:
|
|
1181
1189
|
case e.HTTPS:
|
|
1182
|
-
return
|
|
1190
|
+
return r + J.bytes(t.data);
|
|
1183
1191
|
|
|
1184
1192
|
case e.CAA:
|
|
1185
|
-
return
|
|
1193
|
+
return r + X.bytes(t.data);
|
|
1194
|
+
|
|
1195
|
+
case e.PTR:
|
|
1196
|
+
case e.CNAME:
|
|
1197
|
+
case e.DNAME:
|
|
1198
|
+
return r + H.bytes(t.data);
|
|
1186
1199
|
|
|
1187
1200
|
default:
|
|
1188
|
-
return
|
|
1201
|
+
return r + x.bytes(t.data);
|
|
1189
1202
|
}
|
|
1190
1203
|
},
|
|
1191
|
-
write(t,
|
|
1192
|
-
if (
|
|
1193
|
-
|
|
1194
|
-
t.setUint16(
|
|
1195
|
-
t.setUint16(
|
|
1196
|
-
t.setUint8(
|
|
1197
|
-
t.setUint8(
|
|
1198
|
-
t.setUint16(
|
|
1199
|
-
return tt.write(t,
|
|
1200
|
-
}
|
|
1201
|
-
|
|
1202
|
-
t.setUint16(
|
|
1203
|
-
t.setUint16(
|
|
1204
|
-
t.setUint32(
|
|
1205
|
-
|
|
1206
|
-
switch (
|
|
1204
|
+
write(t, r, n) {
|
|
1205
|
+
if (n.type === e.OPT) {
|
|
1206
|
+
r = c.write(t, r, ".");
|
|
1207
|
+
t.setUint16(r, n.type);
|
|
1208
|
+
t.setUint16(r + 2, n.udpPayloadSize || 4096);
|
|
1209
|
+
t.setUint8(r + 4, n.extendedRcode || 0);
|
|
1210
|
+
t.setUint8(r + 5, n.ednsVersion || 0);
|
|
1211
|
+
t.setUint16(r + 6, n.flags || 0);
|
|
1212
|
+
return tt.write(t, r += 8, n.data);
|
|
1213
|
+
}
|
|
1214
|
+
r = c.write(t, r, n.name);
|
|
1215
|
+
t.setUint16(r, n.type);
|
|
1216
|
+
t.setUint16(r + 2, (n.class || 0) | (n.flush ? et : 0));
|
|
1217
|
+
t.setUint32(r + 4, n.ttl || 0);
|
|
1218
|
+
r += 8;
|
|
1219
|
+
switch (n.type) {
|
|
1207
1220
|
case e.A:
|
|
1208
|
-
return _.write(t,
|
|
1221
|
+
return _.write(t, r, n.data);
|
|
1209
1222
|
|
|
1210
1223
|
case e.NS:
|
|
1211
|
-
return H.write(t,
|
|
1224
|
+
return H.write(t, r, n.data);
|
|
1212
1225
|
|
|
1213
1226
|
case e.SOA:
|
|
1214
|
-
return F.write(t,
|
|
1227
|
+
return F.write(t, r, n.data);
|
|
1215
1228
|
|
|
1216
1229
|
case e.HINFO:
|
|
1217
|
-
return
|
|
1230
|
+
return K.write(t, r, n.data);
|
|
1218
1231
|
|
|
1219
1232
|
case e.MX:
|
|
1220
|
-
return G.write(t,
|
|
1233
|
+
return G.write(t, r, n.data);
|
|
1221
1234
|
|
|
1222
1235
|
case e.TXT:
|
|
1223
|
-
return
|
|
1236
|
+
return V.write(t, r, n.data);
|
|
1224
1237
|
|
|
1225
1238
|
case e.RP:
|
|
1226
|
-
return $.write(t,
|
|
1239
|
+
return $.write(t, r, n.data);
|
|
1227
1240
|
|
|
1228
1241
|
case e.AAAA:
|
|
1229
|
-
return
|
|
1242
|
+
return M.write(t, r, n.data);
|
|
1230
1243
|
|
|
1231
1244
|
case e.SRV:
|
|
1232
|
-
return
|
|
1245
|
+
return Y.write(t, r, n.data);
|
|
1233
1246
|
|
|
1234
1247
|
case e.NAPTR:
|
|
1235
|
-
return W.write(t,
|
|
1248
|
+
return W.write(t, r, n.data);
|
|
1236
1249
|
|
|
1237
1250
|
case e.DS:
|
|
1238
|
-
return z.write(t,
|
|
1251
|
+
return z.write(t, r, n.data);
|
|
1239
1252
|
|
|
1240
1253
|
case e.SSHFP:
|
|
1241
|
-
return j.write(t,
|
|
1254
|
+
return j.write(t, r, n.data);
|
|
1242
1255
|
|
|
1243
1256
|
case e.RRSIG:
|
|
1244
|
-
return k.write(t,
|
|
1257
|
+
return k.write(t, r, n.data);
|
|
1245
1258
|
|
|
1246
1259
|
case e.NSEC:
|
|
1247
|
-
return q.write(t,
|
|
1260
|
+
return q.write(t, r, n.data);
|
|
1248
1261
|
|
|
1249
1262
|
case e.DNSKEY:
|
|
1250
|
-
return B.write(t,
|
|
1263
|
+
return B.write(t, r, n.data);
|
|
1251
1264
|
|
|
1252
1265
|
case e.NSEC3:
|
|
1253
|
-
return Q.write(t,
|
|
1266
|
+
return Q.write(t, r, n.data);
|
|
1254
1267
|
|
|
1255
1268
|
case e.TLSA:
|
|
1256
|
-
return Z.write(t,
|
|
1269
|
+
return Z.write(t, r, n.data);
|
|
1257
1270
|
|
|
1258
1271
|
case e.SVCB:
|
|
1259
1272
|
case e.HTTPS:
|
|
1260
|
-
return J.write(t,
|
|
1273
|
+
return J.write(t, r, n.data);
|
|
1261
1274
|
|
|
1262
1275
|
case e.CAA:
|
|
1263
|
-
return X.write(t,
|
|
1276
|
+
return X.write(t, r, n.data);
|
|
1277
|
+
|
|
1278
|
+
case e.PTR:
|
|
1279
|
+
case e.CNAME:
|
|
1280
|
+
case e.DNAME:
|
|
1281
|
+
return H.write(t, r, n.data);
|
|
1264
1282
|
|
|
1265
1283
|
default:
|
|
1266
|
-
return
|
|
1284
|
+
return x.write(t, r, n.data);
|
|
1267
1285
|
}
|
|
1268
1286
|
},
|
|
1269
|
-
read(t,
|
|
1270
|
-
const
|
|
1271
|
-
const s = t.getUint16(
|
|
1287
|
+
read(t, r) {
|
|
1288
|
+
const n = c.read(t, r);
|
|
1289
|
+
const s = t.getUint16(r.offset);
|
|
1272
1290
|
if (s === e.OPT) {
|
|
1273
|
-
const e = t.getUint16(
|
|
1274
|
-
const
|
|
1275
|
-
const a = t.getUint8(
|
|
1276
|
-
const i = t.getUint16(
|
|
1277
|
-
advance(
|
|
1291
|
+
const e = t.getUint16(r.offset + 2) || 4096;
|
|
1292
|
+
const n = t.getUint8(r.offset + 4);
|
|
1293
|
+
const a = t.getUint8(r.offset + 5);
|
|
1294
|
+
const i = t.getUint16(r.offset + 6);
|
|
1295
|
+
advance(r, 8);
|
|
1278
1296
|
return {
|
|
1279
1297
|
type: s,
|
|
1280
1298
|
udpPayloadSize: e,
|
|
1281
|
-
extendedRcode:
|
|
1299
|
+
extendedRcode: n,
|
|
1282
1300
|
ednsVersion: a,
|
|
1283
1301
|
flags: i,
|
|
1284
|
-
data: tt.read(t,
|
|
1302
|
+
data: tt.read(t, r)
|
|
1285
1303
|
};
|
|
1286
1304
|
}
|
|
1287
|
-
const a = t.getUint16(
|
|
1288
|
-
const i = t.getUint32(
|
|
1289
|
-
advance(
|
|
1305
|
+
const a = t.getUint16(r.offset + 2);
|
|
1306
|
+
const i = t.getUint32(r.offset + 4);
|
|
1307
|
+
advance(r, 8);
|
|
1290
1308
|
const o = {
|
|
1291
|
-
name:
|
|
1309
|
+
name: n,
|
|
1292
1310
|
type: s,
|
|
1293
1311
|
class: -32769 & a,
|
|
1294
1312
|
flush: !!(a & et),
|
|
@@ -1297,208 +1315,214 @@ const nt = {
|
|
|
1297
1315
|
};
|
|
1298
1316
|
switch (o.type) {
|
|
1299
1317
|
case e.A:
|
|
1300
|
-
o.data = _.read(t,
|
|
1318
|
+
o.data = _.read(t, r);
|
|
1301
1319
|
return o;
|
|
1302
1320
|
|
|
1303
1321
|
case e.NS:
|
|
1304
|
-
o.data = H.read(t,
|
|
1322
|
+
o.data = H.read(t, r);
|
|
1305
1323
|
return o;
|
|
1306
1324
|
|
|
1307
1325
|
case e.SOA:
|
|
1308
|
-
o.data = F.read(t,
|
|
1326
|
+
o.data = F.read(t, r);
|
|
1309
1327
|
return o;
|
|
1310
1328
|
|
|
1311
1329
|
case e.HINFO:
|
|
1312
|
-
o.data =
|
|
1330
|
+
o.data = K.read(t, r);
|
|
1313
1331
|
return o;
|
|
1314
1332
|
|
|
1315
1333
|
case e.MX:
|
|
1316
|
-
o.data = G.read(t,
|
|
1334
|
+
o.data = G.read(t, r);
|
|
1317
1335
|
return o;
|
|
1318
1336
|
|
|
1319
1337
|
case e.TXT:
|
|
1320
|
-
o.data =
|
|
1338
|
+
o.data = V.read(t, r);
|
|
1321
1339
|
return o;
|
|
1322
1340
|
|
|
1323
1341
|
case e.RP:
|
|
1324
|
-
o.data = $.read(t,
|
|
1342
|
+
o.data = $.read(t, r);
|
|
1325
1343
|
return o;
|
|
1326
1344
|
|
|
1327
1345
|
case e.AAAA:
|
|
1328
|
-
o.data =
|
|
1346
|
+
o.data = M.read(t, r);
|
|
1329
1347
|
return o;
|
|
1330
1348
|
|
|
1331
1349
|
case e.SRV:
|
|
1332
|
-
o.data =
|
|
1350
|
+
o.data = Y.read(t, r);
|
|
1333
1351
|
return o;
|
|
1334
1352
|
|
|
1335
1353
|
case e.NAPTR:
|
|
1336
|
-
o.data = W.read(t,
|
|
1354
|
+
o.data = W.read(t, r);
|
|
1337
1355
|
return o;
|
|
1338
1356
|
|
|
1339
1357
|
case e.DS:
|
|
1340
|
-
o.data = z.read(t,
|
|
1358
|
+
o.data = z.read(t, r);
|
|
1341
1359
|
return o;
|
|
1342
1360
|
|
|
1343
1361
|
case e.SSHFP:
|
|
1344
|
-
o.data = j.read(t,
|
|
1362
|
+
o.data = j.read(t, r);
|
|
1345
1363
|
return o;
|
|
1346
1364
|
|
|
1347
1365
|
case e.RRSIG:
|
|
1348
|
-
o.data = k.read(t,
|
|
1366
|
+
o.data = k.read(t, r);
|
|
1349
1367
|
return o;
|
|
1350
1368
|
|
|
1351
1369
|
case e.NSEC:
|
|
1352
|
-
o.data = q.read(t,
|
|
1370
|
+
o.data = q.read(t, r);
|
|
1353
1371
|
return o;
|
|
1354
1372
|
|
|
1355
1373
|
case e.DNSKEY:
|
|
1356
|
-
o.data = B.read(t,
|
|
1374
|
+
o.data = B.read(t, r);
|
|
1357
1375
|
return o;
|
|
1358
1376
|
|
|
1359
1377
|
case e.NSEC3:
|
|
1360
|
-
o.data = Q.read(t,
|
|
1378
|
+
o.data = Q.read(t, r);
|
|
1361
1379
|
return o;
|
|
1362
1380
|
|
|
1363
1381
|
case e.TLSA:
|
|
1364
|
-
o.data = Z.read(t,
|
|
1382
|
+
o.data = Z.read(t, r);
|
|
1365
1383
|
return o;
|
|
1366
1384
|
|
|
1367
1385
|
case e.SVCB:
|
|
1368
1386
|
case e.HTTPS:
|
|
1369
|
-
o.data = J.read(t,
|
|
1387
|
+
o.data = J.read(t, r);
|
|
1370
1388
|
return o;
|
|
1371
1389
|
|
|
1372
1390
|
case e.CAA:
|
|
1373
|
-
o.data = X.read(t,
|
|
1391
|
+
o.data = X.read(t, r);
|
|
1392
|
+
return o;
|
|
1393
|
+
|
|
1394
|
+
case e.PTR:
|
|
1395
|
+
case e.CNAME:
|
|
1396
|
+
case e.DNAME:
|
|
1397
|
+
o.data = H.read(t, r);
|
|
1374
1398
|
return o;
|
|
1375
1399
|
|
|
1376
1400
|
default:
|
|
1377
|
-
o.data =
|
|
1401
|
+
o.data = x.read(t, r);
|
|
1378
1402
|
return o;
|
|
1379
1403
|
}
|
|
1380
1404
|
}
|
|
1381
1405
|
};
|
|
1382
1406
|
|
|
1383
|
-
const readList = (t, e,
|
|
1384
|
-
if (!
|
|
1407
|
+
const readList = (t, e, r, n) => {
|
|
1408
|
+
if (!n) {
|
|
1385
1409
|
return;
|
|
1386
1410
|
}
|
|
1387
|
-
const {offset: s, length: a} =
|
|
1411
|
+
const {offset: s, length: a} = r;
|
|
1388
1412
|
const i = [];
|
|
1389
|
-
for (let o = 0; o <
|
|
1390
|
-
i.push(t.read(e,
|
|
1413
|
+
for (let o = 0; o < n && r.offset - s < a; o++) {
|
|
1414
|
+
i.push(t.read(e, r));
|
|
1391
1415
|
}
|
|
1392
1416
|
return i;
|
|
1393
1417
|
};
|
|
1394
1418
|
|
|
1395
|
-
const
|
|
1419
|
+
const nt = {
|
|
1396
1420
|
bytes(t) {
|
|
1397
|
-
const {questions: e, answers:
|
|
1421
|
+
const {questions: e, answers: r, authorities: n, additionals: s} = t;
|
|
1398
1422
|
let a = 12;
|
|
1399
1423
|
let i = 0;
|
|
1400
1424
|
for (i = 0; e && i < e.length; i++) {
|
|
1401
1425
|
a += h.bytes(e[i]);
|
|
1402
1426
|
}
|
|
1403
|
-
for (i = 0; n && i < n.length; i++) {
|
|
1404
|
-
a += nt.bytes(n[i]);
|
|
1405
|
-
}
|
|
1406
1427
|
for (i = 0; r && i < r.length; i++) {
|
|
1407
|
-
a +=
|
|
1428
|
+
a += rt.bytes(r[i]);
|
|
1429
|
+
}
|
|
1430
|
+
for (i = 0; n && i < n.length; i++) {
|
|
1431
|
+
a += rt.bytes(n[i]);
|
|
1408
1432
|
}
|
|
1409
1433
|
for (i = 0; s && i < s.length; i++) {
|
|
1410
|
-
a +=
|
|
1434
|
+
a += rt.bytes(s[i]);
|
|
1411
1435
|
}
|
|
1412
1436
|
return a;
|
|
1413
1437
|
},
|
|
1414
|
-
write(e,
|
|
1415
|
-
const {questions: s, answers: a, authorities: i, additionals: o} =
|
|
1416
|
-
let c = 32767 & (
|
|
1417
|
-
e.setUint16(
|
|
1418
|
-
e.setUint16(
|
|
1419
|
-
e.setUint16(
|
|
1420
|
-
e.setUint16(
|
|
1421
|
-
e.setUint16(
|
|
1422
|
-
e.setUint16(
|
|
1423
|
-
|
|
1438
|
+
write(e, r, n) {
|
|
1439
|
+
const {questions: s, answers: a, authorities: i, additionals: o} = n;
|
|
1440
|
+
let c = 32767 & (n.flags || 0) | (n.type || t.QUERY) | (n.rtype || 0);
|
|
1441
|
+
e.setUint16(r, n.id || 0);
|
|
1442
|
+
e.setUint16(r + 2, c);
|
|
1443
|
+
e.setUint16(r + 4, n.questions?.length || 0);
|
|
1444
|
+
e.setUint16(r + 6, n.answers?.length || 0);
|
|
1445
|
+
e.setUint16(r + 8, n.authorities?.length || 0);
|
|
1446
|
+
e.setUint16(r + 10, n.additionals?.length || 0);
|
|
1447
|
+
r += 12;
|
|
1424
1448
|
let f = 0;
|
|
1425
1449
|
for (f = 0; s && f < s.length; f++) {
|
|
1426
|
-
|
|
1450
|
+
r = h.write(e, r, s[f]);
|
|
1427
1451
|
}
|
|
1428
1452
|
for (f = 0; a && f < a.length; f++) {
|
|
1429
|
-
|
|
1453
|
+
r = rt.write(e, r, a[f]);
|
|
1430
1454
|
}
|
|
1431
1455
|
for (f = 0; i && f < i.length; f++) {
|
|
1432
|
-
|
|
1456
|
+
r = rt.write(e, r, i[f]);
|
|
1433
1457
|
}
|
|
1434
1458
|
for (f = 0; o && f < o.length; f++) {
|
|
1435
|
-
|
|
1459
|
+
r = rt.write(e, r, o[f]);
|
|
1436
1460
|
}
|
|
1437
|
-
return
|
|
1461
|
+
return r;
|
|
1438
1462
|
},
|
|
1439
|
-
read(e,
|
|
1440
|
-
const
|
|
1441
|
-
const s = e.getUint16(
|
|
1442
|
-
const a = e.getUint16(
|
|
1443
|
-
const i = e.getUint16(
|
|
1444
|
-
const o = e.getUint16(
|
|
1445
|
-
const c = e.getUint16(
|
|
1446
|
-
advance(
|
|
1463
|
+
read(e, r) {
|
|
1464
|
+
const n = e.getUint16(r.offset);
|
|
1465
|
+
const s = e.getUint16(r.offset + 2);
|
|
1466
|
+
const a = e.getUint16(r.offset + 4);
|
|
1467
|
+
const i = e.getUint16(r.offset + 6);
|
|
1468
|
+
const o = e.getUint16(r.offset + 8);
|
|
1469
|
+
const c = e.getUint16(r.offset + 10);
|
|
1470
|
+
advance(r, 12);
|
|
1447
1471
|
return {
|
|
1448
|
-
id:
|
|
1472
|
+
id: n,
|
|
1449
1473
|
flags: s,
|
|
1450
1474
|
rtype: 15 & s,
|
|
1451
1475
|
type: s & t.RESPONSE ? t.RESPONSE : t.QUERY,
|
|
1452
|
-
questions: readList(h, e,
|
|
1453
|
-
answers: readList(
|
|
1454
|
-
authorities: readList(
|
|
1455
|
-
additionals: readList(
|
|
1476
|
+
questions: readList(h, e, r, a),
|
|
1477
|
+
answers: readList(rt, e, r, i),
|
|
1478
|
+
authorities: readList(rt, e, r, o),
|
|
1479
|
+
additionals: readList(rt, e, r, c)
|
|
1456
1480
|
};
|
|
1457
1481
|
}
|
|
1458
1482
|
};
|
|
1459
1483
|
|
|
1460
1484
|
exports.OptCode = s;
|
|
1461
1485
|
|
|
1462
|
-
exports.PacketFlag =
|
|
1486
|
+
exports.PacketFlag = n;
|
|
1463
1487
|
|
|
1464
1488
|
exports.PacketType = t;
|
|
1465
1489
|
|
|
1466
|
-
exports.RecordClass =
|
|
1490
|
+
exports.RecordClass = r;
|
|
1467
1491
|
|
|
1468
1492
|
exports.RecordType = e;
|
|
1469
1493
|
|
|
1470
1494
|
exports.decode = function decode(t) {
|
|
1471
1495
|
const e = "buffer" in t ? new DataView(t.buffer, t.byteOffset, t.byteLength) : new DataView(t);
|
|
1472
|
-
return
|
|
1496
|
+
return nt.read(e, {
|
|
1473
1497
|
offset: 0,
|
|
1474
1498
|
length: e.byteLength
|
|
1475
1499
|
});
|
|
1476
1500
|
};
|
|
1477
1501
|
|
|
1478
1502
|
exports.encode = function encode(t) {
|
|
1479
|
-
const e = new ArrayBuffer(
|
|
1480
|
-
const
|
|
1481
|
-
return new Uint8Array(e, 0,
|
|
1503
|
+
const e = new ArrayBuffer(nt.bytes(t));
|
|
1504
|
+
const r = nt.write(new DataView(e), 0, t);
|
|
1505
|
+
return new Uint8Array(e, 0, r);
|
|
1482
1506
|
};
|
|
1483
1507
|
|
|
1484
1508
|
exports.encodingLength = function encodingLength(t) {
|
|
1485
|
-
return
|
|
1509
|
+
return nt.bytes(t);
|
|
1486
1510
|
};
|
|
1487
1511
|
|
|
1488
1512
|
exports.streamDecode = function streamDecode(t) {
|
|
1489
1513
|
const e = "buffer" in t ? new DataView(t.buffer, t.byteOffset, t.byteLength) : new DataView(t);
|
|
1490
|
-
const
|
|
1491
|
-
return
|
|
1514
|
+
const r = Math.min(e.byteLength, e.getUint16(0)) - 2;
|
|
1515
|
+
return nt.read(e, {
|
|
1492
1516
|
offset: 2,
|
|
1493
|
-
length:
|
|
1517
|
+
length: r
|
|
1494
1518
|
});
|
|
1495
1519
|
};
|
|
1496
1520
|
|
|
1497
1521
|
exports.streamEncode = function streamEncode(t) {
|
|
1498
|
-
const e = new ArrayBuffer(
|
|
1499
|
-
const
|
|
1500
|
-
const
|
|
1501
|
-
|
|
1502
|
-
return new Uint8Array(e, 0,
|
|
1522
|
+
const e = new ArrayBuffer(nt.bytes(t) + 2);
|
|
1523
|
+
const r = new DataView(e);
|
|
1524
|
+
const n = nt.write(r, 2, t);
|
|
1525
|
+
r.setUint16(0, n);
|
|
1526
|
+
return new Uint8Array(e, 0, n);
|
|
1503
1527
|
};
|
|
1504
1528
|
//# sourceMappingURL=dns-message.js.map
|