源码快照 @ 2026-09-02 (source-only, 剔除非源码素材)
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { probeTls } from "@openwork/behaviors";
|
||||
import { diagnoseTls, type TlsVersionFacts } from "@openwork/matchers";
|
||||
|
||||
function usage(): never {
|
||||
throw new Error("Usage: node evals/scripts/diagnose.mts <origin> [--insecure-ca <pemPath>]");
|
||||
}
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
const origin = args[0];
|
||||
if (!origin) usage();
|
||||
let ca: string | undefined;
|
||||
for (let index = 1; index < args.length; index += 1) {
|
||||
if (args[index] !== "--insecure-ca") usage();
|
||||
const pemPath = args[index + 1];
|
||||
if (!pemPath) usage();
|
||||
ca = process.getBuiltinModule("node:fs").readFileSync(pemPath, "utf8");
|
||||
index += 1;
|
||||
}
|
||||
|
||||
const url = new URL(origin);
|
||||
const tls = await probeTls({
|
||||
host: url.hostname,
|
||||
port: Number(url.port || 443),
|
||||
servername: url.hostname,
|
||||
ca,
|
||||
});
|
||||
function printVersion(label: string, facts: TlsVersionFacts): void {
|
||||
const handshake = facts.handshakeOk ? "ok" : (facts.stalled ? "STALLED" : "FAILED");
|
||||
const chain = facts.handshakeOk
|
||||
? (facts.chainVerified ? "verified" : `UNTRUSTED (${facts.errorCode ?? "unauthorized"})`)
|
||||
: "not checked";
|
||||
console.log(`${label}: handshake ${handshake} / chain ${chain}`);
|
||||
}
|
||||
printVersion("TLS 1.2", tls.tls12);
|
||||
printVersion("TLS 1.3", tls.tls13);
|
||||
const findings = [diagnoseTls(tls)];
|
||||
for (const finding of findings) {
|
||||
console.log(`${finding.ok ? "ok" : "FAIL"} tls ${finding.code}`);
|
||||
if (!finding.ok) {
|
||||
console.log(` ${finding.summary}`);
|
||||
console.log(` Action: ${finding.action}`);
|
||||
}
|
||||
}
|
||||
console.log(JSON.stringify({ origin: url.origin, tls, findings }, null, 2));
|
||||
if (findings.some((finding) => !finding.ok)) process.exitCode = 1;
|
||||
Reference in New Issue
Block a user