// scaneaza-local.mjs : scanerul AERE de pregatire post-cuantica (cloud-gateway/readiness-service.mjs, functia scaneazaAdresa, // fara garda de adrese private: tinta e 127.0.0.1, aleasa de noi) pe serverul de proba al unei retete. Tipareste verdictul, rezumatul si // constatarile, exact ce ar vedea un client al scanerului pe serverul lui dupa aplicarea retetei. import fs from 'node:fs'; import { pathToFileURL, fileURLToPath } from 'node:url'; const port = Number(process.argv[2] || 8445); // 2026-10-19: scanerul se ia relativ la acest fisier, in ambele asezari (cloud-gateway/readiness-service.mjs in arborele de dezvoltare, // readiness/readiness-service.mjs in copia publica aere-quantum), sau din AERE_READINESS_SERVICE; prima forma purta calea absoluta de pe // laptopul de lucru, publicata asa in aere-quantum (D-541). const CAND = [new URL('../../../readiness-service.mjs', import.meta.url), new URL('../../../readiness/readiness-service.mjs', import.meta.url)].find((u) => fs.existsSync(fileURLToPath(u))); const SCANER = process.env.AERE_READINESS_SERVICE ? pathToFileURL(process.env.AERE_READINESS_SERVICE).href : CAND && CAND.href; if (!SCANER) { console.error('scaneaza-local.mjs: scanerul de pregatire (readiness-service.mjs) nu se gaseste nici in arborele de dezvoltare, nici in copia publica; da calea in AERE_READINESS_SERVICE'); process.exit(2); } const { scaneazaAdresa } = await import(SCANER).catch((e) => { console.error('scaneaza-local.mjs: scanerul de pregatire nu s-a putut incarca (' + e.message + ')'); process.exit(2); }); const r = await scaneazaAdresa('proba.local', { address: '127.0.0.1', family: 4 }, { port, jurnal: false }); console.log(JSON.stringify({ score: r.score, verdict: r.verdict, summary: r.summary, findings: (r.findings || []).map((f) => f.id + ':' + f.severity), error: r.error, detail: r.detail }, null, 1).replace(/\n\s*/g, ' '));