UNPKG

async-snmp

Version:

A lightweight wrapper for the Node.js net-snmp library

46 lines (37 loc) 1.19 kB
/** Configuration for SNMPv3 user authentication and privacy */ import { AuthProtocols, createV3Session, PrivProtocols, SecurityLevel, Session, type User } from "net-snmp"; class SnmpSession { private defaultUser: User = { name: "admin", level: SecurityLevel.authPriv, authProtocol: AuthProtocols.sha, authKey: "public", privProtocol: PrivProtocols.aes, privKey: "public" }; private sessions: Record<string, Session> = {}; constructor(config?: User) { if (config) { this.defaultUser = config; } } getSession(ip: string, userConfig?: User, options?: any): Session { if (!this.sessions[ip]) { this.sessions[ip] = createV3Session(ip, userConfig || this.defaultUser, options); } return this.sessions[ip]; } closeSession(ip: string) { if (this.sessions[ip]) { this.sessions[ip].close(); delete this.sessions[ip]; } } closeAllSessions() { for (const session of Object.values(this.sessions)) { session.close(); } this.sessions = {}; } } export const snmpSessionManager = new SnmpSession(process.env.SNMP_USER_CONFIG ? JSON.parse(process.env.SNMP_USER_CONFIG) : undefined);