cacic_computer.cpp
3.25 KB
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
#include "cacic_computer.h"
CACIC_Computer::CACIC_Computer()
{
struct utsname sysName;
uname(&sysName);
networkInterface = networkInterfacesRunning();
usuario = pegarUsu();
computerName = sysName.nodename;
// qDebug() << sysName.nodename << sysName.machine << sysName.sysname << sysName.release << sysName.version;
}
/*NetworkInterfacesRunning
* @return: QList<QList<std::string>>.
* Retorna todas as interfaces com seus IP's, nome e MAC.
* Cada uma é salva em uma lista que também será salva em
* outra lista que conterá todas as interfaces.
*
*/
QList<QVariantMap> CACIC_Computer::networkInterfacesRunning(){
QNetworkInterface netInterface;
QVariantMap mapInterface;
QList<QVariantMap> listaMap;
foreach (QNetworkInterface in, netInterface.allInterfaces()) {
if (!(bool)(in.flags() & QNetworkInterface::IsLoopBack) &&
!(bool)(in.flags() & QNetworkInterface::IsPointToPoint) &&
(bool)(in.flags() & QNetworkInterface::IsRunning)){
mapInterface["nome"] = in.humanReadableName();
mapInterface["mac"] = in.hardwareAddress();
foreach (QNetworkAddressEntry ae, in.addressEntries()){
if (ae.ip().scopeId() == ""){
mapInterface["ipv4"] = ae.ip().toString();
mapInterface["netmask_ipv4"] = ae.netmask().toString();
} else {
mapInterface["ipv6"] = ae.ip().toString();
mapInterface["netmask_ipv6"] = ae.netmask().toString();
}
}
listaMap.append(mapInterface);
mapInterface.clear();
}
}
return listaMap;
}
QJsonObject CACIC_Computer::toJsonObject()
{
QJsonObject json;
QJsonArray network;
int count = 1;
json["usuario"] = QJsonValue::fromVariant(QString::fromStdString(this->usuario));
json["operatingSystem"] = this->oOperatingSystem.toJsonObject();
foreach(QVariantMap auxMap, this->getNetworkInterface()){
network.append(QJsonObject::fromVariantMap(auxMap));
count++;
}
json["networkDevices"] = network;
json["nmComputador"] = QJsonValue::fromVariant(QString::fromStdString(this->computerName));
json["versaoAgente"] = QJsonValue::fromVariant(QString("3.0 (manual)"));
return json;
}
/*
* PegarUsu()
* @return: std::string;
* retorna o usuario logado no sistema. (erro, retorna o usuário que está executando.)
*/
std::string CACIC_Computer::pegarUsu(){
#if defined(Q_OS_WINDOWS)
QString text;
QStringList environment = QProcessEnvironment::systemEnvironment().toStringList();
foreach (text, environment) {
if (text.contains("USER=" , Qt::CaseInsensitive) ||
text.contains("USERNAME=", Qt::CaseInsensitive) ){
QStringList split = text.split("=");
return split[1].toStdString();
}
}
#elif defined(Q_OS_LINUX)
QString user = console("who").split(" ")[0];
return user.toStdString();
#endif
return "0";
}
/*
* getters/setters
*/
OperatingSystem CACIC_Computer::getOs() const
{
return oOperatingSystem;
}
std::string CACIC_Computer::getUser() const {
return usuario;
}
QList<QVariantMap> CACIC_Computer::getNetworkInterface() const
{
return networkInterface;
}