From 44744b77cda9314ffc88c783c465e1ec94a0f092 Mon Sep 17 00:00:00 2001 From: Sebastian Hildebrandt Date: Tue, 19 Jan 2021 22:04:04 +0100 Subject: [PATCH] bsd fixes --- lib/graphics.js | 8 ++++---- lib/processes.js | 2 +- lib/system.js | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/lib/graphics.js b/lib/graphics.js index 507ec64..665a131 100644 --- a/lib/graphics.js +++ b/lib/graphics.js @@ -760,12 +760,12 @@ function graphics(callback) { } } if (_freebsd || _openbsd || _netbsd) { - if (callback) { callback(result); } - resolve(result); + if (callback) { callback(null); } + resolve(null); } if (_sunos) { - if (callback) { callback(result); } - resolve(result); + if (callback) { callback(null); } + resolve(null); } if (_windows) { diff --git a/lib/processes.js b/lib/processes.js index 3561a08..0538e4d 100644 --- a/lib/processes.js +++ b/lib/processes.js @@ -1020,7 +1020,7 @@ function processLoad(proc, callback) { } } - if (_darwin || _linux) { + if (_darwin || _linux || _freebsd || _openbsd || _netbsd) { const params = '-axo pid,pcpu,pmem,comm'; execFile('ps', params.split(' '), { maxBuffer: 1024 * 20000 }, function (error, stdout) { if (!error) { diff --git a/lib/system.js b/lib/system.js index e33664f..3bc64ac 100644 --- a/lib/system.js +++ b/lib/system.js @@ -120,6 +120,29 @@ function system(callback) { util.noop(); } } + if ((_freebsd || _openbsd || _netbsd) && !result.virtualHost) { + try { + const procInfo = execSync('dmidecode -t 4'); + const procLines = procInfo.toString().split('\n'); + const procManufacturer = util.getValue(procLines, 'manufacturer', ':', true); + switch (procManufacturer.toLowerCase()) { + case 'virtualbox': + result.virtualHost = 'VirtualBox'; + break; + case 'vmware': + result.virtualHost = 'VMware'; + break; + case 'kvm': + result.virtualHost = 'KVM'; + break; + case 'bochs': + result.virtualHost = 'bochs'; + break; + } + } catch (e) { + util.noop(); + } + } // detect docker if (fs.existsSync('/.dockerenv') || fs.existsSync('/.dockerinit')) { result.model = 'Docker Container';