better-hosts 0.2.2 → 0.2.4
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/server.js +16 -7
- package/lib/server.js.map +1 -1
- package/package.json +5 -5
- package/lib/utils/dns.js +0 -16
- package/lib/utils/dns.js.map +0 -1
package/lib/server.js
CHANGED
|
@@ -2,7 +2,8 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { assert, go } from '@blackglory/prelude';
|
|
3
3
|
import { DNSClient, DNSServer, QR, RCODE, TYPE } from 'extra-dns';
|
|
4
4
|
import { timeoutSignal } from 'extra-abort';
|
|
5
|
-
import {
|
|
5
|
+
import { A_RDATA, AAAA_RDATA } from 'extra-dns';
|
|
6
|
+
import { Address6 } from 'ip-address';
|
|
6
7
|
export async function startServer({ logger, timeout, port, hosts, fallbackServer }) {
|
|
7
8
|
var _a;
|
|
8
9
|
const server = new DNSServer('0.0.0.0', port);
|
|
@@ -30,7 +31,7 @@ export async function startServer({ logger, timeout, port, hosts, fallbackServer
|
|
|
30
31
|
};
|
|
31
32
|
const question = query.questions[0];
|
|
32
33
|
if (question) {
|
|
33
|
-
logger.trace(`${formatHostname(question.QNAME)} ${
|
|
34
|
+
logger.trace(`${formatHostname(question.QNAME)} ${formatRecordType(question.QTYPE)}`);
|
|
34
35
|
const resolveResult = go(() => {
|
|
35
36
|
switch (question.QTYPE) {
|
|
36
37
|
case TYPE.A: return hosts.resolveA(question.QNAME);
|
|
@@ -48,10 +49,14 @@ export async function startServer({ logger, timeout, port, hosts, fallbackServer
|
|
|
48
49
|
TYPE: question.QTYPE,
|
|
49
50
|
CLASS: question.QCLASS,
|
|
50
51
|
TTL: 0,
|
|
51
|
-
RDATA:
|
|
52
|
+
RDATA: new ArrayBuffer(),
|
|
53
|
+
rdata: go(() => {
|
|
52
54
|
switch (question.QTYPE) {
|
|
53
|
-
case TYPE.A: return
|
|
54
|
-
case TYPE.AAAA:
|
|
55
|
+
case TYPE.A: return new A_RDATA(address);
|
|
56
|
+
case TYPE.AAAA: {
|
|
57
|
+
const canonicalAddress = new Address6(address).canonicalForm();
|
|
58
|
+
return new AAAA_RDATA(canonicalAddress);
|
|
59
|
+
}
|
|
55
60
|
default: throw new Error('Impossible route');
|
|
56
61
|
}
|
|
57
62
|
})
|
|
@@ -59,14 +64,14 @@ export async function startServer({ logger, timeout, port, hosts, fallbackServer
|
|
|
59
64
|
response.answers.push(answer);
|
|
60
65
|
}
|
|
61
66
|
else {
|
|
62
|
-
logger.info(`${formatHostname(question.QNAME)} No records for ${
|
|
67
|
+
logger.info(`${formatHostname(question.QNAME)} No records for ${formatRecordType(question.QTYPE)}`);
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
70
|
else {
|
|
66
71
|
const startTime = Date.now();
|
|
67
72
|
try {
|
|
68
73
|
response = await client.resolve(query, timeoutSignal(timeout));
|
|
69
|
-
logger.info(`${formatHostname(question.QNAME)} ${
|
|
74
|
+
logger.info(`${formatHostname(question.QNAME)} ${formatRecordType(question.QTYPE)}`, getElapsed(startTime));
|
|
70
75
|
}
|
|
71
76
|
catch (e) {
|
|
72
77
|
logger.error(`${formatHostname(question.QNAME)} ${e}`, getElapsed(startTime));
|
|
@@ -81,6 +86,10 @@ export async function startServer({ logger, timeout, port, hosts, fallbackServer
|
|
|
81
86
|
function formatHostname(hostname) {
|
|
82
87
|
return chalk.cyan(hostname);
|
|
83
88
|
}
|
|
89
|
+
function formatRecordType(recordType) {
|
|
90
|
+
var _a;
|
|
91
|
+
return (_a = TYPE[recordType]) !== null && _a !== void 0 ? _a : `Unknown(${recordType})`;
|
|
92
|
+
}
|
|
84
93
|
function getElapsed(startTime) {
|
|
85
94
|
return Date.now() - startTime;
|
|
86
95
|
}
|
package/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAuC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-hosts",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dns"
|
|
@@ -54,17 +54,17 @@
|
|
|
54
54
|
"yarn-deduplicate": "^6.0.2"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@blackglory/prelude": "^0.
|
|
57
|
+
"@blackglory/prelude": "^0.4.0",
|
|
58
58
|
"chalk": "^5.3.0",
|
|
59
59
|
"commander": "^11.1.0",
|
|
60
60
|
"extra-abort": "^0.4.0",
|
|
61
|
-
"extra-dns": "^0.1.
|
|
61
|
+
"extra-dns": "^0.1.6",
|
|
62
62
|
"extra-filesystem": "^0.5.1",
|
|
63
63
|
"extra-logger": "^0.7.2",
|
|
64
|
-
"extra-promise": "^
|
|
64
|
+
"extra-promise": "^7.0.0",
|
|
65
65
|
"extra-utils": "^5.6.0",
|
|
66
66
|
"extra-watcher": "^0.2.2",
|
|
67
67
|
"ip-address": "^10.0.1",
|
|
68
|
-
"iterable-operator": "^
|
|
68
|
+
"iterable-operator": "^5.1.0"
|
|
69
69
|
}
|
|
70
70
|
}
|
package/lib/utils/dns.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Address6 } from 'ip-address';
|
|
2
|
-
import { uint16ArrayBigEndian } from "./typed-array.js";
|
|
3
|
-
export function createRDATAForA(ipv4Address) {
|
|
4
|
-
const data = new Uint8Array(ipv4Address
|
|
5
|
-
.split('.')
|
|
6
|
-
.map(x => Number.parseInt(x, 10)));
|
|
7
|
-
return data.buffer;
|
|
8
|
-
}
|
|
9
|
-
export function createRDATAForAAAA(ipv6Address) {
|
|
10
|
-
const canonicalAddress = new Address6(ipv6Address).canonicalForm();
|
|
11
|
-
const data = uint16ArrayBigEndian(canonicalAddress
|
|
12
|
-
.split(':')
|
|
13
|
-
.map(x => Number.parseInt(x, 16)));
|
|
14
|
-
return data.buffer;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=dns.js.map
|
package/lib/utils/dns.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../src/utils/dns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,yBAA6B;AAE5D,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,IAAI,GAAG,IAAI,UAAU,CACzB,WAAW;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACpC,CAAA;IAED,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAA;IAElE,MAAM,IAAI,GAAG,oBAAoB,CAC/B,gBAAgB;SACb,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACpC,CAAA;IAED,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC"}
|