mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
LED-Device updates (#1315)
* SPI Fix - Free allocated memory in case of invert * Remove development statement * UI updates * Minor corrections * Tpm2net Fix - Free allocated memory * LGTM Finding * Add config directory and user type to SysInfo * WS281x - Ensure that device runs with root priviliges * WS281x - Update DMA defauls as per rpi_ws281x recommendation * Support Sysinfo for Qt < 5.10 * Address LGTM finding
This commit is contained in:
@@ -11,23 +11,28 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <shlobj_core.h>
|
||||
#endif
|
||||
|
||||
SysInfo* SysInfo::_instance = nullptr;
|
||||
|
||||
SysInfo::SysInfo()
|
||||
: QObject()
|
||||
{
|
||||
_sysinfo.kernelType = QSysInfo::kernelType();
|
||||
_sysinfo.kernelVersion = QSysInfo::kernelVersion();
|
||||
_sysinfo.architecture = QSysInfo::currentCpuArchitecture();
|
||||
_sysinfo.wordSize = QString::number(QSysInfo::WordSize);
|
||||
_sysinfo.productType = QSysInfo::productType();
|
||||
_sysinfo.kernelType = QSysInfo::kernelType();
|
||||
_sysinfo.kernelVersion = QSysInfo::kernelVersion();
|
||||
_sysinfo.architecture = QSysInfo::currentCpuArchitecture();
|
||||
_sysinfo.wordSize = QString::number(QSysInfo::WordSize);
|
||||
_sysinfo.productType = QSysInfo::productType();
|
||||
_sysinfo.productVersion = QSysInfo::productVersion();
|
||||
_sysinfo.prettyName = QSysInfo::prettyProductName();
|
||||
_sysinfo.hostName = QHostInfo::localHostName();
|
||||
_sysinfo.domainName = QHostInfo::localDomainName();
|
||||
_sysinfo.prettyName = QSysInfo::prettyProductName();
|
||||
_sysinfo.hostName = QHostInfo::localHostName();
|
||||
_sysinfo.domainName = QHostInfo::localDomainName();
|
||||
_sysinfo.isUserAdmin = isUserAdmin();
|
||||
getCPUInfo();
|
||||
_sysinfo.qtVersion = QT_VERSION_STR;
|
||||
_sysinfo.pyVersion = PY_VERSION;
|
||||
_sysinfo.qtVersion = QT_VERSION_STR;
|
||||
_sysinfo.pyVersion = PY_VERSION;
|
||||
}
|
||||
|
||||
SysInfo::HyperionSysInfo SysInfo::get()
|
||||
@@ -41,44 +46,95 @@ SysInfo::HyperionSysInfo SysInfo::get()
|
||||
void SysInfo::getCPUInfo()
|
||||
{
|
||||
QString cpuInfo;
|
||||
if( FileUtils::readFile("/proc/cpuinfo", cpuInfo, Logger::getInstance("DAEMON"), true) )
|
||||
if (FileUtils::readFile("/proc/cpuinfo", cpuInfo, Logger::getInstance("DAEMON"), true))
|
||||
{
|
||||
QRegularExpression regEx ("^model\\s*:\\s(.*)", QRegularExpression::CaseInsensitiveOption | QRegularExpression::MultilineOption);
|
||||
QRegularExpression regEx("^model\\s*:\\s(.*)", QRegularExpression::CaseInsensitiveOption | QRegularExpression::MultilineOption);
|
||||
QRegularExpressionMatch match;
|
||||
|
||||
match = regEx.match(cpuInfo);
|
||||
if ( match.hasMatch() )
|
||||
if (match.hasMatch())
|
||||
{
|
||||
_sysinfo.cpuModelType = match.captured(1);
|
||||
}
|
||||
|
||||
regEx.setPattern("^model name\\s*:\\s(.*)");
|
||||
match = regEx.match(cpuInfo);
|
||||
if ( match.hasMatch() )
|
||||
if (match.hasMatch())
|
||||
{
|
||||
_sysinfo.cpuModelName = match.captured(1);
|
||||
}
|
||||
|
||||
regEx.setPattern("^hardware\\s*:\\s(.*)");
|
||||
match = regEx.match(cpuInfo);
|
||||
if ( match.hasMatch() )
|
||||
if (match.hasMatch())
|
||||
{
|
||||
_sysinfo.cpuHardware = match.captured(1);
|
||||
}
|
||||
|
||||
regEx.setPattern("^revision\\s*:\\s(.*)");
|
||||
match = regEx.match(cpuInfo);
|
||||
if ( match.hasMatch() )
|
||||
if (match.hasMatch())
|
||||
{
|
||||
_sysinfo.cpuRevision = match.captured(1);
|
||||
}
|
||||
|
||||
regEx.setPattern("^revision\\s*:\\s(.*)");
|
||||
match = regEx.match(cpuInfo);
|
||||
if ( match.hasMatch() )
|
||||
if (match.hasMatch())
|
||||
{
|
||||
_sysinfo.cpuRevision = match.captured(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString SysInfo::userName()
|
||||
{
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
|
||||
#if defined (WIN32)
|
||||
return qEnvironmentVariable("USERNAME");
|
||||
#else
|
||||
return qEnvironmentVariable("USER");
|
||||
#endif
|
||||
#else
|
||||
#if defined (WIN32)
|
||||
return getenv("USERNAME");
|
||||
#else
|
||||
return getenv("USER");
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
bool SysInfo::isUserAdmin()
|
||||
{
|
||||
bool isAdmin{ false };
|
||||
|
||||
#ifdef _WIN32
|
||||
BOOL b;
|
||||
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
|
||||
PSID AdministratorsGroup;
|
||||
b = AllocateAndInitializeSid(
|
||||
&NtAuthority,
|
||||
2,
|
||||
SECURITY_BUILTIN_DOMAIN_RID,
|
||||
DOMAIN_ALIAS_RID_ADMINS,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
&AdministratorsGroup);
|
||||
if (b)
|
||||
{
|
||||
if (!CheckTokenMembership(NULL, AdministratorsGroup, &b))
|
||||
{
|
||||
b = false;
|
||||
}
|
||||
FreeSid(AdministratorsGroup);
|
||||
}
|
||||
// TRUE - User has Administrators local group.
|
||||
// FALSE - User does not have Administrators local group.
|
||||
isAdmin = b;
|
||||
#else
|
||||
if (getuid() == 0U)
|
||||
{
|
||||
isAdmin = true;
|
||||
}
|
||||
#endif
|
||||
return isAdmin;
|
||||
}
|
||||
|
Reference in New Issue
Block a user