@hclsoftware/secagent
Version:
IAST agent
83 lines (67 loc) • 2.47 kB
JavaScript
//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