summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Goby2011-04-09 14:19:04 +0200
committerNiklas Goby2011-04-09 14:19:04 +0200
commitd2fd3f58269f77ff4d2d60178ee78558d17124fa (patch)
tree67ab20e1f3c2cd9a434932d3fe7ad22b81f984b4
parentsome changes in the sysinfolibfs clas. we can now get the mainboard serial (diff)
downloadfbgui-d2fd3f58269f77ff4d2d60178ee78558d17124fa.tar.gz
fbgui-d2fd3f58269f77ff4d2d60178ee78558d17124fa.tar.xz
fbgui-d2fd3f58269f77ff4d2d60178ee78558d17124fa.zip
inserted the sysinfolibsysfs methods intho the sysinfo class
added the mainboard serial number to the hardwarehash computation in the fbgui class (method generatePOSTData). just appended the serial to the mac address without separating char
-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()