blob: e7ed8a81af1106298ef0bf4f4ab946701a1d97b4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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;
}
|