round48: masscan/httpx-Fehlermeldungen im Scan-Log sichtbar machen, masscan-Status nur bei vollstaendigem Portscan anzeigen

This commit is contained in:
2026-07-26 08:29:11 +02:00
parent 2e15669098
commit 28fedb2572
4 changed files with 90 additions and 6 deletions

View File

@@ -21,6 +21,33 @@ import {
} from "../scanJobs.js";
import type { Device } from "@launchpad/shared";
/**
* Formatiert den masscan/httpx-Status für die Scan-Log-Zeile. Zeigt bei
* masscan "nicht relevant" statt "nicht genutzt", wenn es bei diesem Scan
* gar nicht versucht wurde (masscan läuft nur beim vollständigen Portscan,
* siehe networkScanner.ts) - und hängt bei echten Fehlschlägen die konkrete
* Fehlermeldung an, statt nur "nicht genutzt/verfügbar" ohne Erklärung.
*/
function formatToolsUsed(toolsUsed: {
masscan: boolean;
masscanAttempted: boolean;
masscanError: string | null;
httpx: boolean;
httpxError: string | null;
}): string {
const masscanPart = !toolsUsed.masscanAttempted
? "masscan: nicht relevant (kein Volltest)"
: toolsUsed.masscan
? "masscan: ✓ genutzt"
: `masscan: ✗ fehlgeschlagen${toolsUsed.masscanError ? ` (${toolsUsed.masscanError})` : " (Grund unbekannt)"}`;
const httpxPart = toolsUsed.httpx
? "httpx: ✓ genutzt"
: `httpx: ✗ fehlgeschlagen${toolsUsed.httpxError ? ` (${toolsUsed.httpxError})` : " (Grund unbekannt)"}`;
return `${masscanPart}, ${httpxPart}`;
}
/**
* Scannt EIN Gerät (Ports, Titel/Favicon, Softwareerkennung) und schreibt die
* Ergebnisse in die Datenbank. Ausgelagert aus der Route, damit sowohl der
@@ -113,7 +140,7 @@ async function performDeviceScan(device: Device, fullScan = false) {
type: "device",
targetId: device.id,
level: "info",
message: `${device.hostname} (${device.ip}): ${discovered.length} Dienst(e) gefunden (Ports: ${ports.join(", ") || "keine"}), ${created} neu, ${updated} aktualisiert${staleServices.length > 0 ? `, ${staleServices.length} nicht mehr gefunden` : ""}${nameChanges.length > 0 ? `, ${nameChanges.length} Namensänderung(en) vorgeschlagen` : ""} [masscan: ${toolsUsed.masscan ? "✓ genutzt" : "nicht genutzt/verfügbar"}, httpx: ${toolsUsed.httpx ? "✓ genutzt" : "nicht genutzt/verfügbar"}]`,
message: `${device.hostname} (${device.ip}): ${discovered.length} Dienst(e) gefunden (Ports: ${ports.join(", ") || "keine"}), ${created} neu, ${updated} aktualisiert${staleServices.length > 0 ? `, ${staleServices.length} nicht mehr gefunden` : ""}${nameChanges.length > 0 ? `, ${nameChanges.length} Namensänderung(en) vorgeschlagen` : ""} [${formatToolsUsed(toolsUsed)}]`,
});
return {