generated from Dicken/dickendock
27 lines
854 B
TypeScript
27 lines
854 B
TypeScript
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));
|
||
});
|
||
}
|