diff options
| author | Niklas Goby | 2011-04-09 14:19:04 +0200 |
|---|---|---|
| committer | Niklas Goby | 2011-04-09 14:19:04 +0200 |
| commit | d2fd3f58269f77ff4d2d60178ee78558d17124fa (patch) | |
| tree | 67ab20e1f3c2cd9a434932d3fe7ad22b81f984b4 | |
| parent | some changes in the sysinfolibfs clas. we can now get the mainboard serial (diff) | |
| download | fbgui-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.cpp | 9 | ||||
| -rw-r--r-- | src/sysinfo.cpp | 43 | ||||
| -rw-r--r-- | src/sysinfo.h | 11 | ||||
| -rw-r--r-- | src/sysinfolibsysfs.cpp | 2 |
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() |
