fix(core): Improve logging and error handling by introducing custom error classes and a global logging interface while refactoring network diagnostics methods.

This commit is contained in:
2025-04-28 15:30:08 +00:00
parent bc19c21949
commit d6c0af35fa
6 changed files with 115 additions and 61 deletions

View File

@ -1,6 +1,7 @@
import * as plugins from './smartnetwork.plugins.js';
import { CloudflareSpeed } from './smartnetwork.classes.cloudflarespeed.js';
import { getLogger } from './logging.js';
/**
* SmartNetwork simplifies actions within the network
@ -37,11 +38,7 @@ export class SmartNetwork {
// test IPv4 space
const ipv4Test = net.createServer();
ipv4Test.once('error', (err: any) => {
if (err.code !== 'EADDRINUSE') {
doneIpV4.resolve(false);
return;
}
ipv4Test.once('error', () => {
doneIpV4.resolve(false);
});
ipv4Test.once('listening', () => {
@ -56,11 +53,7 @@ export class SmartNetwork {
// test IPv6 space
const ipv6Test = net.createServer();
ipv6Test.once('error', function (err: any) {
if (err.code !== 'EADDRINUSE') {
doneIpV6.resolve(false);
return;
}
ipv6Test.once('error', () => {
doneIpV6.resolve(false);
});
ipv6Test.once('listening', () => {
@ -87,14 +80,15 @@ export class SmartNetwork {
const domainPart = domainArg.split(':')[0];
const port = portArg ? portArg : parseInt(domainArg.split(':')[1], 10);
plugins.isopen(domainPart, port, (response: any) => {
console.log(response);
if (response[port.toString()].isOpen) {
done.resolve(true);
} else {
done.resolve(false);
}
});
plugins.isopen(
domainPart,
port,
(response: Record<string, { isOpen: boolean }>) => {
getLogger().debug(response);
const portInfo = response[port.toString()];
done.resolve(Boolean(portInfo?.isOpen));
},
);
const result = await done.promise;
return result;
}
@ -110,7 +104,7 @@ export class SmartNetwork {
}> {
const defaultGatewayName = await plugins.systeminformation.networkInterfaceDefault();
if (!defaultGatewayName) {
console.log('Cannot determine default gateway');
getLogger().warn?.('Cannot determine default gateway');
return null;
}
const gateways = await this.getGateways();