osInfo() added uefi (OS uses UEFI during startup)

This commit is contained in:
Sebastian Hildebrandt
2020-01-12 10:33:04 +01:00
parent f85d518f34
commit cf85b2f1b6
7 changed files with 73 additions and 18 deletions
+1
View File
@@ -203,6 +203,7 @@ export namespace Systeminformation {
serial: string;
build: string;
servicepack: string;
uefi: boolean;
}
interface UuidData {
+50 -13
View File
@@ -180,7 +180,8 @@ function osInfo(callback) {
logofile: '',
serial: '',
build: '',
servicepack: ''
servicepack: '',
uefi: false
};
if (_linux) {
@@ -214,19 +215,22 @@ function osInfo(callback) {
result.codename = codename;
result.codepage = util.getCodepage();
result.build = (release.BUILD_ID || '').replace(/"/g, '').trim();
uuid().then(data => {
result.serial = data.os;
if (callback) {
callback(result);
}
resolve(result);
isUefiLinux().then(uefi => {
result.uefi = uefi;
uuid().then(data => {
result.serial = data.os;
if (callback) {
callback(result);
}
resolve(result);
});
});
//}
});
}
if (_freebsd || _openbsd || _netbsd) {
exec('sysctl kern.ostype kern.osrelease kern.osrevision kern.hostuuid', function (error, stdout) {
exec('sysctl kern.ostype kern.osrelease kern.osrevision kern.hostuuid machdep.bootmethod', function (error, stdout) {
if (!error) {
let lines = stdout.toString().split('\n');
result.distro = util.getValue(lines, 'kern.ostype');
@@ -235,6 +239,7 @@ function osInfo(callback) {
result.serial = util.getValue(lines, 'kern.uuid');
result.codename = '';
result.codepage = util.getCodepage();
result.uefi = util.getValue(lines, 'machdep.bootmethod').toLowerCase().indexOf('uefi') >= 0;
}
if (callback) {
callback(result);
@@ -265,7 +270,7 @@ function osInfo(callback) {
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.codename = (result.release.indexOf('10.15') > -1 ? 'macOS Catalina' : result.codename);
result.uefi = true;
result.codepage = util.getCodepage();
if (callback) {
callback(result);
@@ -294,10 +299,13 @@ function osInfo(callback) {
result.build = util.getValue(lines, 'BuildNumber', '=').trim();
result.servicepack = util.getValue(lines, 'ServicePackMajorVersion', '=').trim() + '.' + util.getValue(lines, 'ServicePackMinorVersion', '=').trim();
result.codepage = util.getCodepage();
if (callback) {
callback(result);
}
resolve(result);
isUefiWindows().then(uefi => {
result.uefi = uefi;
if (callback) {
callback(result);
}
resolve(result);
});
});
} catch (e) {
if (callback) { callback(result); }
@@ -310,6 +318,35 @@ function osInfo(callback) {
exports.osInfo = osInfo;
function isUefiLinux() {
return new Promise((resolve) => {
process.nextTick(() => {
fs.stat('/sys/firmware/efi', function (err) {
if (!err) {
resolve(true);
}
else {
resolve(false);
}
});
});
});
}
function isUefiWindows() {
return new Promise((resolve) => {
process.nextTick(() => {
exec('%windir%\\Panther\\setupact.log | findstr "Detected boot environment" ', util.execOptsWin, function (error, stdout) {
if (!error) {
const line = stdout.toString().split('\n\r')[0];
resolve(line.toLowerCase().indexOf('uefi') >= 0);
}
resolve(false);
});
});
});
}
function versions(callback) {
return new Promise((resolve) => {
process.nextTick(() => {