import { connect } from "node:net"; /** * Typische Ports für den optionalen Portscanner, gemäß Spezifikation. */ export const TYPICAL_PORTS = [80, 443, 3000, 3001, 5000, 5001, 8080, 8123, 9000, 9443]; /** * Prüft per TCP-Connect, ob ein Port offen ist. Kein Protokoll-Handshake, * nur "kann eine Verbindung aufgebaut werden" – schnell und protokollunabhängig. */ export function isPortOpen(host: string, port: number, timeoutMs = 800): Promise { return new Promise((resolve) => { const socket = connect({ host, port, timeout: timeoutMs }); const finish = (result: boolean) => { socket.removeAllListeners(); socket.destroy(); resolve(result); }; socket.once("connect", () => finish(true)); socket.once("timeout", () => finish(false)); socket.once("error", () => finish(false)); }); }