generated from Dicken/dickendock
Commit 5: Scanner-Engine (DNS, Portscan, Titel/Favicon, Softwareerkennung, FritzBox TR-064)
This commit is contained in:
26
apps/backend/src/scanner/ports.ts
Normal file
26
apps/backend/src/scanner/ports.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
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<boolean> {
|
||||
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));
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user