fcdns 0.3.13 → 0.3.16

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 CHANGED
@@ -2,6 +2,27 @@
2
2
 
3
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
4
 
5
+ ### [0.3.16](https://github.com/BlackGlory/fcdns/compare/v0.3.15...v0.3.16) (2022-07-25)
6
+
7
+ ### [0.3.15](https://github.com/BlackGlory/fcdns/compare/v0.3.14...v0.3.15) (2022-04-16)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * hostname blacklist ([0e21a21](https://github.com/BlackGlory/fcdns/commit/0e21a214c13633ee4a3b2fe6353ae97d72f3fa65))
13
+
14
+ ### [0.3.14](https://github.com/BlackGlory/fcdns/compare/v0.3.13...v0.3.14) (2022-04-16)
15
+
16
+
17
+ ### Features
18
+
19
+ * add hostname blacklist ([f196de1](https://github.com/BlackGlory/fcdns/commit/f196de13e742935ccdf4f67e1b54f73b057e15e8))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * make hostname list files optional ([ab2352f](https://github.com/BlackGlory/fcdns/commit/ab2352ff55dd05f947fa8eedd9dc6706e36c67ad))
25
+
5
26
  ### [0.3.13](https://github.com/BlackGlory/fcdns/compare/v0.3.12...v0.3.13) (2022-04-01)
6
27
 
7
28
  ### [0.3.12](https://github.com/BlackGlory/fcdns/compare/v0.3.11...v0.3.12) (2022-03-26)
package/README.md CHANGED
@@ -21,6 +21,7 @@ Options:
21
21
  --port <port> (default: "53")
22
22
  --ip-whitelist <filename> (default: "ip-whitelist.txt")
23
23
  --hostname-whitelist <filename> (default: "hostname-whitelist.txt")
24
+ --hostname-blacklist <filename> (default: "hostname-blacklist.txt")
24
25
  --route-cache <filename> (default: "route.txt")
25
26
  --test-cache <filename> (default: "test.txt")
26
27
  --test-timeout <ms> (default: "200")
@@ -38,7 +39,7 @@ fcdns \
38
39
  ```
39
40
 
40
41
  ## 原理
41
- ![流程图](./docs/flow-chart.svg)
42
+ ![流程图](./res/flow-chart.svg)
42
43
 
43
44
  ## 必要条件
44
45
  使用fcdns需要指定3个服务器地址, 1份IP地址白名单, 1份主机名白名单.
@@ -114,6 +115,9 @@ IPv6地址范围示例:
114
115
  ### 主机名白名单(hostname whitelist)
115
116
  主机名白名单用于强制使某些主机名在解析时使用不可信DNS服务器, 其优先级高于fcdns里的其他规则.
116
117
 
118
+ ### 主机名黑名单(hostname blacklist)
119
+ 主机名白名单用于强制使某些主机名在解析时使用可信DNS服务器, 其优先级低于白名单, 高于fcdns里的其他规则.
120
+
117
121
  #### 文件格式
118
122
  白名单是一个文本文件, 以行为分隔符存储主机名模式.
119
123
  主机名模式使用`*`作为通配符, 可以匹配任意个字符.
@@ -170,17 +174,14 @@ fcdns的内存缓存受V8引擎的实现限制, 且缓存是只增不减的.
170
174
  如果有非常大量完全不同域名的查询, 则内存缓存可能导致内存占用增加, 但在大部分场景下应该无需担心.
171
175
 
172
176
  ## 针对fcdns的攻击
173
- ### DNS服务器黑名单/白名单
177
+ ### 以黑名单/白名单形式污染DNS服务器
174
178
  禁止向非DNS服务器发送DNS数据包将会破坏fcdns的投毒测试功能.
175
179
 
176
- ### 禁止ping
177
- 禁止发送ping(echo request)或丢弃reply(echo reply)将会破坏fcdns的投毒测试功能.
178
-
179
- ### 无差别污染
180
+ ### 无差别污染主机名
180
181
  劫持所有DNS响应将会破坏fcdns的投毒测试功能.
181
182
 
182
- ### 无规律/间歇性投毒
183
- 无规律/间歇性投毒将会使fcdns生成错误的缓存记录.
183
+ ### 随机投毒
184
+ 随机投毒将会使fcdns生成错误的缓存记录.
184
185
 
185
- ## 未实现的功能
186
- - [ ] 复用相同域名的并行查询
186
+ ### 禁止ping
187
+ 禁止发送ping(echo request)或丢弃reply(echo reply)将会破坏fcdns的投毒测试功能.
package/lib/cli.js CHANGED
@@ -5,7 +5,7 @@ const commander_1 = require("commander");
5
5
  const server_1 = require("./server");
6
6
  const router_1 = require("./router");
7
7
  const ip_whitelist_1 = require("./ip-whitelist");
8
- const hostname_whitelist_1 = require("./hostname-whitelist");
8
+ const hostname_list_1 = require("./hostname-list");
9
9
  const tester_1 = require("./tester");
10
10
  const create_dns_resolver_1 = require("./utils/create-dns-resolver");
11
11
  const errors_1 = require("@blackglory/errors");
@@ -21,6 +21,7 @@ commander_1.program
21
21
  .option('--port <port>', '', '53')
22
22
  .option('--ip-whitelist <filename>', '', 'ip-whitelist.txt')
23
23
  .option('--hostname-whitelist <filename>', '', 'hostname-whitelist.txt')
24
+ .option('--hostname-blacklist <filename>', '', 'hostname-blacklist.txt')
24
25
  .option('--route-cache <filename>', '', 'route.txt')
25
26
  .option('--test-cache <filename>', '', 'test.txt')
26
27
  .option('--test-timeout <ms>', '', '200')
@@ -35,12 +36,14 @@ commander_1.program
35
36
  });
36
37
  const untrustedResolver = (0, create_dns_resolver_1.createDNSResolver)(options.untrustedServer);
37
38
  const ipWhitelist = await ip_whitelist_1.IPWhitelist.create(options.ipWhitelistFilename);
38
- const hostnameWhitelist = await hostname_whitelist_1.HostnameWhitelist.create(options.hostnameWhitelistFilename);
39
+ const hostnameWhitelist = await hostname_list_1.HostnameList.create(options.hostnameWhitelistFilename);
40
+ const hostnameBlacklist = await hostname_list_1.HostnameList.create(options.hostnameBlacklistFilename);
39
41
  const router = await router_1.Router.create({
40
42
  tester,
41
43
  untrustedResolver,
42
44
  ipWhitelist,
43
45
  hostnameWhitelist,
46
+ hostnameBlacklist,
44
47
  cacheFilename: options.routeCacheFilename,
45
48
  looseMode: options.looseMode
46
49
  });
@@ -68,6 +71,7 @@ function getOptions() {
68
71
  const port = Number.parseInt(opts.port, 10);
69
72
  const ipWhitelistFilename = opts.ipWhitelist;
70
73
  const hostnameWhitelistFilename = opts.hostnameWhitelist;
74
+ const hostnameBlacklistFilename = opts.hostnameBlacklist;
71
75
  const routeCacheFilename = opts.routeCache;
72
76
  const testCacheFilename = opts.testCache;
73
77
  (0, errors_1.assert)(/^\d+$/.test(opts.testTimeout), 'The parameter test timeout must be integer');
@@ -81,6 +85,7 @@ function getOptions() {
81
85
  port,
82
86
  ipWhitelistFilename,
83
87
  hostnameWhitelistFilename,
88
+ hostnameBlacklistFilename,
84
89
  routeCacheFilename,
85
90
  testCacheFilename,
86
91
  testTimeout,
package/lib/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HostnameList = void 0;
4
+ const hostname_list_file_1 = require("./utils/hostname-list-file");
5
+ const extra_filesystem_1 = require("extra-filesystem");
6
+ class HostnameList {
7
+ constructor(patterns) {
8
+ this.patterns = patterns;
9
+ }
10
+ static async create(filename) {
11
+ await (0, extra_filesystem_1.ensureFile)(filename);
12
+ const patterns = await (0, hostname_list_file_1.readHostnameListFile)(filename);
13
+ return new HostnameList(patterns);
14
+ }
15
+ includes(hostname) {
16
+ return this.patterns.some(x => x.match(hostname));
17
+ }
18
+ }
19
+ exports.HostnameList = HostnameList;
20
+ //# sourceMappingURL=hostname-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostname-list.js","sourceRoot":"","sources":["../src/hostname-list.ts"],"names":[],"mappings":";;;AAAA,kEAAgE;AAEhE,uDAA6C;AAE7C,MAAa,YAAY;IACvB,YAA4B,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;IAE3D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAgB;QAClC,MAAM,IAAA,6BAAU,EAAC,QAAQ,CAAC,CAAA;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAA,yCAAoB,EAAC,QAAQ,CAAC,CAAA;QAErD,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnD,CAAC;CACF;AAbD,oCAaC"}
package/lib/router.js CHANGED
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Router = exports.Target = void 0;
3
+ exports.Router = exports.RouteResult = void 0;
4
4
  const map_file_1 = require("./utils/map-file");
5
5
  const resolve_a_1 = require("./utils/resolve-a");
6
- var Target;
7
- (function (Target) {
8
- Target[Target["Untrusted"] = 0] = "Untrusted";
9
- Target[Target["Trusted"] = 1] = "Trusted";
10
- })(Target = exports.Target || (exports.Target = {}));
6
+ const extra_promise_1 = require("extra-promise");
7
+ var RouteResult;
8
+ (function (RouteResult) {
9
+ RouteResult[RouteResult["UntrustedServer"] = 0] = "UntrustedServer";
10
+ RouteResult[RouteResult["TrustedServer"] = 1] = "TrustedServer";
11
+ RouteResult[RouteResult["Unresolved"] = 2] = "Unresolved";
12
+ })(RouteResult = exports.RouteResult || (exports.RouteResult = {}));
11
13
  class Router {
12
- constructor(cacheFilename, cache, looseMode, tester, untrustedResolver, ipWhitelist, hostnameWhitelist) {
14
+ constructor(cacheFilename, cache, looseMode, tester, untrustedResolver, ipWhitelist, hostnameWhitelist, hostnameBlacklist) {
13
15
  this.cacheFilename = cacheFilename;
14
16
  this.cache = cache;
15
17
  this.looseMode = looseMode;
@@ -17,53 +19,63 @@ class Router {
17
19
  this.untrustedResolver = untrustedResolver;
18
20
  this.ipWhitelist = ipWhitelist;
19
21
  this.hostnameWhitelist = hostnameWhitelist;
22
+ this.hostnameBlacklist = hostnameBlacklist;
23
+ this.route = (0, extra_promise_1.reusePendingPromise)(async (hostname) => {
24
+ const result = await this.routeByLocal(hostname);
25
+ if (result) {
26
+ return result;
27
+ }
28
+ else {
29
+ if (this.looseMode) {
30
+ queueMicrotask(() => this.routeByNetwork(hostname));
31
+ return RouteResult.UntrustedServer;
32
+ }
33
+ else {
34
+ return await this.routeByNetwork(hostname);
35
+ }
36
+ }
37
+ });
20
38
  }
21
39
  static async create(options) {
22
40
  const tester = options.tester;
23
41
  const untrustedResolver = options.untrustedResolver;
24
42
  const ipWhitelist = options.ipWhitelist;
25
43
  const hostnameWhitelist = options.hostnameWhitelist;
44
+ const hostnameBlacklist = options.hostnameBlacklist;
26
45
  const cacheFilename = options.cacheFilename;
27
46
  const looseMode = options.looseMode;
28
47
  const cache = await (0, map_file_1.readMapFile)(cacheFilename);
29
48
  await (0, map_file_1.writeMapFile)(cacheFilename, cache);
30
- return new Router(cacheFilename, cache, looseMode, tester, untrustedResolver, ipWhitelist, hostnameWhitelist);
49
+ return new Router(cacheFilename, cache, looseMode, tester, untrustedResolver, ipWhitelist, hostnameWhitelist, hostnameBlacklist);
31
50
  }
32
- async getTarget(hostname) {
51
+ async routeByLocal(hostname) {
33
52
  if (this.inHostnameWhitelist(hostname))
34
- return Target.Untrusted;
35
- if (this.cache.has(hostname)) {
53
+ return RouteResult.UntrustedServer;
54
+ if (this.inHostnameBlacklist(hostname))
55
+ return RouteResult.TrustedServer;
56
+ if (this.cache.has(hostname))
36
57
  return this.cache.get(hostname);
37
- }
38
- else {
39
- if (this.looseMode) {
40
- queueMicrotask(() => this.getTargetWithoutCache(hostname));
41
- return Target.Untrusted;
42
- }
43
- else {
44
- return await this.getTargetWithoutCache(hostname);
45
- }
46
- }
58
+ return null;
47
59
  }
48
- async getTargetWithoutCache(hostname) {
60
+ async routeByNetwork(hostname) {
49
61
  if (await this.tester.isPoisoned(hostname)) {
50
- this.setCache(hostname, Target.Trusted);
51
- return Target.Trusted;
62
+ this.setCache(hostname, RouteResult.TrustedServer);
63
+ return RouteResult.TrustedServer;
52
64
  }
53
65
  else {
54
66
  const addresses = await (0, resolve_a_1.resolveA)(this.untrustedResolver, hostname);
55
67
  if (addresses.length > 0) {
56
68
  if (this.inIPWhitelist(addresses)) {
57
- this.setCache(hostname, Target.Untrusted);
58
- return Target.Untrusted;
69
+ this.setCache(hostname, RouteResult.UntrustedServer);
70
+ return RouteResult.UntrustedServer;
59
71
  }
60
72
  else {
61
- this.setCache(hostname, Target.Trusted);
62
- return Target.Trusted;
73
+ this.setCache(hostname, RouteResult.TrustedServer);
74
+ return RouteResult.TrustedServer;
63
75
  }
64
76
  }
65
77
  else {
66
- return Target.Trusted;
78
+ return RouteResult.Unresolved;
67
79
  }
68
80
  }
69
81
  }
@@ -73,6 +85,9 @@ class Router {
73
85
  inHostnameWhitelist(hostname) {
74
86
  return this.hostnameWhitelist.includes(hostname);
75
87
  }
88
+ inHostnameBlacklist(hostname) {
89
+ return this.hostnameBlacklist.includes(hostname);
90
+ }
76
91
  setCache(hostname, result) {
77
92
  this.cache.set(hostname, result);
78
93
  (0, map_file_1.appendMapFile)(this.cacheFilename, hostname, result);
package/lib/router.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":";;;AAIA,8CAA0E;AAC1E,gDAA2C;AAE3C,IAAY,MAGX;AAHD,WAAY,MAAM;IAChB,6CAAa,CAAA;IACb,yCAAW,CAAA;AACb,CAAC,EAHW,MAAM,GAAN,cAAM,KAAN,cAAM,QAGjB;AAED,MAAa,MAAM;IACjB,YACU,aAAqB,EACrB,KAA0B,EAC1B,SAAkB,EAClB,MAAc,EACd,iBAA+B,EAC/B,WAAwB,EACxB,iBAAoC;QANpC,kBAAa,GAAb,aAAa,CAAQ;QACrB,UAAK,GAAL,KAAK,CAAqB;QAC1B,cAAS,GAAT,SAAS,CAAS;QAClB,WAAM,GAAN,MAAM,CAAQ;QACd,sBAAiB,GAAjB,iBAAiB,CAAc;QAC/B,gBAAW,GAAX,WAAW,CAAa;QACxB,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC3C,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAOnB;QACC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC7B,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;QACnD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAEnC,MAAM,KAAK,GAAG,MAAM,IAAA,sBAAW,EAAiB,aAAa,CAAC,CAAA;QAG9D,MAAM,IAAA,uBAAY,EAAC,aAAa,EAAE,KAAK,CAAC,CAAA;QAExC,OAAO,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAA;IAC/G,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC,SAAS,CAAA;QAE/D,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAA;SACjC;aAAM;YACL,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAC1D,OAAO,MAAM,CAAC,SAAS,CAAA;aACxB;iBAAM;gBACL,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;aAClD;SACF;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAC1C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YACvC,OAAO,MAAM,CAAC,OAAO,CAAA;SACtB;aAAM;YACL,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAQ,EAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;YAClE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;oBACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;oBACzC,OAAO,MAAM,CAAC,SAAS,CAAA;iBACxB;qBAAM;oBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;oBACvC,OAAO,MAAM,CAAC,OAAO,CAAA;iBACtB;aACF;iBAAM;gBACL,OAAO,MAAM,CAAC,OAAO,CAAA;aACtB;SACF;IACH,CAAC;IAEO,aAAa,CAAC,SAAmB;QACvC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAEO,QAAQ,CAAC,QAAgB,EAAE,MAAc;QAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAChC,IAAA,wBAAa,EAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACrD,CAAC;CACF;AAjFD,wBAiFC"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/lib/server.js CHANGED
@@ -33,6 +33,7 @@ const return_style_1 = require("return-style");
33
33
  const ms_1 = __importDefault(require("ms"));
34
34
  const chalk_1 = __importDefault(require("chalk"));
35
35
  const record_types_1 = require("./record-types");
36
+ const extra_promise_1 = require("extra-promise");
36
37
  function startServer({ logger, port, router, trustedServer, untrustedServer }) {
37
38
  const server = dns.createServer();
38
39
  server.on('error', console.error);
@@ -42,14 +43,14 @@ function startServer({ logger, port, router, trustedServer, untrustedServer }) {
42
43
  res.header.rcode = dns.consts.NAME_TO_RCODE.SERVFAIL;
43
44
  const startTime = Date.now();
44
45
  const question = req.question[0];
45
- var [err, target] = await (0, return_style_1.getErrorResultAsync)(() => router.getTarget(question.name));
46
+ var [err, result] = await (0, return_style_1.getErrorResultAsync)(() => router.route(question.name));
46
47
  if (err) {
47
48
  logger.error(`${formatHostname(question.name)} ${err}`, getElapsed(startTime));
48
49
  logger.trace(`response: ${JSON.stringify(res)}`);
49
50
  return res.send();
50
51
  }
51
- logger.debug(`${formatHostname(question.name)} ${router_1.Target[target]}`, getElapsed(startTime));
52
- const server = target === router_1.Target.Trusted ? trustedServer : untrustedServer;
52
+ logger.debug(`${formatHostname(question.name)} ${router_1.RouteResult[result]}`, getElapsed(startTime));
53
+ const server = result === router_1.RouteResult.TrustedServer ? trustedServer : untrustedServer;
53
54
  var [err, response] = await (0, return_style_1.getErrorResultAsync)(() => resolve(server, question));
54
55
  if (err) {
55
56
  logger.error(`${formatHostname(question.name)} ${err}`, getElapsed(startTime));
@@ -63,10 +64,10 @@ function startServer({ logger, port, router, trustedServer, untrustedServer }) {
63
64
  logger.trace(`response: ${JSON.stringify(res)}`);
64
65
  res.send();
65
66
  });
66
- return server.serve(port);
67
+ server.serve(port);
67
68
  }
68
69
  exports.startServer = startServer;
69
- function resolve(server, question) {
70
+ const resolve = (0, extra_promise_1.reusePendingPromise)(function (server, question) {
70
71
  return new Promise((resolve, reject) => {
71
72
  let response;
72
73
  const request = dns.Request({
@@ -97,7 +98,7 @@ function resolve(server, question) {
97
98
  });
98
99
  request.send();
99
100
  });
100
- }
101
+ });
101
102
  function formatHostname(hostname) {
102
103
  return chalk_1.default.cyan(hostname);
103
104
  }
package/lib/server.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-file.js","sourceRoot":"","sources":["../../src/utils/map-file.ts"],"names":[],"mappings":";;;AAAA,0EAA8E;AAC9E,2BAAmC;AACnC,uDAA6C;AAEtC,KAAK,UAAU,WAAW,CAC/B,QAAgB;IAEhB,MAAM,IAAA,6BAAU,EAAC,QAAQ,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD,MAAM,OAAO,GAA8B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1B,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC;AAVD,kCAUC;AAEM,KAAK,UAAU,YAAY,CAAO,QAAgB,EAAE,GAAc;IACvE,MAAM,IAAI,GAAG,IAAI,2BAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC3B,OAAO,EAAE;SACT,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,aAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;AAC3C,CAAC;AAPD,oCAOC;AAEM,KAAK,UAAU,aAAa,CAAO,QAAgB,EAAE,GAAM,EAAE,KAAQ;IAC1E,MAAM,aAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACpE,CAAC;AAFD,sCAEC"}
1
+ {"version":3,"file":"map-file.js","sourceRoot":"","sources":["../../src/utils/map-file.ts"],"names":[],"mappings":";;;AAAA,0EAA8E;AAC9E,2BAAmC;AACnC,uDAA6C;AAEtC,KAAK,UAAU,WAAW,CAC/B,QAAgB;IAEhB,MAAM,IAAA,6BAAU,EAAC,QAAQ,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD,MAAM,OAAO,GAA8B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1B,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC;AAVD,kCAUC;AAEM,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,GAAc;IAEd,MAAM,IAAI,GAAG,IAAI,2BAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC3B,OAAO,EAAE;SACT,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,aAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;AAC3C,CAAC;AAVD,oCAUC;AAEM,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,GAAM,EACN,KAAQ;IAER,MAAM,aAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACpE,CAAC;AAND,sCAMC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fcdns",
3
- "version": "0.3.13",
3
+ "version": "0.3.16",
4
4
  "description": "DNS relay server with fact-checking.",
5
5
  "keywords": [
6
6
  "dns"
@@ -32,42 +32,42 @@
32
32
  }
33
33
  },
34
34
  "devDependencies": {
35
- "@commitlint/cli": "^16.2.3",
36
- "@commitlint/config-conventional": "^16.2.1",
35
+ "@commitlint/cli": "^17.0.3",
36
+ "@commitlint/config-conventional": "^17.0.3",
37
37
  "@types/jest": "^27.4.1",
38
38
  "@types/ms": "^0.7.31",
39
39
  "@types/node": "14",
40
40
  "@types/ping": "^0.4.1",
41
- "@typescript-eslint/eslint-plugin": "^5.17.0",
42
- "@typescript-eslint/parser": "^5.17.0",
43
- "eslint": "^8.12.0",
41
+ "@typescript-eslint/eslint-plugin": "^5.30.7",
42
+ "@typescript-eslint/parser": "^5.30.7",
43
+ "eslint": "^8.20.0",
44
44
  "husky": "4",
45
- "internet-number": "^3.0.1",
45
+ "internet-number": "^3.0.2",
46
46
  "jest": "^27.5.1",
47
47
  "npm-run-all": "^4.1.5",
48
48
  "rimraf": "^3.0.2",
49
- "standard-version": "^9.3.2",
49
+ "standard-version": "^9.5.0",
50
50
  "ts-jest": "^27.1.4",
51
51
  "tsconfig-paths": "^3.14.1",
52
52
  "tscpaths": "^0.0.9",
53
- "typescript": "^4.6.3"
53
+ "typescript": "^4.7.4"
54
54
  },
55
55
  "dependencies": {
56
56
  "@blackglory/errors": "^2.2.1",
57
- "@blackglory/go": "^1.0.0",
58
- "@blackglory/types": "^1.0.1",
57
+ "@blackglory/go": "^1.1.1",
58
+ "@blackglory/types": "^1.2.1",
59
59
  "address-range": "^0.2.9",
60
60
  "chalk": "^4.1.2",
61
- "commander": "^9.1.0",
62
- "extra-filesystem": "^0.4.2",
63
- "extra-logger": "^0.6.6",
64
- "extra-promise": "^1.0.2",
65
- "iterable-operator": "^1.0.1",
61
+ "commander": "^9.4.0",
62
+ "extra-filesystem": "^0.4.4",
63
+ "extra-logger": "^0.6.8",
64
+ "extra-promise": "^2.3.0",
65
+ "iterable-operator": "^1.1.0",
66
66
  "ms": "^2.1.3",
67
67
  "native-node-dns": "0.7.6",
68
68
  "native-node-dns-packet": "0.1.5",
69
69
  "patch-package": "^6.4.7",
70
- "ping": "^0.4.1",
70
+ "ping": "^0.4.2",
71
71
  "return-style": "^1.0.0"
72
72
  }
73
73
  }