Commit 0e8988e849e26ad23014f14feed28579b3d9d1b9

Authored by Eric Menezes Noronha
1 parent c1389ace
Exists in master

Começo do wmi

cacic-teste/cacic-teste.pro
@@ -6,8 +6,10 @@ @@ -6,8 +6,10 @@
6 6
7 QT += testlib 7 QT += testlib
8 QT += network 8 QT += network
9 -QT += axcontainer 9 +
10 TARGET = cacic-teste 10 TARGET = cacic-teste
  11 +
  12 +QT += axcontainer
11 CONFIG -= app_bundle 13 CONFIG -= app_bundle
12 CONFIG += c++11 14 CONFIG += c++11
13 TEMPLATE = app 15 TEMPLATE = app
cacic-teste/testcacic.cpp
@@ -158,6 +158,7 @@ void CTestCacic::testDeCrypt(){ @@ -158,6 +158,7 @@ void CTestCacic::testDeCrypt(){
158 void CTestCacic::testCacicCompToJsonObject() 158 void CTestCacic::testCacicCompToJsonObject()
159 { 159 {
160 // qDebug() << OCacicComp.toJsonObject(); 160 // qDebug() << OCacicComp.toJsonObject();
  161 +// OCacic.setJsonToFile(OCacicComp.toJsonObject(), "jsoncomp.json");
161 QVERIFY(!OCacicComp.toJsonObject().empty()); 162 QVERIFY(!OCacicComp.toJsonObject().empty());
162 } 163 }
163 164
@@ -238,6 +239,15 @@ void CTestCacic::testConvertDouble() @@ -238,6 +239,15 @@ void CTestCacic::testConvertDouble()
238 QVERIFY(converted.toDouble() == number); 239 QVERIFY(converted.toDouble() == number);
239 } 240 }
240 241
  242 +void CTestCacic::testGetTest()
  243 +{
  244 + bool ok;
  245 + QJsonObject envio;
  246 + envio["computador"] = OCacicComp.toJsonObject();
  247 + OCacicComm.setUrlGerente("http://10.1.0.137/cacic/web/app_dev.php");
  248 + QVERIFY(ok);
  249 +}
  250 +
