@mridang/webhint-hint-plumbline 0.14.1 → 0.15.0

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.
@@ -32,7 +32,10 @@ export default defineHint({
32
32
  onMailDomain(context, async (mail) => {
33
33
  const notFound = [];
34
34
  const invalid = [];
35
- for (const host of mail.hosts) {
35
+ // Every mail server is looked up at once, and so is every one of its
36
+ // addresses: each lookup is two round trips to a web service. The lines
37
+ // keep the order of the servers and addresses.
38
+ const lines = await Promise.all(mail.hosts.map(async (host) => {
36
39
  const addresses = new Set();
37
40
  for (const type of ['A', 'AAAA']) {
38
41
  try {
@@ -47,24 +50,28 @@ export default defineHint({
47
50
  // A failed lookup leaves that family unchecked.
48
51
  }
49
52
  }
50
- for (const ip of addresses) {
53
+ return Promise.all([...addresses].map(async (ip) => {
51
54
  try {
52
55
  const result = await rpki.client.check(ip);
53
56
  if (result.asn === null) {
54
57
  // Not routed: there is nothing to validate.
55
- continue;
58
+ return null;
56
59
  }
57
60
  const line = `${host} ${ip} ${result.prefix ?? ''} AS${result.asn}`.replace(/ +/gu, ' ');
58
- if (result.status === 'invalid') {
59
- invalid.push(line);
60
- }
61
- else if (result.status === 'unknown') {
62
- notFound.push(line);
63
- }
61
+ return { line, status: result.status };
64
62
  }
65
63
  catch {
66
64
  // The validation service is unavailable for this address.
65
+ return null;
67
66
  }
67
+ }));
68
+ }));
69
+ for (const found of lines.flat()) {
70
+ if (found?.status === 'invalid') {
71
+ invalid.push(found.line);
72
+ }
73
+ else if (found?.status === 'unknown') {
74
+ notFound.push(found.line);
68
75
  }
69
76
  }
70
77
  if (notFound.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"mail-rpki.js","sourceRoot":"","sources":["../../../src/hints/email/mail-rpki.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mail-rpki.js","sourceRoot":"","sources":["../../../src/hints/email/mail-rpki.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { type HintDefinition } from '../../core/define-hint.js';
2
2
  import { type TlsSite } from '../tls/on-tls-site.js';
3
- /** What a mail TLS hint adds to the shared defaults. */
4
3
  interface MailTlsHintSpec {
5
4
  id: string;
6
5
  name: string;
@@ -13,17 +13,27 @@ import { MAIL_SUBJECT } from '../tls/on-tls-site.js';
13
13
  */
14
14
  function onMailTls(context, check) {
15
15
  onMailDomain(context, async (mail) => {
16
- for (const host of mail.hosts) {
16
+ // The mail servers are tested at once, not one after another: a session with a mail
17
+ // server takes seconds to open and a check opens many. What each says is kept and
18
+ // reported in the order of the servers.
19
+ const said = await Promise.all(mail.hosts.map(async (host) => {
17
20
  const target = mailTargetFor(host);
21
+ const reports = [];
18
22
  await check({
19
23
  target,
20
24
  subject: MAIL_SUBJECT,
21
- report: (message, codeSnippet, severity = Severity.error) => mail.report(`${host}: ${message}`, { severity, codeSnippet }),
22
- couldNotTest: (reason) => mail.report(`${host}: Could not test: ${reason}.`, {
25
+ report: (message, codeSnippet, severity = Severity.error) => reports.push(() => mail.report(`${host}: ${message}`, { severity, codeSnippet })),
26
+ couldNotTest: (reason) => reports.push(() => mail.report(`${host}: Could not test: ${reason}.`, {
23
27
  severity: Severity.hint,
24
28
  codeSnippet: `${target.host}:${target.port}`,
25
- }),
29
+ })),
26
30
  });
31
+ return reports;
32
+ }));
33
+ for (const reports of said) {
34
+ for (const report of reports) {
35
+ report();
36
+ }
27
37
  }
28
38
  });
29
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"on-mail-tls.js","sourceRoot":"","sources":["../../../src/hints/email/on-mail-tls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EACL,QAAQ,EACR,UAAU,GAEX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAC;AAEnE;;;;;;;GAOG;AACH,SAAS,SAAS,CAChB,OAAoB,EACpB,KAA8C;IAE9C,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,KAAK,CAAC;gBACV,MAAM;gBACN,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;gBAC/D,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,qBAAqB,MAAM,GAAG,EAAE;oBACjD,QAAQ,EAAE,QAAQ,CAAC,IAAI;oBACvB,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;iBAC7C,CAAC;aACL,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,OAAO,UAAU,CAAC;QAChB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC;QACtC,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE,oBAAoB;aACjC;SACF;QACD,KAAK,CAAC,OAAO;YACX,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"on-mail-tls.js","sourceRoot":"","sources":["../../../src/hints/email/on-mail-tls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EACL,QAAQ,EACR,UAAU,GAEX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAC;AAEnE;;;;;;;GAOG;AACH,SAAS,SAAS,CAChB,OAAoB,EACpB,KAA8C;IAE9C,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACnC,oFAAoF;QACpF,kFAAkF;QAClF,wCAAwC;QACxC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC;gBACV,MAAM;gBACN,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAC1D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAChB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAC9D;gBACH,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAChB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,qBAAqB,MAAM,GAAG,EAAE;oBACjD,QAAQ,EAAE,QAAQ,CAAC,IAAI;oBACvB,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;iBAC7C,CAAC,CACH;aACJ,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CACH,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,OAAO,UAAU,CAAC;QAChB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC;QACtC,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE,oBAAoB;aACjC;SACF;QACD,KAAK,CAAC,OAAO;YACX,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -11,7 +11,6 @@ export interface IpRpki {
11
11
  }
12
12
  /** Every A and AAAA address of the given hosts with its RPKI result. */
13
13
  export declare function collectRpki(hosts: string[]): Promise<IpRpki[]>;
14
- /** The addresses of the site's own web server. */
15
14
  export declare const webRpki: (host: string) => Promise<IpRpki[]>;
16
15
  /** The addresses of the site's name servers. */
17
16
  export declare function nsRpki(host: string): Promise<IpRpki[]>;
@@ -7,24 +7,21 @@ import { rpki } from '../../core/rpki.js';
7
7
  import { findNameservers, ipv4Addresses, ipv6Addresses } from './dns-util.js';
8
8
  /** Every A and AAAA address of the given hosts with its RPKI result. */
9
9
  export async function collectRpki(hosts) {
10
- const out = [];
11
- for (const host of hosts) {
10
+ // Every host is looked up at once, and so is every one of its addresses: the
11
+ // validator is a web service, a lookup is two round trips, and a mail setup
12
+ // has a dozen addresses, so one after another is the slowest part of a scan.
13
+ // The answers keep the order of the hosts and addresses.
14
+ const perHost = await Promise.all(hosts.map(async (host) => {
12
15
  const ips = [
13
16
  ...(await ipv4Addresses(host)),
14
17
  ...(await ipv6Addresses(host)),
15
18
  ];
16
- for (const ip of ips) {
17
- try {
18
- out.push({ host, ip, result: await rpki.client.check(ip) });
19
- }
20
- catch {
21
- // A validator that is down is not the site's fault: skip the address.
22
- }
23
- }
24
- }
25
- return out;
19
+ return Promise.all(ips.map((ip) => rpki.client.check(ip).then((result) => ({ host, ip, result }),
20
+ // A validator that is down is not the site's fault: skip the address.
21
+ () => null)));
22
+ }));
23
+ return perHost.flat().filter((entry) => entry !== null);
26
24
  }
27
- /** The addresses of the site's own web server. */
28
25
  export const webRpki = (host) => collectRpki([host]);
29
26
  /** The addresses of the site's name servers. */
30
27
  export async function nsRpki(host) {
@@ -1 +1 @@
1
- {"version":3,"file":"rpki.js","sourceRoot":"","sources":["../../../src/lib/network/rpki.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpki.js","sourceRoot":"","sources":["../../../src/lib/network/rpki.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mridang/webhint-hint-plumbline",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "prepack": "tsc --build",