summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/fbgui.cpp9
-rw-r--r--src/sysinfo.cpp43
-rw-r--r--src/sysinfo.h11
-rw-r--r--src/sysinfolibsysfs.cpp2
4 files changed, 54 insertions, 11 deletions
diff --git a/src/fbgui.cpp b/src/fbgui.cpp
index 494c4e8..e18603c 100644
--- a/src/fbgui.cpp
+++ b/src/fbgui.cpp
@@ -22,9 +22,12 @@ int debugMode = -1;
fbgui::fbgui()
{
// test for libsys function
- SysInfoLibsysfs* sil = new SysInfoLibsysfs();
+ //SysInfoLibsysfs* sil = new SysInfoLibsysfs();
//sil->getInfoAboutNetworkInterface();
- sil->getInfoMainboardSerial();
+ //sil->getInfoMainboardSerial();
+ SysInfo si;
+ si.getInfo("mbserial");
+
setupLayout();
createActions();
@@ -176,6 +179,8 @@ QByteArray fbgui::generatePOSTData()
// use MAC address as base data
SysInfo si;
QByteArray data(si.getInfo("mac").toUtf8());
+ // append mainboard serial to the mac address for more unique hardwarehash
+ data.append(si.getInfo("mbserial").toUtf8());
qxtLog->debug() << "[post] Hashing: " << data;
// generate MD5 hash of data
QByteArray hash = QCryptographicHash::hash(data, QCryptographicHash::Md5);
diff --git a/src/sysinfo.cpp b/src/sysinfo.cpp
index e1aa88c..57703ae 100644
--- a/src/sysinfo.cpp
+++ b/src/sysinfo.cpp
@@ -7,16 +7,19 @@ SysInfo::SysInfo(){}
SysInfo::~SysInfo(){}
// ------------------------------------------------------------------------------------------------
const QString SysInfo::getInfo(const QString& infoName){
- qxtLog->debug() << "[si] requested " << infoName;
+ qxtLog->debug() << "[sysinfo] requested " << infoName;
if (infoName == QString("mac"))
return getMACAddress();
else if (infoName == QString("ip"))
return getIPAddress();
else if (infoName == QString("all"))
return getAllInfos();
+ else if (infoName == QString("mbserial"))
+ return getMainboardSerial();
else if (infoName == QString("json"))
return getNames();
/* unknown code */
+ qxtLog->debug() << "[sysinfo] unknown requested";
return "info_error";
}
// ------------------------------------------------------------------------------------------------
@@ -24,7 +27,7 @@ const QString SysInfo::getMACAddress(){
// Returns MAC address of eth0 for now
QNetworkInterface qni = QNetworkInterface::interfaceFromName(QString("eth0"));
if (!qni.isValid()){
- qxtLog->debug() << "No interface matching \"eth0\" found.";
+ qxtLog->debug() << "[sysinfo] MAC Address: No interface matching \"eth0\" found.";
return "no_eth0";
}
//eth0_index = qni.index();
@@ -43,7 +46,7 @@ const QString SysInfo::getIPAddress(){
}
}
// still here?
- qxtLog->debug() << "ip_error";
+ qxtLog->debug() << "[sysinfo] IP Address: ip_error";
return "ip_error";
}
// ------------------------------------------------------------------------------------------------
@@ -82,14 +85,38 @@ QString SysInfo::getAllInfos(){
return json;
}
// ------------------------------------------------------------------------------------------------
+const QString SysInfo::getMainboardSerial(){
+ QString out = "";
+ struct sysfs_class_device *class_device = sysfs_open_class_device("dmi","id");
+ struct dlist *attrlist = sysfs_get_classdev_attributes(class_device);
+ struct sysfs_device *device = sysfs_get_classdev_device(class_device);
+
+ if(attrlist != NULL){
+ struct sysfs_attribute *attr = NULL;
+ dlist_for_each_data(attrlist, attr, struct sysfs_attribute) {
+ QVariantMap a;
+ if(QString(attr->name) == QString("board_serial")){
+ out = QString(attr->value);
+ }
+ }
+ qxtLog->debug()<< "[sysinfo] Mainboard Serial: " + out;
+ return out;
+ }
+ qxtLog->debug()<< "[sysinfo] Mainboard Serial: attrlist is null! return: mainboard_serial_error";
+ sysfs_close_class_device(class_device);
+ return "mainboard_serial_error";
+}
+
+
+// ------------------------------------------------------------------------------------------------
QString SysInfo::getScriptOutput(QString cmd)
{
QProcess *process = new QProcess();
- qDebug()<<"try to open: "<<cmd;
+ qxtLog->debug()<<"[sysinfo] Script Output: try to open: "<<cmd;
process->start(cmd, QIODevice::ReadOnly);
if (!process->waitForStarted() )
- qDebug()<<"process couldn't get opened";
+ qxtLog->debug()<<"[sysinfo] Script Output: process couldn't get opened";
QString output;
process->waitForFinished();
@@ -98,12 +125,12 @@ QString SysInfo::getScriptOutput(QString cmd)
while(!txt_stream->atEnd() )
{
- qDebug()<<"read output: ";
+ qxtLog->debug()<<"[sysinfo] Script Output: read output: ";
QString tmp_str = txt_stream->readLine();
output += tmp_str;
- qDebug()<<tmp_str;
+ qxtLog->debug()<< "[sysinfo] Script Output: " <<tmp_str;
}
- qDebug()<<"process finished: ";
+ qxtLog->debug()<<"[sysinfo] Script Output: process finished: ";
return output;
}
diff --git a/src/sysinfo.h b/src/sysinfo.h
index cbb002e..d32d0f8 100644
--- a/src/sysinfo.h
+++ b/src/sysinfo.h
@@ -18,6 +18,15 @@
#ifndef SYSINFO_H
#define SYSINFO_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "libsysfs.h"
+#ifdef __cplusplus
+}
+#endif
+
#include "fbgui.h"
#include <qjson/serializer.h>
@@ -32,9 +41,11 @@ private:
// private system information readers
const QString getMACAddress();
const QString getIPAddress();
+ const QString getMainboardSerial();
QString getAllInfos();
QString getScriptOutput(QString cmd);
+
// JSon testing
QJson::Serializer serializer;
const QByteArray getNames();
diff --git a/src/sysinfolibsysfs.cpp b/src/sysinfolibsysfs.cpp
index d9bbac8..2c9aafc 100644
--- a/src/sysinfolibsysfs.cpp
+++ b/src/sysinfolibsysfs.cpp
@@ -91,7 +91,7 @@ QString SysInfoLibsysfs::getInfoMainboardSerial(){
}
qDebug() << "attrlist is null!";
sysfs_close_class_device(class_device);
- return null;
+ return NULL;
}
void SysInfoLibsysfs::getInfoAboutClassNet()