fcdns 0.3.15 → 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,8 @@
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
+
5
7
  ### [0.3.15](https://github.com/BlackGlory/fcdns/compare/v0.3.14...v0.3.15) (2022-04-16)
6
8
 
7
9
 
package/README.md CHANGED
@@ -39,7 +39,7 @@ fcdns \
39
39
  ```
40
40
 
41
41
  ## 原理
42
- ![流程图](./docs/flow-chart.svg)
42
+ ![流程图](./res/flow-chart.svg)
43
43
 
44
44
  ## 必要条件
45
45
  使用fcdns需要指定3个服务器地址, 1份IP地址白名单, 1份主机名白名单.
@@ -174,17 +174,14 @@ fcdns的内存缓存受V8引擎的实现限制, 且缓存是只增不减的.
174
174
  如果有非常大量完全不同域名的查询, 则内存缓存可能导致内存占用增加, 但在大部分场景下应该无需担心.
175
175
 
176
176
  ## 针对fcdns的攻击
177
- ### DNS服务器黑名单/白名单
177
+ ### 以黑名单/白名单形式污染DNS服务器
178
178
  禁止向非DNS服务器发送DNS数据包将会破坏fcdns的投毒测试功能.
179
179
 
180
- ### 禁止ping
181
- 禁止发送ping(echo request)或丢弃reply(echo reply)将会破坏fcdns的投毒测试功能.
182
-
183
- ### 无差别污染
180
+ ### 无差别污染主机名
184
181
  劫持所有DNS响应将会破坏fcdns的投毒测试功能.
185
182
 
186
- ### 无规律/间歇性投毒
187
- 无规律/间歇性投毒将会使fcdns生成错误的缓存记录.
183
+ ### 随机投毒
184
+ 随机投毒将会使fcdns生成错误的缓存记录.
188
185
 
189
- ## 未实现的功能
190
- - [ ] 复用相同域名的并行查询
186
+ ### 禁止ping
187
+ 禁止发送ping(echo request)或丢弃reply(echo reply)将会破坏fcdns的投毒测试功能.
package/lib/router.js CHANGED
@@ -1,13 +1,15 @@
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
14
  constructor(cacheFilename, cache, looseMode, tester, untrustedResolver, ipWhitelist, hostnameWhitelist, hostnameBlacklist) {
13
15
  this.cacheFilename = cacheFilename;
@@ -18,6 +20,21 @@ class Router {
18
20
  this.ipWhitelist = ipWhitelist;
19
21
  this.hostnameWhitelist = hostnameWhitelist;
20
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
+ });
21
38
  }
22
39
  static async create(options) {
23
40
  const tester = options.tester;
@@ -31,43 +48,34 @@ class Router {
31
48
  await (0, map_file_1.writeMapFile)(cacheFilename, cache);
32
49
  return new Router(cacheFilename, cache, looseMode, tester, untrustedResolver, ipWhitelist, hostnameWhitelist, hostnameBlacklist);
33
50
  }
34
- async getTarget(hostname) {
51
+ async routeByLocal(hostname) {
35
52
  if (this.inHostnameWhitelist(hostname))
36
- return Target.Untrusted;
53
+ return RouteResult.UntrustedServer;
37
54
  if (this.inHostnameBlacklist(hostname))
38
- return Target.Trusted;
39
- if (this.cache.has(hostname)) {
55
+ return RouteResult.TrustedServer;
56
+ if (this.cache.has(hostname))
40
57
  return this.cache.get(hostname);
41
- }
42
- else {
43
- if (this.looseMode) {
44
- queueMicrotask(() => this.getTargetWithoutCache(hostname));
45
- return Target.Untrusted;
46
- }
47
- else {
48
- return await this.getTargetWithoutCache(hostname);
49
- }
50
- }
58
+ return null;
51
59
  }
52
- async getTargetWithoutCache(hostname) {
60
+ async routeByNetwork(hostname) {
53
61
  if (await this.tester.isPoisoned(hostname)) {
54
- this.setCache(hostname, Target.Trusted);
55
- return Target.Trusted;
62
+ this.setCache(hostname, RouteResult.TrustedServer);
63
+ return RouteResult.TrustedServer;
56
64
  }
57
65
  else {
58
66
  const addresses = await (0, resolve_a_1.resolveA)(this.untrustedResolver, hostname);
59
67
  if (addresses.length > 0) {
60
68
  if (this.inIPWhitelist(addresses)) {
61
- this.setCache(hostname, Target.Untrusted);
62
- return Target.Untrusted;
69
+ this.setCache(hostname, RouteResult.UntrustedServer);
70
+ return RouteResult.UntrustedServer;
63
71
  }
64
72
  else {
65
- this.setCache(hostname, Target.Trusted);
66
- return Target.Trusted;
73
+ this.setCache(hostname, RouteResult.TrustedServer);
74
+ return RouteResult.TrustedServer;
67
75
  }
68
76
  }
69
77
  else {
70
- return Target.Trusted;
78
+ return RouteResult.Unresolved;
71
79
  }
72
80
  }
73
81
  }
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,iBAA+B,EAC/B,iBAA+B;QAP/B,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,CAAc;QAC/B,sBAAiB,GAAjB,iBAAiB,CAAc;IACtC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAQnB;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,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,CACf,aAAa,EACb,KAAK,EACL,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,CAClB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC,SAAS,CAAA;QAC/D,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC,OAAO,CAAA;QAE7D,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,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;AAlGD,wBAkGC"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA8C;AAC9C,qDAAsC;AAEtC,+CAAkD;AAElD,4CAAmB;AACnB,kDAAyB;AACzB,iDAA2C;AAC3C,iDAAmD;AAUnD,SAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,IAAI,EACJ,MAAM,EACN,aAAa,EACb,eAAe,EACK;IACpB,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;IAEjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE/C,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAA;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,IAAA,kCAAmB,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAChF,IAAI,GAAG,EAAE;YACP,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9E,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAChD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;SAClB;QACD,MAAM,CAAC,KAAK,CACV,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,oBAAW,CAAC,MAAO,CAAC,EAAE,EAC1D,UAAU,CAAC,SAAS,CAAC,CACtB,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,oBAAW,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAA;QACrF,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,MAAM,IAAA,kCAAmB,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;QAChF,IAAI,GAAG,EAAE;YACP,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9E,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAChD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;SAClB;QACD,MAAM,CAAC,IAAI,CACT,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,yBAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAC/D,UAAU,CAAC,SAAS,CAAC,CACtB,CAAA;QAED,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,QAAS,CAAC,MAAM,CAAC,KAAK,CAAA;QACzC,GAAG,CAAC,MAAM,GAAG,QAAS,CAAC,MAAM,CAAA;QAC7B,GAAG,CAAC,SAAS,GAAG,QAAS,CAAC,SAAS,CAAA;QAEnC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAChD,GAAG,CAAC,IAAI,EAAE,CAAA;IACZ,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAlDD,kCAkDC;AAED,MAAM,OAAO,GAAG,IAAA,mCAAmB,EACjC,UAAU,MAAmB,EAAE,QAAuB;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,QAAqB,CAAA;QACzB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC1B,QAAQ;YACR,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM,CAAC,IAAI;gBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,KAAK;aACZ;YACD,OAAO,EAAE,IAAA,YAAE,EAAC,KAAK,CAAC;YAClB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACzD,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,IAAI,QAAQ,EAAE;gBACZ,OAAO,CAAC,QAAQ,CAAC,CAAA;aAClB;iBAAM;gBACL,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;aACjC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjC,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;YAC3B,QAAQ,GAAG,GAAG,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC,CACF,CAAA;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;AAC/B,CAAC"}
@@ -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.15",
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.19.0",
42
- "@typescript-eslint/parser": "^5.19.0",
43
- "eslint": "^8.13.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.1.0",
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.2.0",
62
- "extra-filesystem": "^0.4.2",
63
- "extra-logger": "^0.6.6",
64
- "extra-promise": "^1.0.2",
61
+ "commander": "^9.4.0",
62
+ "extra-filesystem": "^0.4.4",
63
+ "extra-logger": "^0.6.8",
64
+ "extra-promise": "^2.3.0",
65
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
  }