From 2a6003e78f030f527035fa77cbf600261e4fb403 Mon Sep 17 00:00:00 2001 From: Nawaz Dhandala Date: Thu, 29 Jan 2026 08:28:23 +0000 Subject: [PATCH] refactor: Add type annotations for functions in SnmpOidEditor and SnmpMonitor --- .../Monitor/SnmpMonitor/SnmpOidEditor.tsx | 14 ++-- Probe/Utils/Monitors/Monitor.ts | 3 +- .../Monitors/MonitorTypes/SnmpMonitor.ts | 74 ++++++++++--------- 3 files changed, 51 insertions(+), 40 deletions(-) diff --git a/Dashboard/src/Components/Form/Monitor/SnmpMonitor/SnmpOidEditor.tsx b/Dashboard/src/Components/Form/Monitor/SnmpMonitor/SnmpOidEditor.tsx index d103e7cc68..ea35330bbd 100644 --- a/Dashboard/src/Components/Form/Monitor/SnmpMonitor/SnmpOidEditor.tsx +++ b/Dashboard/src/Components/Form/Monitor/SnmpMonitor/SnmpOidEditor.tsx @@ -34,7 +34,7 @@ const SnmpOidEditor: FunctionComponent = ( setOids(props.value || []); }, [props.value]); - const addOid = (): void => { + const addOid: () => void = (): void => { const newOids: Array = [ ...oids, { oid: "", name: "", description: "" }, @@ -43,26 +43,28 @@ const SnmpOidEditor: FunctionComponent = ( props.onChange(newOids); }; - const removeOid = (index: number): void => { - const newOids: Array = oids.filter((_, i) => { + const removeOid: (index: number) => void = (index: number): void => { + const newOids: Array = oids.filter((_: SnmpOid, i: number) => { return i !== index; }); setOids(newOids); props.onChange(newOids); }; - const updateOid = ( + const updateOid: ( index: number, field: keyof SnmpOid, value: string, - ): void => { + ) => void = (index: number, field: keyof SnmpOid, value: string): void => { const newOids: Array = [...oids]; newOids[index] = { ...newOids[index]!, [field]: value }; setOids(newOids); props.onChange(newOids); }; - const addTemplate = (template: SnmpOid): void => { + const addTemplate: (template: SnmpOid) => void = ( + template: SnmpOid, + ): void => { const newOids: Array = [...oids, template]; setOids(newOids); props.onChange(newOids); diff --git a/Probe/Utils/Monitors/Monitor.ts b/Probe/Utils/Monitors/Monitor.ts index 1ddf6ec643..2c70595ad3 100644 --- a/Probe/Utils/Monitors/Monitor.ts +++ b/Probe/Utils/Monitors/Monitor.ts @@ -12,6 +12,7 @@ import WebsiteMonitor, { } from "./MonitorTypes/WebsiteMonitor"; import SnmpMonitor from "./MonitorTypes/SnmpMonitor"; import SnmpMonitorResponse from "Common/Types/Monitor/SnmpMonitor/SnmpMonitorResponse"; +import MonitorStepSnmpMonitor from "Common/Types/Monitor/MonitorStepSnmpMonitor"; import HTTPMethod from "Common/Types/API/HTTPMethod"; import URL from "Common/Types/API/URL"; import OneUptimeDate from "Common/Types/Date"; @@ -452,7 +453,7 @@ export default class MonitorUtil { return result; } - const snmpConfig = monitorStep.data.snmpMonitor; + const snmpConfig: MonitorStepSnmpMonitor = monitorStep.data.snmpMonitor; if (!snmpConfig.hostname) { result.failureCause = "SNMP hostname not specified"; diff --git a/Probe/Utils/Monitors/MonitorTypes/SnmpMonitor.ts b/Probe/Utils/Monitors/MonitorTypes/SnmpMonitor.ts index 94b3c449fa..98c805d94c 100644 --- a/Probe/Utils/Monitors/MonitorTypes/SnmpMonitor.ts +++ b/Probe/Utils/Monitors/MonitorTypes/SnmpMonitor.ts @@ -11,6 +11,8 @@ import SnmpDataType from "Common/Types/Monitor/SnmpMonitor/SnmpDataType"; import SnmpSecurityLevel from "Common/Types/Monitor/SnmpMonitor/SnmpSecurityLevel"; import SnmpAuthProtocol from "Common/Types/Monitor/SnmpMonitor/SnmpAuthProtocol"; import SnmpPrivProtocol from "Common/Types/Monitor/SnmpMonitor/SnmpPrivProtocol"; +import SnmpOid from "Common/Types/Monitor/SnmpMonitor/SnmpOid"; +import SnmpV3Auth from "Common/Types/Monitor/SnmpMonitor/SnmpV3Auth"; import snmp from "net-snmp"; export interface SnmpQueryOptions { @@ -164,7 +166,7 @@ export default class SnmpMonitor { ); } - const oids: Array = config.oids.map((oid) => { + const oids: Array = config.oids.map((oid: SnmpOid) => { return oid.oid; }); @@ -174,39 +176,45 @@ export default class SnmpMonitor { return; } - session.get(oids, (error, varbinds) => { - if (error || !varbinds) { - session.close(); - reject(error || new Error("No varbinds returned")); - return; - } - - const oidResponses: Array = []; - - for (let i = 0; i < varbinds.length; i++) { - const varbind: snmp.Varbind = varbinds[i]!; - const configOid = config.oids[i]; - - if (snmp.isVarbindError(varbind)) { - oidResponses.push({ - oid: varbind.oid, - name: configOid?.name, - value: null, - type: SnmpMonitor.mapSnmpErrorType(varbind.type), - }); - } else { - oidResponses.push({ - oid: varbind.oid, - name: configOid?.name, - value: SnmpMonitor.parseVarbindValue(varbind), - type: SnmpMonitor.mapSnmpDataType(varbind.type), - }); + session.get( + oids, + ( + error: Error | null, + varbinds: Array | undefined, + ) => { + if (error || !varbinds) { + session.close(); + reject(error || new Error("No varbinds returned")); + return; } - } - session.close(); - resolve(oidResponses); - }); + const oidResponses: Array = []; + + for (let i: number = 0; i < varbinds.length; i++) { + const varbind: snmp.Varbind = varbinds[i]!; + const configOid: SnmpOid | undefined = config.oids[i]; + + if (snmp.isVarbindError(varbind)) { + oidResponses.push({ + oid: varbind.oid, + name: configOid?.name, + value: null, + type: SnmpMonitor.mapSnmpErrorType(varbind.type), + }); + } else { + oidResponses.push({ + oid: varbind.oid, + name: configOid?.name, + value: SnmpMonitor.parseVarbindValue(varbind), + type: SnmpMonitor.mapSnmpDataType(varbind.type), + }); + } + } + + session.close(); + resolve(oidResponses); + }, + ); } catch (err) { reject(err as Error); } @@ -215,7 +223,7 @@ export default class SnmpMonitor { } private static buildV3User(config: MonitorStepSnmpMonitor): snmp.User { - const v3Auth = config.snmpV3Auth!; + const v3Auth: SnmpV3Auth = config.snmpV3Auth!; const user: snmp.User = { name: v3Auth.username, level: SnmpMonitor.mapSecurityLevel(v3Auth.securityLevel),