diff options
author | Jonathan Bauer | 2011-03-21 11:48:32 +0100 |
---|---|---|
committer | Jonathan Bauer | 2011-03-21 11:48:32 +0100 |
commit | 31050528017e11c54f408b22c92265ff6c4c4b69 (patch) | |
tree | b3a83fc05f53548a7c6beb29b9b0d971b9c49cc3 /src/sysinfo.cpp | |
parent | minor code convention fixes (diff) | |
download | fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.gz fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.xz fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.zip |
and the files ^^
Diffstat (limited to 'src/sysinfo.cpp')
-rw-r--r-- | src/sysinfo.cpp | 109 |
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; +} + |