diff --git a/agents/meshcore.js b/agents/meshcore.js index 1b8e583e..61f85282 100644 --- a/agents/meshcore.js +++ b/agents/meshcore.js @@ -1884,6 +1884,29 @@ function getSystemInformation(func) { } } catch (ex) { } } + if(!results.hardware.linux.LastBootUpTime) { + try { + var child = require('child_process').execFile('/usr/bin/uptime', ['', '-s']); // must include blank value at begining for some reason? + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.on('data', function () { }); + child.waitExit(); + results.hardware.linux.LastBootUpTime = child.stdout.str.trim(); + } catch (ex) { } + } + } + if(process.platform=='darwin'){ + try { + var child = require('child_process').execFile('/usr/sbin/sysctl', ['', 'kern.boottime']); // must include blank value at begining for some reason? + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.on('data', function () { }); + child.waitExit(); + const timestampMatch = /\{ sec = (\d+), usec = \d+ \}/.exec(child.stdout.str.trim()); + if(!results.hardware.darwin){ + results.hardware.darwin = { LastBootUpTime: parseInt(timestampMatch[1]) }; + }else{ + results.hardware.darwin.LastBootUpTime = parseInt(timestampMatch[1]); + } + } catch (ex) { } } results.hardware.agentvers = process.versions; replaceSpacesWithUnderscoresRec(results); diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars index 3fef615d..46d775ed 100644 --- a/views/default-mobile.handlebars +++ b/views/default-mobile.handlebars @@ -5858,7 +5858,33 @@ x += addDetailItem("Last Boot Up Time", date); } } - + if(hardware.linux && hardware.linux.LastBootUpTime){ + var lastBootUpTime = new Date(hardware.linux.LastBootUpTime); + var thedate = { + year: lastBootUpTime.getFullYear(), + month: lastBootUpTime.getMonth(), + day: lastBootUpTime.getDate(), + hours: lastBootUpTime.getHours(), + minutes: lastBootUpTime.getMinutes(), + seconds: lastBootUpTime.getSeconds() + }; + const date = printDateTime(new Date(thedate.year, thedate.month, thedate.day, thedate.hours, thedate.minutes, thedate.seconds)); + x += addDetailItem("Last Boot Up Time", date); + } + if(hardware.darwin && hardware.darwin.LastBootUpTime){ + var lastBootUpTime = new Date(hardware.darwin.LastBootUpTime * 1000); // must times by 1000 even tho timestamp is correct? + var thedate = { + year: lastBootUpTime.getFullYear(), + month: lastBootUpTime.getMonth(), + day: lastBootUpTime.getDate(), + hours: lastBootUpTime.getHours(), + minutes: lastBootUpTime.getMinutes(), + seconds: lastBootUpTime.getSeconds() + }; + const date = printDateTime(new Date(thedate.year, thedate.month, thedate.day, thedate.hours, thedate.minutes, thedate.seconds)); + x += addDetailItem("Last Boot Up Time", date); + } + // Windows Security Central if (node.wsc) { var y = []; diff --git a/views/default.handlebars b/views/default.handlebars index fd4b5271..a5fc8d42 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -11663,6 +11663,32 @@ x += addDetailItem("Last Boot Up Time", date); } } + if(hardware.linux && hardware.linux.LastBootUpTime){ + var lastBootUpTime = new Date(hardware.linux.LastBootUpTime); + var thedate = { + year: lastBootUpTime.getFullYear(), + month: lastBootUpTime.getMonth(), + day: lastBootUpTime.getDate(), + hours: lastBootUpTime.getHours(), + minutes: lastBootUpTime.getMinutes(), + seconds: lastBootUpTime.getSeconds() + }; + const date = printDateTime(new Date(thedate.year, thedate.month, thedate.day, thedate.hours, thedate.minutes, thedate.seconds)); + x += addDetailItem("Last Boot Up Time", date); + } + if(hardware.darwin && hardware.darwin.LastBootUpTime){ + var lastBootUpTime = new Date(hardware.darwin.LastBootUpTime * 1000); // must times by 1000 even tho timestamp is correct? + var thedate = { + year: lastBootUpTime.getFullYear(), + month: lastBootUpTime.getMonth(), + day: lastBootUpTime.getDate(), + hours: lastBootUpTime.getHours(), + minutes: lastBootUpTime.getMinutes(), + seconds: lastBootUpTime.getSeconds() + }; + const date = printDateTime(new Date(thedate.year, thedate.month, thedate.day, thedate.hours, thedate.minutes, thedate.seconds)); + x += addDetailItem("Last Boot Up Time", date); + } if (x != '') { sections.push({ name: "Operating System", html: x, img: 'software64.png'}); } }