summaryrefslogtreecommitdiffstats
path: root/src/sysinfo.cpp
diff options
context:
space:
mode:
authorJonathan Bauer2011-03-21 11:48:32 +0100
committerJonathan Bauer2011-03-21 11:48:32 +0100
commit31050528017e11c54f408b22c92265ff6c4c4b69 (patch)
treeb3a83fc05f53548a7c6beb29b9b0d971b9c49cc3 /src/sysinfo.cpp
parentminor code convention fixes (diff)
downloadfbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.gz
fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.xz
fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.zip
and the files ^^
Diffstat (limited to 'src/sysinfo.cpp')
-rw-r--r--src/sysinfo.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/src/sysinfo.cpp b/src/sysinfo.cpp
new file mode 100644
index 0000000..1c8bc8d
--- /dev/null
+++ b/src/sysinfo.cpp
@@ -0,0 +1,109 @@
+#include "sysinfo.h"
+
+
+// ------------------------------------------------------------------------------------------------
+SysInfo::SysInfo(){}
+// ------------------------------------------------------------------------------------------------
+SysInfo::~SysInfo(){}
+// ------------------------------------------------------------------------------------------------
+const QString SysInfo::getInfo(const QString& 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("json"))
+ return getNames();
+ /* unknown code */
+ return "info_error";
+}
+// ------------------------------------------------------------------------------------------------
+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.";
+ return "no_eth0";
+ }
+ //eth0_index = qni.index();
+ return qni.hardwareAddress();
+}
+// ------------------------------------------------------------------------------------------------
+const QString SysInfo::getIPAddress(){
+ // Again for eth0 only at the moment.
+ // TODO: this doesn't quite work yet...
+ QNetworkInterface qni = QNetworkInterface::interfaceFromName(QString("eth0"));
+ QList<QHostAddress> addrlist = qni.allAddresses();
+ // This is does not return the right IP atm...
+ foreach(QHostAddress addr, addrlist){
+ if (addr.protocol() == QAbstractSocket::IPv4Protocol && addr != QHostAddress::LocalHost){
+ return addr.toString();
+ }
+ }
+ // still here?
+ qxtLog->debug() << "ip_error";
+ return "ip_error";
+}
+// ------------------------------------------------------------------------------------------------
+const QByteArray SysInfo::getNames(){
+
+ QVariantMap foo;
+ foo.insert("name", "foo");
+ foo.insert("type", 123);
+
+ QVariantMap fooo;
+ fooo.insert("name", "boo");
+ fooo.insert("type", 321);
+
+ QVariantList jsonV;
+ jsonV << foo << fooo;
+
+ QJson::Serializer serializer;
+ QByteArray json = serializer.serialize(jsonV);
+
+ qxtLog->debug() << json;
+ return json;
+
+}
+// ------------------------------------------------------------------------------------------------
+QString SysInfo::getAllInfos(){
+ QVariantMap infos;
+ infos.insert("mac", getMACAddress());
+ infos.insert("ip", getIPAddress());
+ infos.insert("whoami", getScriptOutput("whoami"));
+ //infos.insert("pwd", getScriptOutput("pwd"));
+
+ //QJson::Serializer serializer;
+ QByteArray json = serializer.serialize(infos);
+
+ qxtLog->debug() << json;
+ return json;
+}
+// ------------------------------------------------------------------------------------------------
+QString SysInfo::getScriptOutput(QString cmd)
+{
+ QProcess *process = new QProcess();
+ qDebug()<<"try to open: "<<cmd;
+ process->start(cmd, QIODevice::ReadOnly);
+
+ if (!process->waitForStarted() )
+ qDebug()<<"process couldn't get opened";
+
+ QString output;
+ process->waitForFinished();
+
+ QTextStream *txt_stream = new QTextStream(process);
+
+ while(!txt_stream->atEnd() )
+ {
+ qDebug()<<"read output: ";
+ QString tmp_str = txt_stream->readLine();
+ output += tmp_str;
+ qDebug()<<tmp_str;
+ }
+ qDebug()<<"process finished: ";
+ return output;
+}
+