From ee10d0ba10ebb134ef4e6d75a229af59c6d7d86f Mon Sep 17 00:00:00 2001 From: Nico Schett Date: Wed, 26 Jun 2024 11:10:34 +0200 Subject: [PATCH] save --- src/services/network-scanner.service.ts | 79 +++++++++---------------- 1 file changed, 29 insertions(+), 50 deletions(-) diff --git a/src/services/network-scanner.service.ts b/src/services/network-scanner.service.ts index 87261f5..aebd175 100644 --- a/src/services/network-scanner.service.ts +++ b/src/services/network-scanner.service.ts @@ -1,11 +1,8 @@ import { logger } from "@getcronit/pylon"; import ip from "ip"; -import { - connect as connectInsecure, - createServer as createInsecureServer, -} from "net"; -import { connect as connectSecure } from "tls"; +import * as http from "http"; +import * as https from "https"; type NetworkScannerDiscovery = Array<{ host: string; @@ -56,7 +53,7 @@ export class NetworkScanner { console.log("Scanning networks..."); - console.log("RES", await Promise.all(promises)); + await Promise.all(promises); console.log("Network scan complete"); @@ -75,56 +72,38 @@ export class NetworkScanner { private async checkPort(host: string, port: number): Promise { const connect = (isSecure: boolean) => { return new Promise((resolve) => { - const socket = isSecure - ? connectSecure({ - host, - port, - rejectUnauthorized: false, - }) - : connectInsecure({ - host, - port, - }); - - let timeoutId: Timer; - - socket.setTimeout(1000); - - socket.on(isSecure ? "secureConnect" : "connect", () => { - this.results[host].push({ port, isSecure }); - console.log("Res", this.results[host]); - - socket.destroy(); - resolve(true); - clearTimeout(timeoutId); - console.log(`Port ${port} is open on ${host}`); - }); - - socket.on("timeout", () => { - console.log("Timeout", host, port); - socket.destroy(); + const request = (isSecure ? https : http).request( + { + host, + port, + method: "HEAD", // Use HEAD method for faster response without full content + timeout: 1000, // Timeout in milliseconds + rejectUnauthorized: false, // Ignore SSL certificate errors + }, + (response) => { + // If the response is received, the port is open + console.log(`Port ${port} is open on ${host}`); + this.results[host].push({ port, isSecure }); + resolve(true); + } + ); + + request.on("error", (error) => { + // If an error occurs or the connection times out, the port is closed + console.error(`Port ${port} is closed on ${host}: ${error.message}`); resolve(false); - clearTimeout(timeoutId); - - console.log(`Port ${port} is closed on ${host}`); }); - socket.on("error", (msg) => { - console.log("Error", msg, host, port); - socket.destroy(); + request.on("timeout", () => { + // If the request times out, consider the port closed + console.error( + `Timeout occurred while testing port ${port} on ${host}` + ); + request.abort(); resolve(false); - clearTimeout(timeoutId); - - console.log(`Port ${port} is closed on ${host}`); }); - // Set the timeoutId to clear the setTimeout on connection or error - timeoutId = setTimeout(() => { - console.log(`Timeout occurred (setTimeout) on ${host}:${port}`); - socket.end(); - socket.destroy(); - resolve(false); - }, 5000); + request.end(); }); };