pending-dns 1.2.2 → 1.2.3
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/lib/dns-handler.js +6 -4
- package/lib/dns-server.js +5 -1
- package/lib/dns-tcp-server.js +9 -3
- package/lib/dns-udp-server.js +3 -2
- package/lib/public-server.js +21 -2
- package/package.json +1 -1
package/lib/dns-handler.js
CHANGED
|
@@ -341,10 +341,11 @@ const dnsHandler = async request => {
|
|
|
341
341
|
|
|
342
342
|
await Promise.all(
|
|
343
343
|
request.questions.map(question => {
|
|
344
|
-
logger.
|
|
344
|
+
logger.debug({
|
|
345
345
|
id: request._id,
|
|
346
346
|
msg: 'DNS query',
|
|
347
|
-
|
|
347
|
+
action: 'dns_query',
|
|
348
|
+
proto: request.source.type,
|
|
348
349
|
port: request.source.port,
|
|
349
350
|
address: request.source.address,
|
|
350
351
|
question: question.name,
|
|
@@ -354,9 +355,10 @@ const dnsHandler = async request => {
|
|
|
354
355
|
})
|
|
355
356
|
);
|
|
356
357
|
|
|
357
|
-
logger.
|
|
358
|
-
msg: 'DNS response',
|
|
358
|
+
logger.debug({
|
|
359
359
|
id: request._id,
|
|
360
|
+
msg: 'DNS response',
|
|
361
|
+
action: 'dns_response',
|
|
360
362
|
dnsTime: Date.now() - startTime,
|
|
361
363
|
questions: request.questions,
|
|
362
364
|
answers: response.answers
|
package/lib/dns-server.js
CHANGED
|
@@ -59,7 +59,11 @@ const init = async () => {
|
|
|
59
59
|
logger.info({ msg: 'DNS server listening', protocol: 'tcp', host: config.dns.host, port: config.dns.port });
|
|
60
60
|
})
|
|
61
61
|
.on('error', err => {
|
|
62
|
-
|
|
62
|
+
let method = 'error';
|
|
63
|
+
if (err && ['ECONNRESET'].includes(err.code)) {
|
|
64
|
+
method = 'trace';
|
|
65
|
+
}
|
|
66
|
+
logger[method]({ msg: 'DNS server error', protocol: 'tcp', err });
|
|
63
67
|
});
|
|
64
68
|
};
|
|
65
69
|
|
package/lib/dns-tcp-server.js
CHANGED
|
@@ -40,7 +40,7 @@ class DNSTcpServer extends EventEmitter {
|
|
|
40
40
|
try {
|
|
41
41
|
request = Packet.parse(buffer.slice(2));
|
|
42
42
|
} catch (err) {
|
|
43
|
-
logger.
|
|
43
|
+
logger.trace({ msg: 'Failed to parse DNS package', proto: 'tcp', err, buffer, port: socket.remotePort, address: socket.remoteAddress });
|
|
44
44
|
try {
|
|
45
45
|
socket.end();
|
|
46
46
|
} catch (err) {
|
|
@@ -50,7 +50,7 @@ class DNSTcpServer extends EventEmitter {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
request.source = {
|
|
53
|
-
|
|
53
|
+
proto: 'tcp',
|
|
54
54
|
port: socket.remotePort,
|
|
55
55
|
address: socket.remoteAddress
|
|
56
56
|
};
|
|
@@ -95,10 +95,16 @@ class DNSTcpServer extends EventEmitter {
|
|
|
95
95
|
try {
|
|
96
96
|
let len = Buffer.alloc(2);
|
|
97
97
|
len.writeUInt16BE(message.length);
|
|
98
|
-
|
|
98
|
+
|
|
99
|
+
if (['open', 'writeOnly'].includes(socket.readyState)) {
|
|
100
|
+
socket.end(Buffer.concat([len, message]));
|
|
101
|
+
} else {
|
|
102
|
+
socket.end();
|
|
103
|
+
}
|
|
99
104
|
} catch (err) {
|
|
100
105
|
// ignore
|
|
101
106
|
}
|
|
107
|
+
|
|
102
108
|
resolve(message);
|
|
103
109
|
});
|
|
104
110
|
}
|
package/lib/dns-udp-server.js
CHANGED
|
@@ -26,15 +26,16 @@ class DNSUdpServer extends EventEmitter {
|
|
|
26
26
|
try {
|
|
27
27
|
request = Packet.parse(buffer);
|
|
28
28
|
} catch (err) {
|
|
29
|
-
logger.
|
|
29
|
+
logger.trace({ msg: 'Failed to parse DNS package', proto: 'udp', err, buffer, port: rinfo.port, address: rinfo.address });
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
request.source = {
|
|
34
|
-
|
|
34
|
+
proto: 'udp',
|
|
35
35
|
port: rinfo.port,
|
|
36
36
|
address: rinfo.address
|
|
37
37
|
};
|
|
38
|
+
|
|
38
39
|
this.emit('request', request, this.send.bind(this, rinfo), rinfo);
|
|
39
40
|
}
|
|
40
41
|
send(rinfo, message) {
|
package/lib/public-server.js
CHANGED
|
@@ -263,7 +263,17 @@ const setupHttps = () =>
|
|
|
263
263
|
|
|
264
264
|
logger.error({ msg: 'Failed to serve redirect page', err, hostname });
|
|
265
265
|
|
|
266
|
-
|
|
266
|
+
let url;
|
|
267
|
+
try {
|
|
268
|
+
url = new URL(req.url || req.headers[':path'], `https://${hostname}/`);
|
|
269
|
+
} catch (err) {
|
|
270
|
+
try {
|
|
271
|
+
url = new URL(req.headers[':path'], `https://${hostname}/`);
|
|
272
|
+
} catch (err) {
|
|
273
|
+
url = `https://${hostname}/`;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
267
277
|
const route = url.pathname;
|
|
268
278
|
|
|
269
279
|
res.send(
|
|
@@ -332,8 +342,17 @@ const setupHttp = () =>
|
|
|
332
342
|
const hostname = getHostname(req).replace(/^www\./, '');
|
|
333
343
|
|
|
334
344
|
logger.error({ msg: 'Failed to serve redirect page', err, hostname });
|
|
345
|
+
let url;
|
|
346
|
+
try {
|
|
347
|
+
url = new URL(req.url || req.headers[':path'], `https://${hostname}/`);
|
|
348
|
+
} catch (err) {
|
|
349
|
+
try {
|
|
350
|
+
url = new URL(req.headers[':path'], `https://${hostname}/`);
|
|
351
|
+
} catch (err) {
|
|
352
|
+
url = `https://${hostname}/`;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
335
355
|
|
|
336
|
-
const url = new URL(req.url || req.headers[':path'], `https://${hostname}/`);
|
|
337
356
|
const route = url.pathname;
|
|
338
357
|
|
|
339
358
|
res.send(
|