241 void CTestCacic::cleanupTestCase() 251 void CTestCacic::cleanupTestCase()
242 { 252 {
243 OCacic.deleteFile("configRequest.json"); 253 OCacic.deleteFile("configRequest.json");
cacic-teste/testcacic.h
@@ -70,6 +70,7 @@ private slots: @@ -70,6 +70,7 @@ private slots:
70 void testColetaSoftware(); 70 void testColetaSoftware();
71 void testColetaHardware(); 71 void testColetaHardware();
72 void testConvertDouble(); 72 void testConvertDouble();
  73 + void testGetTest();
73 void cleanupTestCase(); 74 void cleanupTestCase();
74 }; 75 };
75 76
src/cacic_comm.h
@@ -19,7 +19,6 @@ private: @@ -19,7 +19,6 @@ private:
19 QUrlQuery params; 19 QUrlQuery params;
20 QString urlGerente; 20 QString urlGerente;
21 QString urlSsl; 21 QString urlSsl;
22 - // FIXME: Get from configuration  
23 QString usuario; 22 QString usuario;
24 QString password; 23 QString password;
25 QString session; 24 QString session;
@@ -67,35 +66,27 @@ public: @@ -67,35 +66,27 @@ public:
67 url = "http://" + urlGerente + route; 66 url = "http://" + urlGerente + route;
68 req.setUrl(url); 67 req.setUrl(url);
69 req.setHeader(QNetworkRequest::LocationHeader, "Cacic Agente"); 68 req.setHeader(QNetworkRequest::LocationHeader, "Cacic Agente");
70 - if (json.empty())  
71 - { 69 + if (json.empty()){
72 //se não for passado QJson, será mandado os valores do get/test antigo. (Será retirado depois) 70 //se não for passado QJson, será mandado os valores do get/test antigo. (Será retirado depois)
73 req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); 71 req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
74 data.append(params.toString()); 72 data.append(params.toString());
75 } else { 73 } else {
76 // Add JSON 74 // Add JSON
77 QJsonDocument d(json); 75 QJsonDocument d(json);
78 - data.append(d.toVariant().toString()); 76 + data.append(d.toJson());
79 req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); 77 req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
80 } 78 }
81 -// qDebug() << QString::fromUtf8(d.toJson().trimmed());  
82 - // cria um event-loop temporario  
83 QEventLoop eventLoop; 79 QEventLoop eventLoop;
84 - // "quit()" o event-loop, when the network request "finished()"  
85 QNetworkAccessManager mgr; 80 QNetworkAccessManager mgr;
86 QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); 81 QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
87 82
88 - // a requisição HTTP  
89 -  
90 QNetworkReply *reply = mgr.post(req, data); 83 QNetworkReply *reply = mgr.post(req, data);
91 if (!reply->sslConfiguration().isNull()){ 84 if (!reply->sslConfiguration().isNull()){
92 -// qDebug() << "Eh ssl";  
93 reply->ignoreSslErrors(); 85 reply->ignoreSslErrors();
94 } 86 }
95 eventLoop.exec(); // sai do looping chamando o "finished()". 87 eventLoop.exec(); // sai do looping chamando o "finished()".
96 - //grava codigo de retorno 88 +
97 jsonObj.insert("codestatus", QJsonValue::fromVariant(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute))); 89 jsonObj.insert("codestatus", QJsonValue::fromVariant(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute)));
98 -// qDebug() << "code: " << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString();  
99 90
100 if (reply->error() == QNetworkReply::NoError) { 91 if (reply->error() == QNetworkReply::NoError) {
101 //se não houver erro, grava o retorno; 92 //se não houver erro, grava o retorno;
@@ -104,20 +95,13 @@ public: @@ -104,20 +95,13 @@ public:
104 jsonObj["reply"] = (!replyDocument.isNull()) ? 95 jsonObj["reply"] = (!replyDocument.isNull()) ?
105 replyDocument.object() : 96 replyDocument.object() :
106 QJsonValue::fromVariant(replyVariant.toString()); 97 QJsonValue::fromVariant(replyVariant.toString());
107 -// qDebug() << "Response:" << jsonObj["reply"];  
108 -// qDebug() << "Response:" << strReply;  
109 *ok = true; 98 *ok = true;
110 delete reply; 99 delete reply;
111 } else { 100 } else {
112 - //failure  
113 -// qDebug() << "Failure" <<reply->errorString();  
114 strReply = reply->errorString(); 101 strReply = reply->errorString();
115 jsonObj.insert("error", QJsonValue::fromVariant(strReply)); 102 jsonObj.insert("error", QJsonValue::fromVariant(strReply));
116 delete reply; 103 delete reply;
117 -  
118 -  
119 } 104 }
120 - //retorna o json;  
121 return jsonObj; 105 return jsonObj;
122 } 106 }
123 107
@@ -154,7 +138,6 @@ public: @@ -154,7 +138,6 @@ public:
154 /* login 138 /* login
155 * realiza login com usuario e senha 139 * realiza login com usuario e senha
156 * @return retorna json com sessão e chave de criptografia 140 * @return retorna json com sessão e chave de criptografia
157 - * exemplo: 200 OK  
158 */ 141 */
159 QJsonObject login(bool *ok) { 142 QJsonObject login(bool *ok) {
160 *ok = false; 143 *ok = false;
@@ -162,10 +145,8 @@ public: @@ -162,10 +145,8 @@ public:
162 QVariantMap login; 145 QVariantMap login;
163 login["user"] = this->usuario; 146 login["user"] = this->usuario;
164 login["password"] = this->password; 147 login["password"] = this->password;
165 -// QJsonValue sessionvalue = OCacic.jsonValueFromJsonString(json["reply"].toString(), "session");  
166 // Cria conexão e retorna Json da sessão 148 // Cria conexão e retorna Json da sessão
167 -// qDebug() << "Conectando.";  
168 - QJsonObject retorno = this->comm("/ws/neo/login", ok, QJsonObject::fromVariantMap(login), true); 149 + QJsonObject retorno = this->comm("/ws/neo/getLogin", ok, QJsonObject::fromVariantMap(login), true);
169 if (*ok) 150 if (*ok)
170 this->session = retorno["reply"].toObject()["session"].toString(); 151 this->session = retorno["reply"].toObject()["session"].toString();
171 return retorno; 152 return retorno;
@@ -184,10 +165,8 @@ public: @@ -184,10 +165,8 @@ public:
184 } 165 }
185 166
186 void setUrlGerente(QString value){ 167 void setUrlGerente(QString value){
187 - if (value.contains("http://", Qt::CaseInsensitive)){  
188 - value = value.mid(value.indexOf("http://") + 7);  
189 - } else if (value.contains("https://", Qt::CaseInsensitive)){  
190 - value = value.mid(value.indexOf("https://") + 8); 168 + if (value.contains("://", Qt::CaseInsensitive)){
  169 + value = value.mid(value.indexOf("://") + 3);
191 } 170 }
192 if (value.endsWith("/")){ 171 if (value.endsWith("/")){
193 value.remove(value.size()-1, 1); 172 value.remove(value.size()-1, 1);
src/cacic_hardware.cpp
@@ -13,25 +13,39 @@ void cacic_hardware::iniciaColeta() @@ -13,25 +13,39 @@ void cacic_hardware::iniciaColeta()
13 } 13 }
14 #ifdef Q_OS_WIN 14 #ifdef Q_OS_WIN
15 QJsonObject cacic_hardware::coletaWin() 15 QJsonObject cacic_hardware::coletaWin()
16 -{  
17 -// QAxObject *objIWbemLocator = new QAxObject("WbemScripting.SWbemLocator");  
18 -// QAxObject *objWMIService = objIWbemLocator->querySubObject("ConnectServer(QString&,QString&)",QString("."),QString("root\\cimv2"));  
19 -// if (objWMIService->isNull())  
20 -// {  
21 -// return QJsonObject();  
22 -// }  
23 -// QAxObject *returnList = objWMIService->querySubObject("ExecQuery(QString&)",QString("select SystemType from win32_computersystem"));  
24 -// QAxObject *enum1 = returnList->querySubObject("_NewEnum");  
25 -// IEnumVARIANT* enumInterface; //to get this, include <windows.h>  
26 -// enum1->queryInterface(IID_IEnumVARIANT, (void**)&enumInterface);  
27 -// enumInterface->Reset(); //start at the beginning of the list.  
28 -// for (int i=0;i<returnList->dynamicCall("Count").toInt();i++){  
29 -// VARIANT *theItem;  
30 -// enumInterface->Next(1,theItem,NULL);  
31 -// QAxObject *item = new QAxObject((IUnknown *)theItem->punkVal);  
32 -// qDebug() << item->dynamicCall("Caption");  
33 -// }  
34 - 16 +{
  17 + QAxObject *objIWbemLocator = new QAxObject("WbemScripting.SWbemLocator");
  18 + QAxObject *objWMIService = objIWbemLocator->querySubObject("ConnectServer(QString&,QString&)",
  19 + QString("."),
  20 + QString("root\\CIMV2")
  21 + );
  22 + QAxObject* returnList = objWMIService->querySubObject("ExecQuery(QString&)",
  23 + QString("SELECT * FROM Win32_ComputerSystem")
  24 + );
  25 + QAxObject *enum1 = returnList->querySubObject("_NewEnum");
  26 + //ui->textBrowser_4->setHtml(enum1->generateDocumentation());
  27 + IEnumVARIANT* enumInterface = 0;
  28 + enum1->queryInterface(IID_IEnumVARIANT, (void**)&enumInterface);
  29 +
  30 + //ui->textBrowser_4->setHtml(enumInterface->);
  31 + enumInterface->Reset();
  32 + // QAxObject *item = 0;
  33 +
  34 + //qDebug()<<"the count of objinterlist is "<<QString::number(objInterList->dynamicCall("Count").toInt());
  35 + for (int i = 0; i < returnList->dynamicCall("Count").toInt(); i++) {
  36 + VARIANT *theItem = (VARIANT*)malloc(sizeof(VARIANT));
  37 + if (enumInterface->Next(1,theItem,NULL) != S_FALSE){
  38 + QAxObject *item = new QAxObject((IUnknown *)theItem->punkVal);
  39 +
  40 + if(item){
  41 + qDebug() <<" string is "<<item->dynamicCall("ProcessorId").toString();
  42 + qDebug() <<" string is "<<item->dynamicCall("GetText_(WbemObjectTextFormatEnum)", QVariant(1)).toString();
  43 + }
  44 + // item->
  45 + //QString val =
  46 + qDebug()<<"item name is "<< item->property("objectName").toString();
  47 + }
  48 + }
35 return QJsonObject(); 49 return QJsonObject();
36 } 50 }
37 #elif Q_OS_LINUX 51 #elif Q_OS_LINUX
src/cacic_hardware.h
@@ -8,8 +8,8 @@ @@ -8,8 +8,8 @@
8 #include <console.h> 8 #include <console.h>
9 #include <operatingsystem.h> 9 #include <operatingsystem.h>
10 #ifdef Q_OS_WIN 10 #ifdef Q_OS_WIN
11 -// #include <QAxObject>  
12 #include <windows.h> 11 #include <windows.h>
  12 + #include <ActiveQt/ActiveQt>
13 #endif 13 #endif
14 14
15 class cacic_hardware 15 class cacic_hardware