better-hosts 0.1.0 → 0.1.1
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 +18 -0
- package/lib/cli.js +1 -1
- package/lib/cli.js.map +1 -1
- package/lib/hosts.js +12 -10
- package/lib/hosts.js.map +1 -1
- package/lib/record-types.js +80 -0
- package/lib/record-types.js.map +1 -0
- package/lib/server.js +46 -37
- package/lib/server.js.map +1 -1
- package/package.json +13 -13
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
+
|
|
5
|
+
### [0.1.1](https://github.com/BlackGlory/better-hosts/compare/v0.1.0...v0.1.1) (2022-03-20)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* forward entire response instead of answers ([ea23916](https://github.com/BlackGlory/better-hosts/commit/ea239165b13d87bf2708568954d2996a73584688))
|
|
11
|
+
* logging ([59b296f](https://github.com/BlackGlory/better-hosts/commit/59b296f032db38e04f4d87ac571bbd0d3c983370))
|
|
12
|
+
|
|
13
|
+
## 0.1.0 (2022-03-03)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* init ([e201dfb](https://github.com/BlackGlory/better-hosts/commit/e201dfbb4365df41d15e32e5287eec112b035ef2))
|
package/lib/cli.js
CHANGED
|
@@ -39,7 +39,7 @@ function getOptions() {
|
|
|
39
39
|
(0, errors_1.assert)(/^\d+$/.test(opts.port), 'The parameter port must be integer');
|
|
40
40
|
const port = Number.parseInt(opts.port, 10);
|
|
41
41
|
const fallbackServer = opts.fallbackServer;
|
|
42
|
-
const logLevel = (0, extra_logger_1.stringToLevel)(opts.log,
|
|
42
|
+
const logLevel = (0, extra_logger_1.stringToLevel)(opts.log, extra_logger_1.Level.Info);
|
|
43
43
|
return {
|
|
44
44
|
port,
|
|
45
45
|
fallbackServer,
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,yCAAmC;AACnC,qCAAsC;AACtC,+CAA2C;AAC3C,+CAA8E;AAC9E,gEAA0D;AAC1D,mCAA+B;AAE/B,mBAAO;KACJ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;KACrC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;KAC3C,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC;KACnD,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC;KACjC,MAAM,CAAC,4BAA4B,EAAE,EAAE,CAAC;KACxC,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC;KACnC,QAAQ,CAAC,YAAY,CAAC;KACtB,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;IACjC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,IAAI,qBAAM,CAAC;QACxB,KAAK,EAAE,OAAO,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,gCAAiB,CAAC,EAAE,CAAC;KACrC,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC;QACtB,QAAQ;QACR,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,IAAA,mCAAe,EAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAE9D,IAAA,oBAAW,EAAC;QACV,MAAM;QACN,KAAK;QACL,cAAc;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAA;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAA;AAEV,SAAS,UAAU;IACjB,MAAM,IAAI,GAAG,mBAAO,CAAC,IAAI,EAAE,CAAA;IAE3B,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACrE,MAAM,IAAI,GAAW,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEnD,MAAM,cAAc,GAAW,IAAI,CAAC,cAAc,CAAA;IAClD,MAAM,QAAQ,GAAU,IAAA,4BAAa,EAAC,IAAI,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,yCAAmC;AACnC,qCAAsC;AACtC,+CAA2C;AAC3C,+CAA8E;AAC9E,gEAA0D;AAC1D,mCAA+B;AAE/B,mBAAO;KACJ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;KACrC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;KAC3C,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC;KACnD,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC;KACjC,MAAM,CAAC,4BAA4B,EAAE,EAAE,CAAC;KACxC,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC;KACnC,QAAQ,CAAC,YAAY,CAAC;KACtB,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;IACjC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,IAAI,qBAAM,CAAC;QACxB,KAAK,EAAE,OAAO,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,gCAAiB,CAAC,EAAE,CAAC;KACrC,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC;QACtB,QAAQ;QACR,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,IAAA,mCAAe,EAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAE9D,IAAA,oBAAW,EAAC;QACV,MAAM;QACN,KAAK;QACL,cAAc;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAA;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAA;AAEV,SAAS,UAAU;IACjB,MAAM,IAAI,GAAG,mBAAO,CAAC,IAAI,EAAE,CAAA;IAE3B,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACrE,MAAM,IAAI,GAAW,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEnD,MAAM,cAAc,GAAW,IAAI,CAAC,cAAc,CAAA;IAClD,MAAM,QAAQ,GAAU,IAAA,4BAAa,EAAC,IAAI,CAAC,GAAG,EAAE,oBAAK,CAAC,IAAI,CAAC,CAAA;IAE3D,OAAO;QACL,IAAI;QACJ,cAAc;QACd,QAAQ;KACT,CAAA;AACH,CAAC"}
|
package/lib/hosts.js
CHANGED
|
@@ -25,18 +25,20 @@ class Hosts {
|
|
|
25
25
|
}));
|
|
26
26
|
}
|
|
27
27
|
resolveA(hostname) {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const records = this.records.filter(record => record.pattern.match(hostname));
|
|
29
|
+
const record = records.find(record => (0, is_ipv4_address_1.isIPv4Address)(record.address));
|
|
30
|
+
return {
|
|
31
|
+
address: record === null || record === void 0 ? void 0 : record.address,
|
|
32
|
+
hasRecords: !!records.length
|
|
33
|
+
};
|
|
33
34
|
}
|
|
34
35
|
resolveAAAA(hostname) {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const records = this.records.filter(record => record.pattern.match(hostname));
|
|
37
|
+
const record = records.find(record => (0, is_ipv6_address_1.isIPv6Address)(record.address));
|
|
38
|
+
return {
|
|
39
|
+
address: record === null || record === void 0 ? void 0 : record.address,
|
|
40
|
+
hasRecords: !!records.length
|
|
41
|
+
};
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
exports.Hosts = Hosts;
|
package/lib/hosts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosts.js","sourceRoot":"","sources":["../src/hosts.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAsD;AACtD,4DAAsD;AACtD,8DAAyD;AACzD,kDAA6C;AAE7C,wDAA+B;
|
|
1
|
+
{"version":3,"file":"hosts.js","sourceRoot":"","sources":["../src/hosts.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAsD;AACtD,4DAAsD;AACtD,8DAAyD;AACzD,kDAA6C;AAE7C,wDAA+B;AAY/B,MAAa,KAAK;IAGhB,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAwC;QAF9D,YAAO,GAAc,EAAE,CAAA;QAG7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAErB,kBAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAClE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACrB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,IAAI,CAAC,OAAO,GAAG,IAAA,sBAAS,EAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChD,OAAO,EAAE,IAAI,kCAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC7C,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC,CAAA;IACL,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,+BAAa,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACpE,OAAO;YACL,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;YACxB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;SAC7B,CAAA;IACH,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,+BAAa,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACpE,OAAO;YACL,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;YACxB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;SAC7B,CAAA;IACH,CAAC;CACF;AApCD,sBAoCC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RecordType = void 0;
|
|
4
|
+
var RecordType;
|
|
5
|
+
(function (RecordType) {
|
|
6
|
+
RecordType[RecordType["A"] = 1] = "A";
|
|
7
|
+
RecordType[RecordType["NS"] = 2] = "NS";
|
|
8
|
+
RecordType[RecordType["MD"] = 3] = "MD";
|
|
9
|
+
RecordType[RecordType["MF"] = 4] = "MF";
|
|
10
|
+
RecordType[RecordType["CNAME"] = 5] = "CNAME";
|
|
11
|
+
RecordType[RecordType["SOA"] = 6] = "SOA";
|
|
12
|
+
RecordType[RecordType["MB"] = 7] = "MB";
|
|
13
|
+
RecordType[RecordType["MG"] = 8] = "MG";
|
|
14
|
+
RecordType[RecordType["MR"] = 9] = "MR";
|
|
15
|
+
RecordType[RecordType["NULL"] = 10] = "NULL";
|
|
16
|
+
RecordType[RecordType["WKS"] = 11] = "WKS";
|
|
17
|
+
RecordType[RecordType["PTR"] = 12] = "PTR";
|
|
18
|
+
RecordType[RecordType["HINFO"] = 13] = "HINFO";
|
|
19
|
+
RecordType[RecordType["MINFO"] = 14] = "MINFO";
|
|
20
|
+
RecordType[RecordType["MX"] = 15] = "MX";
|
|
21
|
+
RecordType[RecordType["TXT"] = 16] = "TXT";
|
|
22
|
+
RecordType[RecordType["RP"] = 17] = "RP";
|
|
23
|
+
RecordType[RecordType["AFSDB"] = 18] = "AFSDB";
|
|
24
|
+
RecordType[RecordType["X25"] = 19] = "X25";
|
|
25
|
+
RecordType[RecordType["ISDN"] = 20] = "ISDN";
|
|
26
|
+
RecordType[RecordType["RT"] = 21] = "RT";
|
|
27
|
+
RecordType[RecordType["NSAP"] = 22] = "NSAP";
|
|
28
|
+
RecordType[RecordType["NSAP-PTR"] = 23] = "NSAP-PTR";
|
|
29
|
+
RecordType[RecordType["SIG"] = 24] = "SIG";
|
|
30
|
+
RecordType[RecordType["KEY"] = 25] = "KEY";
|
|
31
|
+
RecordType[RecordType["PX"] = 26] = "PX";
|
|
32
|
+
RecordType[RecordType["GPOS"] = 27] = "GPOS";
|
|
33
|
+
RecordType[RecordType["AAAA"] = 28] = "AAAA";
|
|
34
|
+
RecordType[RecordType["LOC"] = 29] = "LOC";
|
|
35
|
+
RecordType[RecordType["NXT"] = 30] = "NXT";
|
|
36
|
+
RecordType[RecordType["EID"] = 31] = "EID";
|
|
37
|
+
RecordType[RecordType["NIMLOC"] = 32] = "NIMLOC";
|
|
38
|
+
RecordType[RecordType["SRV"] = 33] = "SRV";
|
|
39
|
+
RecordType[RecordType["ATMA"] = 34] = "ATMA";
|
|
40
|
+
RecordType[RecordType["NAPTR"] = 35] = "NAPTR";
|
|
41
|
+
RecordType[RecordType["KX"] = 36] = "KX";
|
|
42
|
+
RecordType[RecordType["CERT"] = 37] = "CERT";
|
|
43
|
+
RecordType[RecordType["A6"] = 38] = "A6";
|
|
44
|
+
RecordType[RecordType["DNAME"] = 39] = "DNAME";
|
|
45
|
+
RecordType[RecordType["SINK"] = 40] = "SINK";
|
|
46
|
+
RecordType[RecordType["OPT"] = 41] = "OPT";
|
|
47
|
+
RecordType[RecordType["APL"] = 42] = "APL";
|
|
48
|
+
RecordType[RecordType["DS"] = 43] = "DS";
|
|
49
|
+
RecordType[RecordType["SSHFP"] = 44] = "SSHFP";
|
|
50
|
+
RecordType[RecordType["IPSECKEY"] = 45] = "IPSECKEY";
|
|
51
|
+
RecordType[RecordType["RRSIG"] = 46] = "RRSIG";
|
|
52
|
+
RecordType[RecordType["NSEC"] = 47] = "NSEC";
|
|
53
|
+
RecordType[RecordType["DNSKEY"] = 48] = "DNSKEY";
|
|
54
|
+
RecordType[RecordType["DHCID"] = 49] = "DHCID";
|
|
55
|
+
RecordType[RecordType["NSEC3"] = 50] = "NSEC3";
|
|
56
|
+
RecordType[RecordType["NSEC3PARAM"] = 51] = "NSEC3PARAM";
|
|
57
|
+
RecordType[RecordType["TLSA"] = 52] = "TLSA";
|
|
58
|
+
RecordType[RecordType["HIP"] = 55] = "HIP";
|
|
59
|
+
RecordType[RecordType["NINFO"] = 56] = "NINFO";
|
|
60
|
+
RecordType[RecordType["RKEY"] = 57] = "RKEY";
|
|
61
|
+
RecordType[RecordType["TALINK"] = 58] = "TALINK";
|
|
62
|
+
RecordType[RecordType["CDS"] = 59] = "CDS";
|
|
63
|
+
RecordType[RecordType["SPF"] = 99] = "SPF";
|
|
64
|
+
RecordType[RecordType["UINFO"] = 100] = "UINFO";
|
|
65
|
+
RecordType[RecordType["UID"] = 101] = "UID";
|
|
66
|
+
RecordType[RecordType["GID"] = 102] = "GID";
|
|
67
|
+
RecordType[RecordType["UNSPEC"] = 103] = "UNSPEC";
|
|
68
|
+
RecordType[RecordType["TKEY"] = 249] = "TKEY";
|
|
69
|
+
RecordType[RecordType["TSIG"] = 250] = "TSIG";
|
|
70
|
+
RecordType[RecordType["IXFR"] = 251] = "IXFR";
|
|
71
|
+
RecordType[RecordType["AXFR"] = 252] = "AXFR";
|
|
72
|
+
RecordType[RecordType["MAILB"] = 253] = "MAILB";
|
|
73
|
+
RecordType[RecordType["MAILA"] = 254] = "MAILA";
|
|
74
|
+
RecordType[RecordType["ANY"] = 255] = "ANY";
|
|
75
|
+
RecordType[RecordType["URI"] = 256] = "URI";
|
|
76
|
+
RecordType[RecordType["CAA"] = 257] = "CAA";
|
|
77
|
+
RecordType[RecordType["TA"] = 32768] = "TA";
|
|
78
|
+
RecordType[RecordType["DLV"] = 32769] = "DLV";
|
|
79
|
+
})(RecordType = exports.RecordType || (exports.RecordType = {}));
|
|
80
|
+
//# sourceMappingURL=record-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-types.js","sourceRoot":"","sources":["../src/record-types.ts"],"names":[],"mappings":";;;AAAA,IAAY,UA0EX;AA1ED,WAAY,UAAU;IACpB,qCAAK,CAAA;IACL,uCAAM,CAAA;IACN,uCAAM,CAAA;IACN,uCAAM,CAAA;IACN,6CAAS,CAAA;IACT,yCAAO,CAAA;IACP,uCAAM,CAAA;IACN,uCAAM,CAAA;IACN,uCAAM,CAAA;IACN,4CAAS,CAAA;IACT,0CAAQ,CAAA;IACR,0CAAQ,CAAA;IACR,8CAAU,CAAA;IACV,8CAAU,CAAA;IACV,wCAAO,CAAA;IACP,0CAAQ,CAAA;IACR,wCAAO,CAAA;IACP,8CAAU,CAAA;IACV,0CAAQ,CAAA;IACR,4CAAS,CAAA;IACT,wCAAO,CAAA;IACP,4CAAS,CAAA;IACT,oDAAe,CAAA;IACf,0CAAQ,CAAA;IACR,0CAAQ,CAAA;IACR,wCAAO,CAAA;IACP,4CAAS,CAAA;IACT,4CAAS,CAAA;IACT,0CAAQ,CAAA;IACR,0CAAQ,CAAA;IACR,0CAAQ,CAAA;IACR,gDAAW,CAAA;IACX,0CAAQ,CAAA;IACR,4CAAS,CAAA;IACT,8CAAU,CAAA;IACV,wCAAO,CAAA;IACP,4CAAS,CAAA;IACT,wCAAO,CAAA;IACP,8CAAU,CAAA;IACV,4CAAS,CAAA;IACT,0CAAQ,CAAA;IACR,0CAAQ,CAAA;IACR,wCAAO,CAAA;IACP,8CAAU,CAAA;IACV,oDAAa,CAAA;IACb,8CAAU,CAAA;IACV,4CAAS,CAAA;IACT,gDAAW,CAAA;IACX,8CAAU,CAAA;IACV,8CAAU,CAAA;IACV,wDAAe,CAAA;IACf,4CAAS,CAAA;IACT,0CAAQ,CAAA;IACR,8CAAU,CAAA;IACV,4CAAS,CAAA;IACT,gDAAW,CAAA;IACX,0CAAQ,CAAA;IACR,0CAAQ,CAAA;IACR,+CAAW,CAAA;IACX,2CAAS,CAAA;IACT,2CAAS,CAAA;IACT,iDAAY,CAAA;IACZ,6CAAU,CAAA;IACV,6CAAU,CAAA;IACV,6CAAU,CAAA;IACV,6CAAU,CAAA;IACV,+CAAW,CAAA;IACX,+CAAW,CAAA;IACX,2CAAS,CAAA;IACT,2CAAS,CAAA;IACT,2CAAS,CAAA;IACT,2CAAU,CAAA;IACV,6CAAW,CAAA;AACb,CAAC,EA1EW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QA0ErB"}
|
package/lib/server.js
CHANGED
|
@@ -28,58 +28,67 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.startServer = void 0;
|
|
30
30
|
const dns = __importStar(require("native-node-dns"));
|
|
31
|
-
const extra_promise_1 = require("extra-promise");
|
|
32
|
-
const resource_record_type_1 = require("./resource-record-type");
|
|
33
31
|
const return_style_1 = require("return-style");
|
|
34
32
|
const chalk_1 = __importDefault(require("chalk"));
|
|
35
33
|
const ms_1 = __importDefault(require("ms"));
|
|
36
|
-
const types_1 = require("@blackglory/types");
|
|
37
34
|
const go_1 = require("@blackglory/go");
|
|
35
|
+
const record_types_1 = require("./record-types");
|
|
38
36
|
function startServer({ logger, port, hosts, fallbackServer }) {
|
|
39
37
|
const server = dns.createServer();
|
|
40
38
|
server.on('error', console.error);
|
|
41
39
|
server.on('socketError', console.error);
|
|
42
40
|
server.on('request', async (req, res) => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if ((0, types_1.isntUndefined)(address)) {
|
|
52
|
-
logger.info(`${formatHostname(question.name)} ${address}`);
|
|
53
|
-
return [
|
|
54
|
-
{
|
|
55
|
-
name: question.name,
|
|
56
|
-
type: question.type,
|
|
57
|
-
class: question.class,
|
|
58
|
-
address,
|
|
59
|
-
ttl: 0
|
|
60
|
-
}
|
|
61
|
-
];
|
|
41
|
+
logger.trace(`request: ${JSON.stringify(req)}`);
|
|
42
|
+
res.header.rcode = dns.consts.NAME_TO_RCODE.SERVFAIL;
|
|
43
|
+
const question = req.question[0];
|
|
44
|
+
logger.trace(`${formatHostname(question.name)} ${record_types_1.RecordType[question.type]}`);
|
|
45
|
+
const result = (0, go_1.go)(() => {
|
|
46
|
+
switch (question.type) {
|
|
47
|
+
case dns.consts.NAME_TO_QTYPE.A: return hosts.resolveA(question.name);
|
|
48
|
+
case dns.consts.NAME_TO_QTYPE.AAAA: return hosts.resolveAAAA(question.name);
|
|
62
49
|
}
|
|
63
|
-
const startTime = Date.now();
|
|
64
|
-
const [err, answers] = await (0, return_style_1.getErrorResultAsync)(() => resolve(fallbackServer, question));
|
|
65
|
-
if (err) {
|
|
66
|
-
logger.error(`${formatHostname(question.name)} ${err}`, getElapsed(startTime));
|
|
67
|
-
return [];
|
|
68
|
-
}
|
|
69
|
-
logger.info(`${formatHostname(question.name)} ${resource_record_type_1.ResourceRecordType[question.type]}`, getElapsed(startTime));
|
|
70
|
-
return answers;
|
|
71
50
|
});
|
|
72
|
-
|
|
73
|
-
.
|
|
74
|
-
|
|
75
|
-
|
|
51
|
+
if (result === null || result === void 0 ? void 0 : result.hasRecords) {
|
|
52
|
+
if (result.address) {
|
|
53
|
+
logger.info(`${formatHostname(question.name)} ${result.address}`);
|
|
54
|
+
res.header.rcode = dns.consts.NAME_TO_RCODE.NOERROR;
|
|
55
|
+
res.answer.push({
|
|
56
|
+
name: question.name,
|
|
57
|
+
type: question.type,
|
|
58
|
+
class: question.class,
|
|
59
|
+
ttl: 0,
|
|
60
|
+
address: result.address
|
|
61
|
+
});
|
|
62
|
+
return sendRes();
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
logger.info(`${formatHostname(question.name)} No records for ${record_types_1.RecordType[question.type]}`);
|
|
66
|
+
res.header.rcode = dns.consts.NAME_TO_RCODE.NOERROR;
|
|
67
|
+
return sendRes();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const startTime = Date.now();
|
|
71
|
+
const [err, response] = await (0, return_style_1.getErrorResultAsync)(() => resolve(fallbackServer, question));
|
|
72
|
+
if (err) {
|
|
73
|
+
logger.error(`${formatHostname(question.name)} ${err}`, getElapsed(startTime));
|
|
74
|
+
return sendRes();
|
|
75
|
+
}
|
|
76
|
+
logger.info(`${formatHostname(question.name)} ${record_types_1.RecordType[question.type]}`, getElapsed(startTime));
|
|
77
|
+
res.header.rcode = response.header.rcode;
|
|
78
|
+
res.answer = response.answer;
|
|
79
|
+
res.authority = response.authority;
|
|
80
|
+
sendRes();
|
|
81
|
+
function sendRes() {
|
|
82
|
+
logger.trace(`response: ${JSON.stringify(res)}`);
|
|
83
|
+
res.send();
|
|
84
|
+
}
|
|
76
85
|
});
|
|
77
86
|
return server.serve(port);
|
|
78
87
|
}
|
|
79
88
|
exports.startServer = startServer;
|
|
80
89
|
function resolve(server, question) {
|
|
81
90
|
return new Promise((resolve, reject) => {
|
|
82
|
-
|
|
91
|
+
let response;
|
|
83
92
|
const request = dns.Request({
|
|
84
93
|
question,
|
|
85
94
|
server: {
|
|
@@ -93,11 +102,11 @@ function resolve(server, question) {
|
|
|
93
102
|
});
|
|
94
103
|
request.on('timeout', () => reject());
|
|
95
104
|
request.on('cancelled', () => reject());
|
|
96
|
-
request.on('end', () => resolve(
|
|
105
|
+
request.on('end', () => resolve(response));
|
|
97
106
|
request.on('message', (err, msg) => {
|
|
98
107
|
if (err)
|
|
99
108
|
return reject(err);
|
|
100
|
-
|
|
109
|
+
response = msg;
|
|
101
110
|
});
|
|
102
111
|
request.send();
|
|
103
112
|
});
|
package/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qDAAsC;AACtC
|
|
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.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dns"
|
|
@@ -30,37 +30,37 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@commitlint/cli": "^16.2.
|
|
33
|
+
"@commitlint/cli": "^16.2.3",
|
|
34
34
|
"@commitlint/config-conventional": "^16.2.1",
|
|
35
35
|
"@types/hostile": "^1.3.0",
|
|
36
36
|
"@types/jest": "^27.4.1",
|
|
37
37
|
"@types/ms": "^0.7.31",
|
|
38
38
|
"@types/node": "14",
|
|
39
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
40
|
-
"@typescript-eslint/parser": "^5.
|
|
41
|
-
"eslint": "^8.
|
|
39
|
+
"@typescript-eslint/eslint-plugin": "^5.15.0",
|
|
40
|
+
"@typescript-eslint/parser": "^5.15.0",
|
|
41
|
+
"eslint": "^8.11.0",
|
|
42
42
|
"husky": "4",
|
|
43
43
|
"jest": "^27.5.1",
|
|
44
44
|
"npm-run-all": "^4.1.5",
|
|
45
45
|
"rimraf": "^3.0.2",
|
|
46
46
|
"standard-version": "^9.3.2",
|
|
47
47
|
"ts-jest": "^27.1.3",
|
|
48
|
-
"tsconfig-paths": "^3.
|
|
48
|
+
"tsconfig-paths": "^3.14.0",
|
|
49
49
|
"tscpaths": "^0.0.9",
|
|
50
50
|
"typescript": "^4.6.2"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@blackglory/errors": "^2.2.
|
|
54
|
-
"@blackglory/go": "^0.
|
|
55
|
-
"@blackglory/types": "^0.
|
|
53
|
+
"@blackglory/errors": "^2.2.1",
|
|
54
|
+
"@blackglory/go": "^1.0.0",
|
|
55
|
+
"@blackglory/types": "^1.0.0",
|
|
56
56
|
"chalk": "^4.1.2",
|
|
57
57
|
"chokidar": "^3.5.3",
|
|
58
|
-
"commander": "^9.
|
|
59
|
-
"extra-logger": "^0.6.
|
|
60
|
-
"extra-promise": "^0.
|
|
58
|
+
"commander": "^9.1.0",
|
|
59
|
+
"extra-logger": "^0.6.5",
|
|
60
|
+
"extra-promise": "^1.0.1",
|
|
61
61
|
"hostile": "^1.3.3",
|
|
62
62
|
"ms": "^2.1.3",
|
|
63
63
|
"native-node-dns": "^0.7.6",
|
|
64
|
-
"return-style": "^0.
|
|
64
|
+
"return-style": "^1.0.0"
|
|
65
65
|
}
|
|
66
66
|
}
|