cacic_computer.cpp
3.94 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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include "cacic_computer.h"
CACIC_Computer::CACIC_Computer()
{
os = pegarOS();
networkInterface = networkInterfacesRunning();
usuario = pegarUsu();
}
/*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 interface;
QVariantMap mapInterface;
QList<QVariantMap> listaMap;
foreach (QNetworkInterface in, interface.allInterfaces()) {
if (!(bool)(in.flags() & QNetworkInterface::IsLoopBack) &&
!(bool)(in.flags() & QNetworkInterface::IsPointToPoint) &&
(bool)(in.flags() & QNetworkInterface::IsRunning)){
// qDebug() << in.humanReadableName() << "\n";
mapInterface["nome"] = in.humanReadableName();
// qDebug() << in.hardwareAddress() << "\n";
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();
}
// qDebug() << ae.ip().toString() << "\n";
}
listaMap.append(mapInterface);
mapInterface.clear();
}
}
// foreach (QVariantMap each, listaMap){
// foreach (QVariant eachValue, each.values())
// qDebug() << eachValue.toString();
// }
return listaMap;
}
QJsonObject CACIC_Computer::toJsonObject()
{
// QJsonObject json;
// QJsonValue valor;
// QVariant aux;
// QJsonArray jsonArray;
// aux = this->os;
// valor.fromVariant(aux);
// json.insert("so", valor);
// aux = this->usuario;
// valor.fromVariant(aux);
// json.insert("usuario", this->usuario);
// aux.clear();
// foreach(QVariantMap auxMap, this->getNetworkInterface()){
// json.insert()
// }
// json.insert("network", network);
}
/*pegarOS
* @return: int;
* retorna um id referente a versão do SO.
*/
int CACIC_Computer::pegarOS(){
#if defined (Q_OS_WIN) || defined(Q_OS_CYGWIN)
if(QSysInfo::WindowsVersion == QSysInfo::QSysInfo.WinVersion.WV_XP)
return WIN_XP;
else if(QSysInfo::WindowsVersion == QSysInfo::QSysInfo.WinVersion.WV_VISTA)
return WIN_VISTA;
else if(QSysInfo::WindowsVersion == QSysInfo::QSysInfo.WinVersion.WV_WINDOWS7)
return WIN_7;
else if(QSysInfo::WindowsVersion == QSysInfo::QSysInfo.WinVersion.WV_WINDOWS8)
return WIN_8;
else if(QSysInfo::WindowsVersion == QSysInfo::QSysInfo.WinVersion.WV_WINDOWS8_1)
return WIN_8_1;
#elif defined(Q_OS_MAC)
return MAC;
#elif defined (Q_OS_LINUX)
//TODO: extrair info de distro do "cat /etc/*release"
return LINUX_ARCH;
#else
return -1;
#endif
}
/*
* PegarUsu()
* @return: std::string;
* retorna o usuario logado no sistema.
*/
std::string CACIC_Computer::pegarUsu(){
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("=");
// qDebug() << split[1];
return split[1].toStdString();
}
}
return "0";
}
/*
* getters/setters
*/
int CACIC_Computer::getOs() const
{
return os;
}
std::string CACIC_Computer::getUser() const {
return usuario;
}
QList<QVariantMap> CACIC_Computer::getNetworkInterface() const
{
return networkInterface;
}