added partial SunOS support, system() Raspberry Pi bugfix and extended detection
This commit is contained in:
+13
-2
@@ -631,8 +631,19 @@ function cpuFlags(callback) {
|
||||
});
|
||||
}
|
||||
result = flags.join(' ').trim();
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
if (!result) {
|
||||
exec('cat /proc/cpuinfo', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
result = util.getValue(lines, 'features', ':', true).toLowerCase();
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
} else {
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (_darwin) {
|
||||
|
||||
+1
-1
@@ -148,7 +148,7 @@ function inetLatency(host, callback) {
|
||||
if (line.length > 1) {
|
||||
const parts = line[1].split('/');
|
||||
if (parts.length > 1) {
|
||||
result = parseFloat(parts[1]);
|
||||
result = parseFloat(parts[1].replace(',', '.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -53,11 +53,11 @@ function getDefaultNetworkInterface() {
|
||||
});
|
||||
}
|
||||
}
|
||||
if (_linux || _darwin || _freebsd || _openbsd) {
|
||||
if (_linux || _darwin || _freebsd || _openbsd || _sunos) {
|
||||
let cmd = '';
|
||||
if (_linux) cmd = 'route 2>/dev/null | grep default | awk \'{print $8}\'';
|
||||
if (_darwin) cmd = 'route get 0.0.0.0 2>/dev/null | grep interface: | awk \'{print $2}\'';
|
||||
if (_freebsd || _openbsd) cmd = 'route get 0.0.0.0 | grep interface:';
|
||||
if (_freebsd || _openbsd || _sunos) cmd = 'route get 0.0.0.0 | grep interface:';
|
||||
let result = execSync(cmd);
|
||||
ifacename = result.toString().split('\n')[0];
|
||||
if (ifacename.indexOf(':') > -1) {
|
||||
|
||||
+7
-2
@@ -53,7 +53,7 @@ exports.time = time;
|
||||
function getLogoFile(distro) {
|
||||
distro = distro || '';
|
||||
distro = distro.toLowerCase();
|
||||
let result = 'linux';
|
||||
let result = _platform;
|
||||
if (_windows) {
|
||||
result = 'windows';
|
||||
}
|
||||
@@ -144,6 +144,9 @@ function getLogoFile(distro) {
|
||||
else if (distro.indexOf('ubuntu') !== -1) {
|
||||
result = 'ubuntu';
|
||||
}
|
||||
else if (distro.indexOf('solaris') !== -1) {
|
||||
result = 'solaris';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -229,11 +232,13 @@ function osInfo(callback) {
|
||||
});
|
||||
}
|
||||
if (_sunos) {
|
||||
result.logofile = getLogoFile();
|
||||
result.release = result.kernel;
|
||||
exec('uname -o', function (error, stdout) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
result.distro = lines[0];
|
||||
result.logofile = getLogoFile(result.distro);
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
}
|
||||
if (_windows) {
|
||||
|
||||
+1
-1
@@ -284,7 +284,7 @@ function processes(callback) {
|
||||
checkColumn(5);
|
||||
let rss = parseInt(line.substring(parsedhead[5].from + offset, parsedhead[5].to + offset2));
|
||||
checkColumn(6);
|
||||
let nice = parseInt(line.substring(parsedhead[6].from + offset, parsedhead[6].to + offset2));
|
||||
let nice = parseInt(line.substring(parsedhead[6].from + offset, parsedhead[6].to + offset2)) || 0;
|
||||
checkColumn(7);
|
||||
let started = line.substring(parsedhead[7].from + offset, parsedhead[7].to + offset2).trim();
|
||||
checkColumn(8);
|
||||
|
||||
+98
-81
@@ -58,92 +58,109 @@ function system(callback) {
|
||||
if (result.model.toLowerCase().indexOf('o.e.m.') !== -1) result.model = 'Computer';
|
||||
if (result.version.toLowerCase().indexOf('o.e.m.') !== -1) result.version = '-';
|
||||
if (result.sku.toLowerCase().indexOf('o.e.m.') !== -1) result.sku = '-';
|
||||
|
||||
if (result.manufacturer === '' && result.model === 'Computer' && result.version === '-') {
|
||||
// Check Raspberry Pi
|
||||
exec('grep Hardware /proc/cpuinfo; grep Serial /proc/cpuinfo; grep Revision /proc/cpuinfo', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
lines.forEach(function (line) {
|
||||
if (line.indexOf(':') !== -1) {
|
||||
if (line.toLowerCase().indexOf('hardware') !== -1) result.model = line.split(':')[1].trim();
|
||||
if (line.toLowerCase().indexOf('revision') !== -1) result.version = line.split(':')[1].trim();
|
||||
if (line.toLowerCase().indexOf('serial') !== -1) result.serial = line.split(':')[1].trim();
|
||||
}
|
||||
});
|
||||
if (result.model === 'BCM2835') { // Pi 3
|
||||
result.manufacturer = 'Raspberry Pi Foundation';
|
||||
result.model = result.model + ' - Pi 3 Model B';
|
||||
if (['a02082', 'a22082', 'a32082'].indexOf(result.version) >= 0) {
|
||||
result.version = result.version + ' - Rev. 1.2';
|
||||
}
|
||||
}
|
||||
if (result.model === 'BCM2709') { // Pi 2
|
||||
result.manufacturer = 'Raspberry Pi Foundation';
|
||||
result.model = result.model + ' - Pi 2 Model B';
|
||||
if (['a01041', 'a21041'].indexOf(result.version) >= 0) {
|
||||
result.version = result.version + ' - Rev. 1.1';
|
||||
}
|
||||
}
|
||||
if (result.model === 'BCM2708') { // Pi, Pi Zero
|
||||
result.manufacturer = 'Raspberry Pi Foundation';
|
||||
if (['0002', '0003'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B';
|
||||
result.version = result.version + ' - Rev 1.0';
|
||||
}
|
||||
if (['900092'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Zero';
|
||||
result.version = result.version + ' - Rev 1.2';
|
||||
}
|
||||
if (['900092', '900093', '920093'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Zero';
|
||||
result.version = result.version + ' - Rev 1.3';
|
||||
}
|
||||
if (['0007', '0008', '0009'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model A';
|
||||
result.version = result.version + ' - Rev 2.0';
|
||||
}
|
||||
if (['0004', '0005', '0006', '000d', '000e', '000f'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B';
|
||||
result.version = result.version + ' - Rev 2.0';
|
||||
}
|
||||
if (['0010'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B+';
|
||||
result.version = result.version + ' - Rev 1.0';
|
||||
}
|
||||
if (['0012'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model A+';
|
||||
result.version = result.version + ' - Rev 1.0';
|
||||
}
|
||||
if (['0013'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B+';
|
||||
result.version = result.version + ' - Rev 1.2';
|
||||
}
|
||||
if (['0015'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model A+';
|
||||
result.version = result.version + ' - Rev 1.1';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
} else {
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
}
|
||||
} else {
|
||||
exec('dmesg | grep -i virtual | grep -iE "vmware|qemu|kvm|xen"', function (error, stdout) {
|
||||
}
|
||||
// detect docker
|
||||
if (fs.existsSync('/.dockerenv') || fs.existsSync('/.dockerinit')) {
|
||||
result.model = 'Docker Container';
|
||||
}
|
||||
if (result.manufacturer === '' && result.model === 'Computer' && result.version === '-') { // still default values
|
||||
exec('dmesg | grep -i virtual | grep -iE "vmware|qemu|kvm|xen"', function (error, stdout) {
|
||||
// detect virtual machines
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
if (lines.length > 0) result.model = 'Virtual machine';
|
||||
}
|
||||
if (fs.existsSync('/.dockerenv') || fs.existsSync('/.dockerinit')) {
|
||||
result.model = 'Docker Container';
|
||||
|
||||
if (result.manufacturer === '' && result.model === 'Computer' && result.version === '-') {
|
||||
// Check Raspberry Pi
|
||||
exec('cat /proc/cpuinfo', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
result.model = util.getValue(lines, 'hardware', ':', true).toUpperCase();
|
||||
result.version = util.getValue(lines, 'revision', ':', true).toLowerCase();
|
||||
result.serial = util.getValue(lines, 'serial', ':', true);
|
||||
|
||||
// reference values: https://elinux.org/RPi_HardwareHistory
|
||||
if (result.model === 'BCM2835' || result.model === 'BCM2708' || result.model === 'BCM2709' || result.model === 'BCM2835' || result.model === 'BCM2837') {
|
||||
|
||||
// Pi 3
|
||||
if (['a02082', 'a22082', 'a32082'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi 3 Model B';
|
||||
result.version = result.version + ' - Rev. 1.2';
|
||||
}
|
||||
if (['a020d3'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi 3 Model B';
|
||||
result.version = result.version + ' - Rev. 1.3';
|
||||
}
|
||||
// Pi 2 Model B
|
||||
if (['a01040'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi 2 Model B';
|
||||
result.version = result.version + ' - Rev. 1.0';
|
||||
}
|
||||
if (['a01041', 'a21041'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi 2 Model B';
|
||||
result.version = result.version + ' - Rev. 1.1';
|
||||
}
|
||||
if (['a22042'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi 2 Model B';
|
||||
result.version = result.version + ' - Rev. 1.2';
|
||||
}
|
||||
|
||||
// Pi Zero
|
||||
if (['900092'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Zero';
|
||||
result.version = result.version + ' - Rev 1.2';
|
||||
}
|
||||
if (['900093', '920093'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Zero';
|
||||
result.version = result.version + ' - Rev 1.3';
|
||||
}
|
||||
if (['9000c1'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Zero W';
|
||||
result.version = result.version + ' - Rev 1.1';
|
||||
}
|
||||
|
||||
// A, B, A+ B+
|
||||
if (['0002', '0003'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B';
|
||||
result.version = result.version + ' - Rev 1.0';
|
||||
}
|
||||
if (['0004', '0005', '0006', '000d', '000e', '000f'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B';
|
||||
result.version = result.version + ' - Rev 2.0';
|
||||
}
|
||||
if (['0007', '0008', '0009'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model A';
|
||||
result.version = result.version + ' - Rev 2.0';
|
||||
}
|
||||
if (['0010'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B+';
|
||||
result.version = result.version + ' - Rev 1.0';
|
||||
}
|
||||
if (['0012'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model A+';
|
||||
result.version = result.version + ' - Rev 1.0';
|
||||
}
|
||||
if (['0013'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model B+';
|
||||
result.version = result.version + ' - Rev 1.2';
|
||||
}
|
||||
if (['0015'].indexOf(result.version) >= 0) {
|
||||
result.model = result.model + ' - Pi Model A+';
|
||||
result.version = result.version + ' - Rev 1.1';
|
||||
}
|
||||
if (result.model.indexOf('Pi') !== -1 && result.version) { // Pi, Pi Zero
|
||||
result.manufacturer = 'Raspberry Pi Foundation';
|
||||
}
|
||||
}
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
} else {
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user