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 6  
7 7 QT += testlib
8 8 QT += network
9   -QT += axcontainer
  9 +
10 10 TARGET = cacic-teste
  11 +
  12 +QT += axcontainer
11 13 CONFIG -= app_bundle
12 14 CONFIG += c++11
13 15 TEMPLATE = app
... ...
cacic-teste/testcacic.cpp
... ... @@ -158,6 +158,7 @@ void CTestCacic::testDeCrypt(){
158 158 void CTestCacic::testCacicCompToJsonObject()
159 159 {
160 160 // qDebug() << OCacicComp.toJsonObject();
  161 +// OCacic.setJsonToFile(OCacicComp.toJsonObject(), "jsoncomp.json");
161 162 QVERIFY(!OCacicComp.toJsonObject().empty());
162 163 }
163 164  
... ... @@ -238,6 +239,15 @@ void CTestCacic::testConvertDouble()
238 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 251 void CTestCacic::cleanupTestCase()
242 252 {
243 253 OCacic.deleteFile("configRequest.json");
... ...
cacic-teste/testcacic.h
... ... @@ -70,6 +70,7 @@ private slots:
70 70 void testColetaSoftware();
71 71 void testColetaHardware();
72 72 void testConvertDouble();
  73 + void testGetTest();
73 74 void cleanupTestCase();
74 75 };
75 76  
... ...
src/cacic_comm.h
... ... @@ -19,7 +19,6 @@ private:
19 19 QUrlQuery params;
20 20 QString urlGerente;
21 21 QString urlSsl;
22   - // FIXME: Get from configuration
23 22 QString usuario;
24 23 QString password;
25 24 QString session;
... ... @@ -67,35 +66,27 @@ public:
67 66 url = "http://" + urlGerente + route;
68 67 req.setUrl(url);
69 68 req.setHeader(QNetworkRequest::LocationHeader, "Cacic Agente");
70   - if (json.empty())
71   - {
  69 + if (json.empty()){
72 70 //se não for passado QJson, será mandado os valores do get/test antigo. (Será retirado depois)
73 71 req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
74 72 data.append(params.toString());
75 73 } else {
76 74 // Add JSON
77 75 QJsonDocument d(json);
78   - data.append(d.toVariant().toString());
  76 + data.append(d.toJson());
79 77 req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
80 78 }
81   -// qDebug() << QString::fromUtf8(d.toJson().trimmed());
82   - // cria um event-loop temporario
83 79 QEventLoop eventLoop;
84   - // "quit()" o event-loop, when the network request "finished()"
85 80 QNetworkAccessManager mgr;
86 81 QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
87 82  
88   - // a requisição HTTP
89   -
90 83 QNetworkReply *reply = mgr.post(req, data);
91 84 if (!reply->sslConfiguration().isNull()){
92   -// qDebug() << "Eh ssl";
93 85 reply->ignoreSslErrors();
94 86 }
95 87 eventLoop.exec(); // sai do looping chamando o "finished()".
96   - //grava codigo de retorno
  88 +
97 89 jsonObj.insert("codestatus", QJsonValue::fromVariant(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute)));
98   -// qDebug() << "code: " << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString();
99 90  
100 91 if (reply->error() == QNetworkReply::NoError) {
101 92 //se não houver erro, grava o retorno;
... ... @@ -104,20 +95,13 @@ public:
104 95 jsonObj["reply"] = (!replyDocument.isNull()) ?
105 96 replyDocument.object() :
106 97 QJsonValue::fromVariant(replyVariant.toString());
107   -// qDebug() << "Response:" << jsonObj["reply"];
108   -// qDebug() << "Response:" << strReply;
109 98 *ok = true;
110 99 delete reply;
111 100 } else {
112   - //failure
113   -// qDebug() << "Failure" <<reply->errorString();
114 101 strReply = reply->errorString();
115 102 jsonObj.insert("error", QJsonValue::fromVariant(strReply));
116 103 delete reply;
117   -
118   -
119 104 }
120   - //retorna o json;
121 105 return jsonObj;
122 106 }
123 107  
... ... @@ -154,7 +138,6 @@ public:
154 138 /* login
155 139 * realiza login com usuario e senha
156 140 * @return retorna json com sessão e chave de criptografia
157   - * exemplo: 200 OK
158 141 */
159 142 QJsonObject login(bool *ok) {
160 143 *ok = false;
... ... @@ -162,10 +145,8 @@ public:
162 145 QVariantMap login;
163 146 login["user"] = this->usuario;
164 147 login["password"] = this->password;
165   -// QJsonValue sessionvalue = OCacic.jsonValueFromJsonString(json["reply"].toString(), "session");
166 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 150 if (*ok)
170 151 this->session = retorno["reply"].toObject()["session"].toString();
171 152 return retorno;
... ... @@ -184,10 +165,8 @@ public:
184 165 }
185 166  
186 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 171 if (value.endsWith("/")){
193 172 value.remove(value.size()-1, 1);
... ...
src/cacic_hardware.cpp
... ... @@ -13,25 +13,39 @@ void cacic_hardware::iniciaColeta()
13 13 }
14 14 #ifdef Q_OS_WIN
15 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 49 return QJsonObject();
36 50 }
37 51 #elif Q_OS_LINUX
... ...
src/cacic_hardware.h
... ... @@ -8,8 +8,8 @@
8 8 #include <console.h>
9 9 #include <operatingsystem.h>
10 10 #ifdef Q_OS_WIN
11   -// #include <QAxObject>
12 11 #include <windows.h>
  12 + #include <ActiveQt/ActiveQt>
13 13 #endif
14 14  
15 15 class cacic_hardware
... ...