Additional information on system used (#1045)

* Allow --version, even if hyperion is already running

* Add CPU-Model to SysInfo

* Add additional CPUInfos

* Use fileUtils & RegEx on CPU-Info

* Add CPU - Hardware info

* Update changelog

* Suppress empty CPU info elements
This commit is contained in:
LordGrey
2020-10-20 20:18:51 +02:00
committed by GitHub
parent da8a216587
commit a8492d6586
7 changed files with 106 additions and 14 deletions

View File

@@ -275,6 +275,10 @@ void JsonAPI::handleSysInfoCommand(const QJsonObject &, const QString &command,
system["kernelType"] = data.kernelType;
system["kernelVersion"] = data.kernelVersion;
system["architecture"] = data.architecture;
system["cpuModelName"] = data.cpuModelName;
system["cpuModelType"] = data.cpuModelType;
system["cpuHardware"] = data.cpuHardware;
system["cpuRevision"] = data.cpuRevision;
system["wordSize"] = data.wordSize;
system["productType"] = data.productType;
system["productVersion"] = data.productVersion;
@@ -289,6 +293,7 @@ void JsonAPI::handleSysInfoCommand(const QJsonObject &, const QString &command,
hyperion["gitremote"] = QString(HYPERION_GIT_REMOTE);
hyperion["time"] = QString(__DATE__ " " __TIME__);
hyperion["id"] = _authManager->getID();
info["hyperion"] = hyperion;
// send the result

View File

@@ -1,7 +1,12 @@
#include "utils/SysInfo.h"
#include "utils/FileUtils.h"
#include <QHostInfo>
#include <QSysInfo>
#include <QRegularExpression>
#include <QRegularExpressionMatch>
#include <iostream>
SysInfo* SysInfo::_instance = nullptr;
@@ -17,6 +22,7 @@ SysInfo::SysInfo()
_sysinfo.prettyName = QSysInfo::prettyProductName();
_sysinfo.hostName = QHostInfo::localHostName();
_sysinfo.domainName = QHostInfo::localDomainName();
getCPUInfo();
}
SysInfo::HyperionSysInfo SysInfo::get()
@@ -26,3 +32,48 @@ SysInfo::HyperionSysInfo SysInfo::get()
return SysInfo::_instance->_sysinfo;
}
void SysInfo::getCPUInfo()
{
QString cpuInfo;
if( FileUtils::readFile("/proc/cpuinfo", cpuInfo, Logger::getInstance("DAEMON"), true) )
{
QRegularExpression regEx ("^model\\s*:\\s(.*)", QRegularExpression::CaseInsensitiveOption | QRegularExpression::MultilineOption);
QRegularExpressionMatch match;
match = regEx.match(cpuInfo);
if ( match.hasMatch() )
{
_sysinfo.cpuModelType = match.captured(1);
}
regEx.setPattern("^model name\\s*:\\s(.*)");
match = regEx.match(cpuInfo);
if ( match.hasMatch() )
{
_sysinfo.cpuModelName = match.captured(1);
}
regEx.setPattern("^hardware\\s*:\\s(.*)");
match = regEx.match(cpuInfo);
if ( match.hasMatch() )
{
_sysinfo.cpuHardware = match.captured(1);
}
regEx.setPattern("^revision\\s*:\\s(.*)");
match = regEx.match(cpuInfo);
if ( match.hasMatch() )
{
_sysinfo.cpuRevision = match.captured(1);
}
regEx.setPattern("^revision\\s*:\\s(.*)");
match = regEx.match(cpuInfo);
if ( match.hasMatch() )
{
_sysinfo.cpuRevision = match.captured(1);
}
}
}