optimization osInfo(), system()

This commit is contained in:
Sebastian Hildebrandt 2019-01-13 11:03:06 +01:00
parent 5ebfe2baec
commit f1cd917014
2 changed files with 66 additions and 24 deletions

View File

@ -149,6 +149,8 @@ function getLogoFile(distro) {
}
else if (distro.indexOf('robolinux') !== -1) {
result = 'robolinux';
} else if (_linux && distro) {
result = distro.toLowerCase();
}
return result;
}
@ -177,7 +179,7 @@ function osInfo(callback) {
if (_linux) {
exec('cat /etc/*-release', function (error, stdout) {
exec('cat /etc/*-release; cat /usr/lib/os-release; cat /etc/openwrt_release', function (error, stdout) {
//if (!error) {
/**
* @namespace
@ -194,10 +196,16 @@ function osInfo(callback) {
release[line.split('=')[0].trim().toUpperCase()] = line.split('=')[1].trim();
}
});
let releaseVersion = (release.VERSION || '').replace(/"/g, '');
let codename = (release.DISTRIB_CODENAME || '').replace(/"/g, '');
if (releaseVersion.indexOf('(')) {
codename = releaseVersion.split('(')[1].replace(/[()]/g, '').trim();
releaseVersion = releaseVersion.split('(')[0].trim();
}
result.distro = (release.DISTRIB_ID || release.NAME || 'unknown').replace(/"/g, '');
result.logofile = getLogoFile(result.distro);
result.release = (release.DISTRIB_RELEASE || release.VERSION_ID || 'unknown').replace(/"/g, '');
result.codename = (release.DISTRIB_CODENAME || '').replace(/"/g, '');
result.release = (releaseVersion || release.DISTRIB_RELEASE || release.VERSION_ID || 'unknown').replace(/"/g, '');
result.codename = codename;
result.codepage = util.getCodepage();
//}
if (callback) {
@ -232,6 +240,21 @@ function osInfo(callback) {
result.release = util.getValue(lines, 'ProductVersion');
result.build = util.getValue(lines, 'BuildVersion');
result.logofile = getLogoFile(result.distro);
result.codename = 'macOS';
result.codename = (result.release.indexOf('10.4') > -1 ? 'Mac OS X Tiger' : result.codename);
result.codename = (result.release.indexOf('10.4') > -1 ? 'Mac OS X Tiger' : result.codename);
result.codename = (result.release.indexOf('10.4') > -1 ? 'Mac OS X Tiger' : result.codename);
result.codename = (result.release.indexOf('10.5') > -1 ? 'Mac OS X Leopard' : result.codename);
result.codename = (result.release.indexOf('10.6') > -1 ? 'Mac OS X Snow Leopard' : result.codename);
result.codename = (result.release.indexOf('10.7') > -1 ? 'Mac OS X Lion' : result.codename);
result.codename = (result.release.indexOf('10.8') > -1 ? 'OS X Mountain Lion' : result.codename);
result.codename = (result.release.indexOf('10.9') > -1 ? 'OS X Mavericks' : result.codename);
result.codename = (result.release.indexOf('10.10') > -1 ? 'OS X Yosemite' : result.codename);
result.codename = (result.release.indexOf('10.11') > -1 ? 'OS X El Capitan' : result.codename);
result.codename = (result.release.indexOf('10.12') > -1 ? 'macOS Sierra' : result.codename);
result.codename = (result.release.indexOf('10.13') > -1 ? 'macOS High Sierra' : result.codename);
result.codename = (result.release.indexOf('10.14') > -1 ? 'macOS Mojave' : result.codename);
result.codepage = util.getCodepage();
if (callback) {
callback(result);
@ -481,13 +504,32 @@ function versions(callback) {
}
});
} else {
exec('postgres -V', function (error, stdout) {
if (!error) {
const postgresql = stdout.toString().split('\n')[0].split(' ') || [];
result.postgresql = postgresql.length ? postgresql[postgresql.length - 1] : '';
}
functionProcessed();
});
if (_windows) {
exec(util.getWmic() + ' service get /value', util.execOptsWin, function (error, stdout) {
let serviceSections = stdout.split(/\n\s*\n/);
for (let i = 0; i < serviceSections.length; i++) {
if (serviceSections[i].trim() !== '') {
let lines = serviceSections[i].trim().split('\r\n');
let srvCaption = util.getValue(lines, 'caption', '=', true).toLowerCase();
if (srvCaption.indexOf('postgresql') > -1) {
const parts = srvCaption.split(' server ');
if (parts.length > 1) {
result.postgresql = parts[1];
}
}
}
}
functionProcessed();
});
} else {
exec('postgres -V', function (error, stdout) {
if (!error) {
const postgresql = stdout.toString().split('\n')[0].split(' ') || [];
result.postgresql = postgresql.length ? postgresql[postgresql.length - 1] : '';
}
functionProcessed();
});
}
}
exec('perl -v', function (error, stdout) {
if (!error) {

View File

@ -41,20 +41,20 @@ function system(callback) {
if (_linux || _freebsd || _openbsd) {
exec('dmidecode -t system 2>/dev/null', function (error, stdout) {
if (!error) {
let lines = stdout.toString().split('\n');
result.manufacturer = util.getValue(lines, 'manufacturer');
result.model = util.getValue(lines, 'product name');
result.version = util.getValue(lines, 'version');
result.serial = util.getValue(lines, 'serial number');
result.uuid = util.getValue(lines, 'uuid');
result.sku = util.getValue(lines, 'sku number');
if (result.serial.toLowerCase().indexOf('o.e.m.') !== -1) result.serial = '-';
if (result.manufacturer.toLowerCase().indexOf('o.e.m.') !== -1) result.manufacturer = '';
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 (!error) {
let lines = stdout.toString().split('\n');
result.manufacturer = util.getValue(lines, 'manufacturer');
result.model = util.getValue(lines, 'product name');
result.version = util.getValue(lines, 'version');
result.serial = util.getValue(lines, 'serial number');
result.uuid = util.getValue(lines, 'uuid');
result.sku = util.getValue(lines, 'sku number');
if (result.serial.toLowerCase().indexOf('o.e.m.') !== -1) result.serial = '-';
if (result.manufacturer.toLowerCase().indexOf('o.e.m.') !== -1) result.manufacturer = '';
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 = '-';
// }
// detect docker
if (fs.existsSync('/.dockerenv') || fs.existsSync('/.dockerinit')) {
result.model = 'Docker Container';