Commit dab2fadb6aa331e2f899341baa37b7e23acaff44
1 parent
f78ed3f8
Exists in
master
debug e merge
Showing
8 changed files
with
36 additions
and
201 deletions
Show diff stats
cacic-teste/cacic-teste.pro
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | 6 | ||
| 7 | QT += testlib | 7 | QT += testlib |
| 8 | QT += network | 8 | QT += network |
| 9 | - | 9 | +QT += axcontainer |
| 10 | TARGET = cacic-teste | 10 | TARGET = cacic-teste |
| 11 | CONFIG -= app_bundle | 11 | CONFIG -= app_bundle |
| 12 | CONFIG += c++11 | 12 | CONFIG += c++11 |
| @@ -21,10 +21,11 @@ SOURCES += \ | @@ -21,10 +21,11 @@ SOURCES += \ | ||
| 21 | testcacic.cpp \ | 21 | testcacic.cpp \ |
| 22 | ../src/ccacic.cpp \ | 22 | ../src/ccacic.cpp \ |
| 23 | ../src/cacic_computer.cpp \ | 23 | ../src/cacic_computer.cpp \ |
| 24 | - ../src/cacic_hardware.cpp \ | ||
| 25 | ../src/operatingsystem.cpp \ | 24 | ../src/operatingsystem.cpp \ |
| 26 | ../src/cacic_software.cpp \ | 25 | ../src/cacic_software.cpp \ |
| 27 | ../src/cacic_hardware.cpp \ | 26 | ../src/cacic_hardware.cpp \ |
| 27 | + ../src/vqtconvert.cpp \ | ||
| 28 | + ../src/vregistry.cpp \ | ||
| 28 | # ../src/qtservice/src/qtservice.cpp \ | 29 | # ../src/qtservice/src/qtservice.cpp \ |
| 29 | # ../src/qtservice/src/qtservice_unix.cpp \ | 30 | # ../src/qtservice/src/qtservice_unix.cpp \ |
| 30 | # ../src/qtservice/src/qtservice_win.cpp \ | 31 | # ../src/qtservice/src/qtservice_win.cpp \ |
| @@ -36,17 +37,19 @@ HEADERS += \ | @@ -36,17 +37,19 @@ HEADERS += \ | ||
| 36 | testcacic.h \ | 37 | testcacic.h \ |
| 37 | ../src/ccacic.h \ | 38 | ../src/ccacic.h \ |
| 38 | ../src/cacic_computer.h \ | 39 | ../src/cacic_computer.h \ |
| 39 | - ../src/cacic_hardware.h \ | ||
| 40 | ../src/cacic_comm.h \ | 40 | ../src/cacic_comm.h \ |
| 41 | ../src/console.h \ | 41 | ../src/console.h \ |
| 42 | ../src/operatingsystem.h \ | 42 | ../src/operatingsystem.h \ |
| 43 | ../src/cacic_software.h \ | 43 | ../src/cacic_software.h \ |
| 44 | ../src/cacic_hardware.h \ | 44 | ../src/cacic_hardware.h \ |
| 45 | + ../src/vqtconvert.h \ | ||
| 46 | + ../src/vregistry.h \ | ||
| 45 | # ../src/qtservice/src/qtservice.h \ | 47 | # ../src/qtservice/src/qtservice.h \ |
| 46 | # ../src/qtservice/src/qtservice_p.h \ | 48 | # ../src/qtservice/src/qtservice_p.h \ |
| 47 | # ../src/qtservice/src/qtunixserversocket.h \ | 49 | # ../src/qtservice/src/qtunixserversocket.h \ |
| 48 | # ../src/qtservice/src/qtunixsocket.h | 50 | # ../src/qtservice/src/qtunixsocket.h |
| 49 | - ../src/cacic_hardware.h | ||
| 50 | 51 | ||
| 51 | INCLUDEPATH += ../src \ | 52 | INCLUDEPATH += ../src \ |
| 52 | ../src/crypto++/include/ | 53 | ../src/crypto++/include/ |
| 54 | + | ||
| 55 | +include(../src/qtservice/src/qtservice.pri) |
cacic-teste/testcacic.cpp
| @@ -190,25 +190,6 @@ void CTestCacic::testStartService() | @@ -190,25 +190,6 @@ void CTestCacic::testStartService() | ||
| 190 | QVERIFY(ok); | 190 | QVERIFY(ok); |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | -void CTestCacic::testReadConfig() | ||
| 194 | -{ | ||
| 195 | - | ||
| 196 | -// // Inicializa um arquivo de configuração stub | ||
| 197 | -// // que seria parecido com o recebido do Gerente | ||
| 198 | -// QJsonObject configJson; | ||
| 199 | -// QJsonObject configHardware; | ||
| 200 | - | ||
| 201 | -// configHardware["computador"] = OCacicComp.toJsonObject(); | ||
| 202 | - | ||
| 203 | -// configJson["hardware"] = configHardware; | ||
| 204 | - | ||
| 205 | -// OCacic.setJsonToFile(configJson,"configRequest.json"); | ||
| 206 | - | ||
| 207 | - // Leitura do arquivo de configuração | ||
| 208 | - | ||
| 209 | - QVERIFY(false); | ||
| 210 | -} | ||
| 211 | - | ||
| 212 | void CTestCacic::testSetRegistry() | 193 | void CTestCacic::testSetRegistry() |
| 213 | { | 194 | { |
| 214 | QVariantMap valueMap; | 195 | QVariantMap valueMap; |
cacic-teste/testcacic.h
| @@ -16,9 +16,6 @@ | @@ -16,9 +16,6 @@ | ||
| 16 | #include <iostream> | 16 | #include <iostream> |
| 17 | #include <QtNetwork/QtNetwork> | 17 | #include <QtNetwork/QtNetwork> |
| 18 | #include <QJsonObject> | 18 | #include <QJsonObject> |
| 19 | -#include "../install-cacic/installcacic.h" | ||
| 20 | -#include "../gercols/gercols.h" | ||
| 21 | -#include "../cacicD/cacicd.h" | ||
| 22 | 19 | ||
| 23 | class CTestCacic : public QObject | 20 | class CTestCacic : public QObject |
| 24 | { | 21 | { |
| @@ -66,7 +63,6 @@ private slots: | @@ -66,7 +63,6 @@ private slots: | ||
| 66 | void testJsonToFile(); | 63 | void testJsonToFile(); |
| 67 | void testJsonFromFile(); | 64 | void testJsonFromFile(); |
| 68 | void testStartService(); | 65 | void testStartService(); |
| 69 | - void testReadConfig(); | ||
| 70 | void testSetRegistry(); | 66 | void testSetRegistry(); |
| 71 | void testGetValueFromRegistry(); | 67 | void testGetValueFromRegistry(); |
| 72 | void testRemoveRegistry(); | 68 | void testRemoveRegistry(); |
gercols/gercols.pro
install-cacic/install-cacic.pro.user
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE QtCreatorProject> | 2 | <!DOCTYPE QtCreatorProject> |
| 3 | -<!-- Written by QtCreator 3.1.2, 2014-08-20T18:37:20. --> | 3 | +<!-- Written by QtCreator 3.1.2, 2014-08-26T18:17:49. --> |
| 4 | <qtcreator> | 4 | <qtcreator> |
| 5 | <data> | 5 | <data> |
| 6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> | 6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
src/cacic_hardware.cpp
| 1 | #include "cacic_hardware.h" | 1 | #include "cacic_hardware.h" |
| 2 | - | ||
| 3 | cacic_hardware::cacic_hardware() | 2 | cacic_hardware::cacic_hardware() |
| 4 | { | 3 | { |
| 5 | } | 4 | } |
| @@ -12,15 +11,30 @@ void cacic_hardware::iniciaColeta() | @@ -12,15 +11,30 @@ void cacic_hardware::iniciaColeta() | ||
| 12 | this->coletaHardware = coletaLinux(); | 11 | this->coletaHardware = coletaLinux(); |
| 13 | #endif | 12 | #endif |
| 14 | } | 13 | } |
| 15 | - | 14 | +#ifdef Q_OS_WIN |
| 16 | QJsonObject cacic_hardware::coletaWin() | 15 | QJsonObject cacic_hardware::coletaWin() |
| 17 | { | 16 | { |
| 18 | -#if defined(Q_OS_WIN) | ||
| 19 | - // Implementação seguindo as definições na documentação WMI. | ||
| 20 | -#endif | 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 | + | ||
| 21 | return QJsonObject(); | 35 | return QJsonObject(); |
| 22 | } | 36 | } |
| 23 | - | 37 | +#elif Q_OS_LINUX |
| 24 | QJsonObject cacic_hardware::coletaLinux() | 38 | QJsonObject cacic_hardware::coletaLinux() |
| 25 | { | 39 | { |
| 26 | 40 | ||
| @@ -78,161 +92,6 @@ QJsonObject cacic_hardware::coletaLinux() | @@ -78,161 +92,6 @@ QJsonObject cacic_hardware::coletaLinux() | ||
| 78 | return hardware; | 92 | return hardware; |
| 79 | } | 93 | } |
| 80 | 94 | ||
| 81 | -int cacic_hardware::wmi() | ||
| 82 | -{ | ||
| 83 | -// HRESULT hres; | ||
| 84 | - | ||
| 85 | -// // Step 1: -------------------------------------------------- | ||
| 86 | -// // Initialize COM. ------------------------------------------ | ||
| 87 | - | ||
| 88 | -// hres = CoInitializeEx(0, COINIT_MULTITHREADED); | ||
| 89 | -// if (FAILED(hres)) | ||
| 90 | -// { | ||
| 91 | -// cout << "Failed to initialize COM library. Error code = 0x" | ||
| 92 | -// << hex << hres << endl; | ||
| 93 | -// return 1; // Program has failed. | ||
| 94 | -// } | ||
| 95 | - | ||
| 96 | -// // Step 2: -------------------------------------------------- | ||
| 97 | -// // Set general COM security levels -------------------------- | ||
| 98 | - | ||
| 99 | -// hres = CoInitializeSecurity( | ||
| 100 | -// NULL, | ||
| 101 | -// -1, // COM authentication | ||
| 102 | -// NULL, // Authentication services | ||
| 103 | -// NULL, // Reserved | ||
| 104 | -// RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication | ||
| 105 | -// RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation | ||
| 106 | -// NULL, // Authentication info | ||
| 107 | -// EOAC_NONE, // Additional capabilities | ||
| 108 | -// NULL // Reserved | ||
| 109 | -// ); | ||
| 110 | - | ||
| 111 | - | ||
| 112 | -// if (FAILED(hres)) | ||
| 113 | -// { | ||
| 114 | -// cout << "Failed to initialize security. Error code = 0x" | ||
| 115 | -// << hex << hres << endl; | ||
| 116 | -// CoUninitialize(); | ||
| 117 | -// return 1; // Program has failed. | ||
| 118 | -// } | ||
| 119 | - | ||
| 120 | -// // Step 3: --------------------------------------------------- | ||
| 121 | -// // Obtain the initial locator to WMI ------------------------- | ||
| 122 | - | ||
| 123 | -// IWbemLocator *pLoc = NULL; | ||
| 124 | - | ||
| 125 | -// hres = CoCreateInstance( | ||
| 126 | -// CLSID_WbemLocator, | ||
| 127 | -// 0, | ||
| 128 | -// CLSCTX_INPROC_SERVER, | ||
| 129 | -// IID_IWbemLocator, (LPVOID *) &pLoc); | ||
| 130 | - | ||
| 131 | -// if (FAILED(hres)) | ||
| 132 | -// { | ||
| 133 | -// cout << "Failed to create IWbemLocator object." | ||
| 134 | -// << " Err code = 0x" | ||
| 135 | -// << hex << hres << endl; | ||
| 136 | -// CoUninitialize(); | ||
| 137 | -// return 1; // Program has failed. | ||
| 138 | -// } | ||
| 139 | - | ||
| 140 | -// // Step 4: ----------------------------------------------------- | ||
| 141 | -// // Connect to WMI through the IWbemLocator::ConnectServer method | ||
| 142 | - | ||
| 143 | -// IWbemServices *pSvc = NULL; | ||
| 144 | - | ||
| 145 | -// // Connect to the local root\cimv2 namespace | ||
| 146 | -// // and obtain pointer pSvc to make IWbemServices calls. | ||
| 147 | -// hres = pLoc->ConnectServer( | ||
| 148 | -// _bstr_t(L"ROOT\\CIMV2"), | ||
| 149 | -// NULL, | ||
| 150 | -// NULL, | ||
| 151 | -// 0, | ||
| 152 | -// NULL, | ||
| 153 | -// 0, | ||
| 154 | -// 0, | ||
| 155 | -// &pSvc | ||
| 156 | -// ); | ||
| 157 | - | ||
| 158 | -// if (FAILED(hres)) | ||
| 159 | -// { | ||
| 160 | -// cout << "Could not connect. Error code = 0x" | ||
| 161 | -// << hex << hres << endl; | ||
| 162 | -// pLoc->Release(); | ||
| 163 | -// CoUninitialize(); | ||
| 164 | -// return 1; // Program has failed. | ||
| 165 | -// } | ||
| 166 | - | ||
| 167 | -// cout << "Connected to ROOT\\CIMV2 WMI namespace" << endl; | ||
| 168 | - | ||
| 169 | - | ||
| 170 | -// // Step 5: -------------------------------------------------- | ||
| 171 | -// // Set security levels on the proxy ------------------------- | ||
| 172 | - | ||
| 173 | -// hres = CoSetProxyBlanket( | ||
| 174 | -// pSvc, // Indicates the proxy to set | ||
| 175 | -// RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx | ||
| 176 | -// RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx | ||
| 177 | -// NULL, // Server principal name | ||
| 178 | -// RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx | ||
| 179 | -// RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx | ||
| 180 | -// NULL, // client identity | ||
| 181 | -// EOAC_NONE // proxy capabilities | ||
| 182 | -// ); | ||
| 183 | - | ||
| 184 | -// if (FAILED(hres)) | ||
| 185 | -// { | ||
| 186 | -// cout << "Could not set proxy blanket. Error code = 0x" | ||
| 187 | -// << hex << hres << endl; | ||
| 188 | -// pSvc->Release(); | ||
| 189 | -// pLoc->Release(); | ||
| 190 | -// CoUninitialize(); | ||
| 191 | -// return 1; // Program has failed. | ||
| 192 | -// } | ||
| 193 | - | ||
| 194 | -// // Step 6: -------------------------------------------------- | ||
| 195 | -// // Use the IWbemServices pointer to make requests of WMI ---- | ||
| 196 | - | ||
| 197 | -// // For example, get the name of the operating system. | ||
| 198 | -// // The IWbemService::ExecQueryAsync method will call | ||
| 199 | -// // the QuerySink::Indicate method when it receives a result | ||
| 200 | -// // and the QuerySink::Indicate method will display the OS name | ||
| 201 | -// QuerySink* pResponseSink = new QuerySink(); | ||
| 202 | -// hres = pSvc->ExecQueryAsync( | ||
| 203 | -// bstr_t("WQL"), | ||
| 204 | -// bstr_t("SELECT * FROM Win32_OperatingSystem"), | ||
| 205 | -// WBEM_FLAG_BIDIRECTIONAL, | ||
| 206 | -// NULL, | ||
| 207 | -// pResponseSink); | ||
| 208 | - | ||
| 209 | -// if (FAILED(hres)) | ||
| 210 | -// { | ||
| 211 | -// cout << "Query for operating system name failed." | ||
| 212 | -// << " Error code = 0x" | ||
| 213 | -// << hex << hres << endl; | ||
| 214 | -// pSvc->Release(); | ||
| 215 | -// pLoc->Release(); | ||
| 216 | -// pResponseSink->Release(); | ||
| 217 | -// CoUninitialize(); | ||
| 218 | -// return 1; // Program has failed. | ||
| 219 | -// } | ||
| 220 | - | ||
| 221 | -// // Step 7: ------------------------------------------------- | ||
| 222 | -// // Wait to get the data from the query in step 6 ----------- | ||
| 223 | -// Sleep(500); | ||
| 224 | -// pSvc->CancelAsyncCall(pResponseSink); | ||
| 225 | - | ||
| 226 | -// // Cleanup | ||
| 227 | -// // ======== | ||
| 228 | -// pSvc->Release(); | ||
| 229 | -// pLoc->Release(); | ||
| 230 | -// CoUninitialize(); | ||
| 231 | - | ||
| 232 | - return 0; // Program successfully completed. | ||
| 233 | - | ||
| 234 | -} | ||
| 235 | - | ||
| 236 | void cacic_hardware::coletaLinuxMem(QJsonObject &hardware, const QJsonObject &component) | 95 | void cacic_hardware::coletaLinuxMem(QJsonObject &hardware, const QJsonObject &component) |
| 237 | { | 96 | { |
| 238 | QJsonObject memory; | 97 | QJsonObject memory; |
| @@ -297,7 +156,7 @@ void cacic_hardware::coletaLinuxPci(QJsonObject &hardware, const QJsonObject &pc | @@ -297,7 +156,7 @@ void cacic_hardware::coletaLinuxPci(QJsonObject &hardware, const QJsonObject &pc | ||
| 297 | } | 156 | } |
| 298 | } | 157 | } |
| 299 | } | 158 | } |
| 300 | - | 159 | +#endif |
| 301 | QJsonObject cacic_hardware::toJsonObject() { | 160 | QJsonObject cacic_hardware::toJsonObject() { |
| 302 | return coletaHardware; | 161 | return coletaHardware; |
| 303 | } | 162 | } |
src/cacic_hardware.h
| @@ -3,20 +3,13 @@ | @@ -3,20 +3,13 @@ | ||
| 3 | #include <ccacic.h> | 3 | #include <ccacic.h> |
| 4 | #include <QtCore> | 4 | #include <QtCore> |
| 5 | #include <QJsonArray> | 5 | #include <QJsonArray> |
| 6 | -#include <QJsonArray> | ||
| 7 | #include <cmath> | 6 | #include <cmath> |
| 8 | #include <ccacic.h> | 7 | #include <ccacic.h> |
| 9 | #include <console.h> | 8 | #include <console.h> |
| 10 | #include <operatingsystem.h> | 9 | #include <operatingsystem.h> |
| 11 | - | ||
| 12 | -#if defined(Q_OS_WIN) | ||
| 13 | - #define _WIN32_DCOM | ||
| 14 | - #include <iostream> | ||
| 15 | - //using namespace std; | ||
| 16 | - #include <wbemidl.h> | 10 | +#ifdef Q_OS_WIN |
| 11 | + #include <QAxObject> | ||
| 17 | #include <windows.h> | 12 | #include <windows.h> |
| 18 | - # pragma comment(lib, "wbemuuid.lib") | ||
| 19 | - | ||
| 20 | #endif | 13 | #endif |
| 21 | 14 | ||
| 22 | class cacic_hardware | 15 | class cacic_hardware |
| @@ -27,12 +20,14 @@ public: | @@ -27,12 +20,14 @@ public: | ||
| 27 | QJsonObject toJsonObject(); | 20 | QJsonObject toJsonObject(); |
| 28 | 21 | ||
| 29 | private: | 22 | private: |
| 30 | - int wmi(); | 23 | +#ifdef Q_OS_WIN |
| 31 | QJsonObject coletaWin(); | 24 | QJsonObject coletaWin(); |
| 25 | +#elif Q_OS_LINUX | ||
| 32 | QJsonObject coletaLinux(); | 26 | QJsonObject coletaLinux(); |
| 33 | void coletaLinuxMem(QJsonObject &hardware, const QJsonObject &component); | 27 | void coletaLinuxMem(QJsonObject &hardware, const QJsonObject &component); |
| 34 | void coletaLinuxCpu(QJsonObject &hardware, const QJsonObject &component); | 28 | void coletaLinuxCpu(QJsonObject &hardware, const QJsonObject &component); |
| 35 | void coletaLinuxPci(QJsonObject &hardware, const QJsonObject &pciJson); | 29 | void coletaLinuxPci(QJsonObject &hardware, const QJsonObject &pciJson); |
| 30 | +#endif | ||
| 36 | 31 | ||
| 37 | CCacic oCacic; | 32 | CCacic oCacic; |
| 38 | QJsonObject coletaHardware; | 33 | QJsonObject coletaHardware; |
src/cacic_software.cpp
| @@ -49,7 +49,7 @@ QJsonObject cacic_software::coletaWin() | @@ -49,7 +49,7 @@ QJsonObject cacic_software::coletaWin() | ||
| 49 | 49 | ||
| 50 | softwaresJson[key] = QJsonObject::fromVariantMap(software); | 50 | softwaresJson[key] = QJsonObject::fromVariantMap(software); |
| 51 | } | 51 | } |
| 52 | - qDebug() << softwaresJson; | 52 | +// qDebug() << softwaesJson; |
| 53 | } | 53 | } |
| 54 | return softwaresJson; | 54 | return softwaresJson; |
| 55 | } | 55 | } |