@grnsft/if
Version:
Impact Framework
101 lines • 10.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.osInfo = void 0;
const os_1 = require("os");
const helpers_1 = require("../../common/util/helpers");
/**
* Executes `lsb_release -a` command in terminal.
*
* ```
* Distributor ID: Ubuntu
* Description: Ubuntu 22.04.4 LTS
* Release: 22.04
* Codename: jammy
* ```
*
* Parses os and os-version from the response.
*/
const getLinuxInfo = async () => {
const { stdout } = await (0, helpers_1.execFilePromise)('lsb_release', ['-id']);
const parseLinuxVersion = (lsbReleaseResponse) => {
const regex = /^Distributor ID:\t(.+)\nDescription:\t([^ ]+) +([^ ]+) +(.+)$/m;
const match = lsbReleaseResponse.match(regex);
return {
os: match ? match[1] : (0, os_1.platform)(),
'os-version': match ? `${match[3]} ${match[4]}` : (0, os_1.release)(),
};
};
return parseLinuxVersion(stdout);
};
/**
* Executes in CMD `powershell -Command "Get-WmiObject Win32_OperatingSystem | Format-List -Property Caption, Version, BuildNumber"` command.
*
* ```
* Caption : Microsoft Windows 11 Enterprise\r
* Version : 10.0.22631\r
* BuildNumber : 22631\r
* ```
*
* Parses os and os-version from the response.
*/
const getWindowsInfo = async () => {
const { stdout } = await (0, helpers_1.execFilePromise)('powershell', [
'-Command',
'Get-WmiObject Win32_OperatingSystem | Format-List -Property Caption, Version, BuildNumber',
]);
const parseWindowsInfo = (systemInfoResponse) => {
const regex = /^Caption\s*:\s*(.*)\r?\nVersion\s*:\s*(.*)\r?\nBuildNumber\s*:\s*(.*)$/m;
const match = systemInfoResponse.match(regex);
return {
os: match ? match[1] : (0, os_1.platform)(),
'os-version': match ? `${match[2]} N/A Build ${match[3]}` : (0, os_1.release)(),
};
};
return parseWindowsInfo(stdout);
};
/**
* Executes `sw_vers` command in terminal.
*
* ```
* ProductName: macOS
* ProductVersion: 14.3.1
* BuildVersion: 23D60
* ```
*
* Parses os and os version from the response.
*/
const getMacVersion = async () => {
const { stdout } = await (0, helpers_1.execFilePromise)('sw_vers');
const parseMacInfo = (swVersResponse) => {
const productNameRegex = /ProductName:\s*(.+)/;
const productVersionRegex = /ProductVersion:\s*(.+)/;
const nameMatch = swVersResponse.match(productNameRegex);
const versionMatch = swVersResponse.match(productVersionRegex);
return {
os: nameMatch ? nameMatch[1].trim() : (0, os_1.platform)(),
'os-version': versionMatch ? versionMatch[1].trim() : (0, os_1.release)(),
};
};
return parseMacInfo(stdout);
};
/**
* Finds operating system information like name and version.
*/
const osInfo = async () => {
const osKind = (0, os_1.platform)();
switch (osKind) {
case 'darwin':
return getMacVersion();
case 'linux':
return getLinuxInfo();
case 'win32':
return getWindowsInfo();
default:
return {
os: osKind,
'os-version': (0, os_1.release)(),
};
}
};
exports.osInfo = osInfo;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MtY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vdXRpbC9vcy1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFxQztBQUVyQyx1REFBMEQ7QUFFMUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFlBQVksR0FBRyxLQUFLLElBQUksRUFBRTtJQUM5QixNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxJQUFBLHlCQUFlLEVBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUvRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsa0JBQTBCLEVBQUUsRUFBRTtRQUN2RCxNQUFNLEtBQUssR0FDVCxnRUFBZ0UsQ0FBQztRQUNuRSxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxhQUFRLEdBQUU7WUFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsWUFBTyxHQUFFO1NBQzVELENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxLQUFLLElBQUksRUFBRTtJQUNoQyxNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxJQUFBLHlCQUFlLEVBQUMsWUFBWSxFQUFFO1FBQ25ELFVBQVU7UUFDViwyRkFBMkY7S0FDNUYsQ0FBQyxDQUFDO0lBRUgsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGtCQUEwQixFQUFFLEVBQUU7UUFDdEQsTUFBTSxLQUFLLEdBQ1QseUVBQXlFLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLE9BQU87WUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsYUFBUSxHQUFFO1lBQ2pDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFBLFlBQU8sR0FBRTtTQUN0RSxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDL0IsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLE1BQU0sSUFBQSx5QkFBZSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sWUFBWSxHQUFHLENBQUMsY0FBc0IsRUFBRSxFQUFFO1FBQzlDLE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQUM7UUFDL0MsTUFBTSxtQkFBbUIsR0FBRyx3QkFBd0IsQ0FBQztRQUVyRCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRS9ELE9BQU87WUFDTCxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsYUFBUSxHQUFFO1lBQ2hELFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSxZQUFPLEdBQUU7U0FDaEUsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBQSxhQUFRLEdBQUUsQ0FBQztJQUUxQixRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssUUFBUTtZQUNYLE9BQU8sYUFBYSxFQUFFLENBQUM7UUFDekIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxZQUFZLEVBQUUsQ0FBQztRQUN4QixLQUFLLE9BQU87WUFDVixPQUFPLGNBQWMsRUFBRSxDQUFDO1FBQzFCO1lBQ0UsT0FBTztnQkFDTCxFQUFFLEVBQUUsTUFBTTtnQkFDVixZQUFZLEVBQUUsSUFBQSxZQUFPLEdBQUU7YUFDeEIsQ0FBQztLQUNMO0FBQ0gsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsTUFBTSxVQWdCakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlbGVhc2UsIHBsYXRmb3JtfSBmcm9tICdvcyc7XG5cbmltcG9ydCB7ZXhlY0ZpbGVQcm9taXNlfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9oZWxwZXJzJztcblxuLyoqXG4gKiBFeGVjdXRlcyBgbHNiX3JlbGVhc2UgLWFgIGNvbW1hbmQgaW4gdGVybWluYWwuXG4gKlxuICogYGBgXG4gKiBEaXN0cmlidXRvciBJRDogVWJ1bnR1XG4gKiBEZXNjcmlwdGlvbjogICAgVWJ1bnR1IDIyLjA0LjQgTFRTXG4gKiBSZWxlYXNlOiAgICAgICAgMjIuMDRcbiAqIENvZGVuYW1lOiAgICAgICBqYW1teVxuICogYGBgXG4gKlxuICogUGFyc2VzIG9zIGFuZCBvcy12ZXJzaW9uIGZyb20gdGhlIHJlc3BvbnNlLlxuICovXG5jb25zdCBnZXRMaW51eEluZm8gPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlY0ZpbGVQcm9taXNlKCdsc2JfcmVsZWFzZScsIFsnLWlkJ10pO1xuXG4gIGNvbnN0IHBhcnNlTGludXhWZXJzaW9uID0gKGxzYlJlbGVhc2VSZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVnZXggPVxuICAgICAgL15EaXN0cmlidXRvciBJRDpcXHQoLispXFxuRGVzY3JpcHRpb246XFx0KFteIF0rKSArKFteIF0rKSArKC4rKSQvbTtcbiAgICBjb25zdCBtYXRjaCA9IGxzYlJlbGVhc2VSZXNwb25zZS5tYXRjaChyZWdleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3M6IG1hdGNoID8gbWF0Y2hbMV0gOiBwbGF0Zm9ybSgpLFxuICAgICAgJ29zLXZlcnNpb24nOiBtYXRjaCA/IGAke21hdGNoWzNdfSAke21hdGNoWzRdfWAgOiByZWxlYXNlKCksXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gcGFyc2VMaW51eFZlcnNpb24oc3Rkb3V0KTtcbn07XG5cbi8qKlxuICogRXhlY3V0ZXMgaW4gQ01EIGBwb3dlcnNoZWxsIC1Db21tYW5kIFwiR2V0LVdtaU9iamVjdCBXaW4zMl9PcGVyYXRpbmdTeXN0ZW0gfCBGb3JtYXQtTGlzdCAtUHJvcGVydHkgQ2FwdGlvbiwgVmVyc2lvbiwgQnVpbGROdW1iZXJcImAgY29tbWFuZC5cbiAqXG4gKiBgYGBcbiAqIENhcHRpb24gICAgIDogTWljcm9zb2Z0IFdpbmRvd3MgMTEgRW50ZXJwcmlzZVxcclxuICogVmVyc2lvbiAgICAgOiAxMC4wLjIyNjMxXFxyXG4gKiBCdWlsZE51bWJlciA6IDIyNjMxXFxyXG4gKiBgYGBcbiAqXG4gKiBQYXJzZXMgb3MgYW5kIG9zLXZlcnNpb24gZnJvbSB0aGUgcmVzcG9uc2UuXG4gKi9cbmNvbnN0IGdldFdpbmRvd3NJbmZvID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWNGaWxlUHJvbWlzZSgncG93ZXJzaGVsbCcsIFtcbiAgICAnLUNvbW1hbmQnLFxuICAgICdHZXQtV21pT2JqZWN0IFdpbjMyX09wZXJhdGluZ1N5c3RlbSB8IEZvcm1hdC1MaXN0IC1Qcm9wZXJ0eSBDYXB0aW9uLCBWZXJzaW9uLCBCdWlsZE51bWJlcicsXG4gIF0pO1xuXG4gIGNvbnN0IHBhcnNlV2luZG93c0luZm8gPSAoc3lzdGVtSW5mb1Jlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZWdleCA9XG4gICAgICAvXkNhcHRpb25cXHMqOlxccyooLiopXFxyP1xcblZlcnNpb25cXHMqOlxccyooLiopXFxyP1xcbkJ1aWxkTnVtYmVyXFxzKjpcXHMqKC4qKSQvbTtcbiAgICBjb25zdCBtYXRjaCA9IHN5c3RlbUluZm9SZXNwb25zZS5tYXRjaChyZWdleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3M6IG1hdGNoID8gbWF0Y2hbMV0gOiBwbGF0Zm9ybSgpLFxuICAgICAgJ29zLXZlcnNpb24nOiBtYXRjaCA/IGAke21hdGNoWzJdfSBOL0EgQnVpbGQgJHttYXRjaFszXX1gIDogcmVsZWFzZSgpLFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIHBhcnNlV2luZG93c0luZm8oc3Rkb3V0KTtcbn07XG5cbi8qKlxuICogRXhlY3V0ZXMgYHN3X3ZlcnNgIGNvbW1hbmQgaW4gdGVybWluYWwuXG4gKlxuICogYGBgXG4gKiBQcm9kdWN0TmFtZTogICAgICBtYWNPU1xuICogUHJvZHVjdFZlcnNpb246ICAgMTQuMy4xXG4gKiBCdWlsZFZlcnNpb246ICAgICAyM0Q2MFxuICogYGBgXG4gKlxuICogUGFyc2VzIG9zIGFuZCBvcyB2ZXJzaW9uIGZyb20gdGhlIHJlc3BvbnNlLlxuICovXG5jb25zdCBnZXRNYWNWZXJzaW9uID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWNGaWxlUHJvbWlzZSgnc3dfdmVycycpO1xuXG4gIGNvbnN0IHBhcnNlTWFjSW5mbyA9IChzd1ZlcnNSZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdE5hbWVSZWdleCA9IC9Qcm9kdWN0TmFtZTpcXHMqKC4rKS87XG4gICAgY29uc3QgcHJvZHVjdFZlcnNpb25SZWdleCA9IC9Qcm9kdWN0VmVyc2lvbjpcXHMqKC4rKS87XG5cbiAgICBjb25zdCBuYW1lTWF0Y2ggPSBzd1ZlcnNSZXNwb25zZS5tYXRjaChwcm9kdWN0TmFtZVJlZ2V4KTtcbiAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSBzd1ZlcnNSZXNwb25zZS5tYXRjaChwcm9kdWN0VmVyc2lvblJlZ2V4KTtcblxuICAgIHJldHVybiB7XG4gICAgICBvczogbmFtZU1hdGNoID8gbmFtZU1hdGNoWzFdLnRyaW0oKSA6IHBsYXRmb3JtKCksXG4gICAgICAnb3MtdmVyc2lvbic6IHZlcnNpb25NYXRjaCA/IHZlcnNpb25NYXRjaFsxXS50cmltKCkgOiByZWxlYXNlKCksXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gcGFyc2VNYWNJbmZvKHN0ZG91dCk7XG59O1xuXG4vKipcbiAqIEZpbmRzIG9wZXJhdGluZyBzeXN0ZW0gaW5mb3JtYXRpb24gbGlrZSBuYW1lIGFuZCB2ZXJzaW9uLlxuICovXG5leHBvcnQgY29uc3Qgb3NJbmZvID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBvc0tpbmQgPSBwbGF0Zm9ybSgpO1xuXG4gIHN3aXRjaCAob3NLaW5kKSB7XG4gICAgY2FzZSAnZGFyd2luJzpcbiAgICAgIHJldHVybiBnZXRNYWNWZXJzaW9uKCk7XG4gICAgY2FzZSAnbGludXgnOlxuICAgICAgcmV0dXJuIGdldExpbnV4SW5mbygpO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHJldHVybiBnZXRXaW5kb3dzSW5mbygpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvczogb3NLaW5kLFxuICAgICAgICAnb3MtdmVyc2lvbic6IHJlbGVhc2UoKSxcbiAgICAgIH07XG4gIH1cbn07XG4iXX0=