UNPKG

@hclsoftware/secagent

Version:

IAST agent

83 lines (67 loc) 2.47 kB
//IASTIGNORE /* * **************************************************** * Licensed Materials - Property of HCL. * (c) Copyright HCL Technologies Ltd. 2017, 2025. * Note to U.S. Government Users *Restricted Rights. * **************************************************** */ const {Component} = require("./Component"); const os = require("os"); const Type= require("./Component").Type const components = new Set() class AppInfo { static init() { AppInfo.addComponentsToAppInfo() } static addComponentsToAppInfo() { const versionObject = process.versions; const nodeVersion = versionObject.node != null ? versionObject.node : ""; const osName = process.platform.origStringIncludes("win") ? "Windows" : process.platform; AppInfo.addComponent(new Component(osName, os.release(), Type.Os)); AppInfo.addComponent(new Component("NodeJS", nodeVersion, Type.Language)); } static addComponent(component) { components.add(component) } static getOlderFieldsJsonString() { let olderAppInfo = ""; const osComponent = AppInfo.getComponentByType(Type.Os) if (osComponent != null) { olderAppInfo += `"osName":"${osComponent.name}-${osComponent.version}",` } const serverComponent = AppInfo.getComponentByType(Type.Server) if (serverComponent != null) { olderAppInfo += `"serverName":"${serverComponent.name}-${serverComponent.version}",` } return olderAppInfo } static getComponentsJsonString() { const newComponents = AppInfo.geComponentsWithNameVersionConcatenated() return JSON.origStringify([...newComponents]) } static geComponentsWithNameVersionConcatenated() { const concatNameVersionComponents = new Set() for (const component of components) { concatNameVersionComponents.add({ name: `${component.name}-${component.version}`, type: `${component.type}` }) } return concatNameVersionComponents } static getComponentByType(type) { return Array.from(components).find(c => c.type === type) } static hasComponent(name) { return [...components].some(component => component.name === name) } } module.exports = AppInfo