Commit ebd01e4b5cbb0c20d7bdfd1ab0faf5db6b16f9b3
1 parent
df1422ff
Exists in
master
Modificação do esquema de verificação dos módulos. (Não funcional ainda)
Showing
8 changed files
with
214 additions
and
182 deletions
Show diff stats
cacic-daemon/cacicD/cacicd.cpp
... | ... | @@ -40,7 +40,7 @@ void cacicD::start() { |
40 | 40 | //o valor nu_intervalo_exec vem em minutos. O valor que o timer aceita é em milisegundos,por isso 60000 |
41 | 41 | Ocacictimer->setPeriodicidadeExecucao(configuracoes["nu_intervalo_exec"].toString().toInt() * 60000); |
42 | 42 | Ocacictimer->iniciarTimer(); |
43 | - }else{ | |
43 | + } else { | |
44 | 44 | //Iniciar com um timer default (4 horas), pra não ficar freezado pra sempre. |
45 | 45 | QLogger::QLog_Error("Cacic Daemon", QString("Problemas com o arquivo getConfig.json")); |
46 | 46 | QLogger::QLog_Info("Cacic Daemon", QString("Inicializando periodicidade de execução do serviço com tempo padrão.")); | ... | ... |
cacic-daemon/cacicD/cacictimer.cpp
... | ... | @@ -48,42 +48,44 @@ void CacicTimer::mslot(){ |
48 | 48 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Não foi possivel verificar a periodicidade no getConfig.json")); |
49 | 49 | } |
50 | 50 | |
51 | - verificarEIniciarQMutex(); | |
52 | - | |
53 | - if(getTest()){ | |
54 | - QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getTeste() success.")); | |
55 | - if(getConfig()){ | |
56 | - QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getConfig() success.")); | |
57 | - // QStringList nomesModulos = verificarModulos(); | |
58 | - // if ( !nomesModulos.empty() ) { | |
59 | - // foreach( QString nome, nomesModulos ) { | |
60 | - QString nome = "gercols"; | |
61 | - definirDirModulo(getApplicationDirPath(), nome); | |
62 | - cacicthread->setCcacic(ccacic); | |
63 | - cacicthread->setOCacicComm(OCacicComm); | |
64 | - cacicthread->setNomeModulo(nome); | |
65 | - cacicthread->setCMutex(cMutex); | |
66 | - cacicthread->setModuloDirPath(getDirProgram()); | |
67 | - cacicthread->start(QThread::NormalPriority); | |
68 | -// if(nome == "gercols" ){ | |
69 | -// //Envio do json gerado na coleta | |
70 | -// bool ok = false; | |
71 | -// QJsonObject jsonColeta = ccacic->getJsonFromFile(this->applicationDirPath + "/coleta.json"); | |
72 | -// OCacicComm->comm("/ws/neo/coleta", &ok, jsonColeta , false); | |
73 | -// if(&ok){ | |
74 | -// QLogger::QLog_Info("Cacic Daemon (Timer)", QString("coleta enviada com sucesso.")); | |
75 | -// } | |
76 | -// } | |
51 | + //Caso verifique que a thread ainda está em execução e não consiga finalizá-la. | |
52 | + //Acredito que seja difícil acontecer, mas vai que... | |
53 | + if (verificarEIniciarQMutex()) { | |
54 | + if(getTest()){ | |
55 | + QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getTeste() success.")); | |
56 | + if(getConfig()){ | |
57 | + QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getConfig() success.")); | |
58 | + // QStringList nomesModulos = verificarModulos(); | |
59 | + // if ( !nomesModulos.empty() ) { | |
60 | + // foreach( QString nome, nomesModulos ) { | |
61 | + QString nome = "gercols"; | |
62 | + definirDirModulo(getApplicationDirPath(), nome); | |
63 | + cacicthread->setCcacic(ccacic); | |
64 | + cacicthread->setOCacicComm(OCacicComm); | |
65 | + cacicthread->setNomeModulo(nome); | |
66 | + cacicthread->setCMutex(cMutex); | |
67 | + cacicthread->setModuloDirPath(getDirProgram()); | |
68 | + cacicthread->start(QThread::NormalPriority); | |
69 | + // if(nome == "gercols" ){ | |
70 | + // //Envio do json gerado na coleta | |
71 | + // bool ok = false; | |
72 | + // QJsonObject jsonColeta = ccacic->getJsonFromFile(this->applicationDirPath + "/coleta.json"); | |
73 | + // OCacicComm->comm("/ws/neo/coleta", &ok, jsonColeta , false); | |
74 | + // if(&ok){ | |
75 | + // QLogger::QLog_Info("Cacic Daemon (Timer)", QString("coleta enviada com sucesso.")); | |
76 | + // } | |
77 | + // } | |
78 | + }else{ | |
79 | + QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na obtenção do arquivo de configuração."); | |
80 | + } | |
77 | 81 | }else{ |
78 | - QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na obtenção do arquivo de configuração."); | |
82 | + QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na execução do getTest()."); | |
79 | 83 | } |
80 | - }else{ | |
81 | - QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na execução do getTest()."); | |
82 | 84 | } |
83 | 85 | } |
84 | 86 | |
85 | 87 | |
86 | -void CacicTimer::verificarEIniciarQMutex(){ | |
88 | +bool CacicTimer::verificarEIniciarQMutex(){ | |
87 | 89 | if(!cacicthread->isRunning()){ |
88 | 90 | cMutex->lock(); |
89 | 91 | QLogger::QLog_Info("Cacic Daemon (Timer)", "Semáforo fechado com sucesso."); |
... | ... | @@ -94,10 +96,11 @@ void CacicTimer::verificarEIniciarQMutex(){ |
94 | 96 | QLogger::QLog_Info("Cacic Daemon (Timer)", "Gercols finalizado com sucesso."); |
95 | 97 | }catch (...){ |
96 | 98 | QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha ao finalizar gercols."); |
97 | - return; | |
99 | + return false; | |
98 | 100 | } |
99 | 101 | cMutex->lock(); |
100 | 102 | QLogger::QLog_Info("Cacic Daemon (Timer)", "Semáforo fechado com sucesso."); |
103 | + return true; | |
101 | 104 | } |
102 | 105 | } |
103 | 106 | |
... | ... | @@ -120,7 +123,7 @@ bool CacicTimer::getTest(){ |
120 | 123 | try{ |
121 | 124 | ccacic->setJsonToFile(jsonresult.contains("reply") ? jsonresult["reply"].toObject() : jsonresult, |
122 | 125 | this->applicationDirPath + "/getTest.json"); |
123 | - return true; //acho que seria melhor retornar a variável 'ok'. Se der erro na conexão eu acho que não cai no catch. | |
126 | + return ok; | |
124 | 127 | } catch (...) { |
125 | 128 | qDebug() << "Erro ao salvar o arquivo de configurações."; |
126 | 129 | return false; |
... | ... | @@ -146,7 +149,7 @@ bool CacicTimer::getConfig(){ |
146 | 149 | try{ |
147 | 150 | ccacic->setJsonToFile(jsonresult.contains("reply") ? jsonresult["reply"].toObject() : jsonresult, |
148 | 151 | this->applicationDirPath + "/getConfigNew.json"); |
149 | - return true; //mesma observação do getTest | |
152 | + return ok; | |
150 | 153 | } catch (...) { |
151 | 154 | qDebug() << "Erro ao salvar o arquivo de configurações."; |
152 | 155 | return false; |
... | ... | @@ -157,47 +160,6 @@ bool CacicTimer::getConfig(){ |
157 | 160 | } |
158 | 161 | } |
159 | 162 | |
160 | -void CacicTimer::lerArquivoConfig ( const QJsonObject& jsonConfig ) | |
161 | -{ | |
162 | - /* lê json de configurações e armazena quais módulos executáveis. | |
163 | - * E faz o mesmo tipo de comparação de hashs, com o fim de: | |
164 | - * ou mantem o binário do módulo ou baixa um novo. | |
165 | - */ | |
166 | - foreach( QJsonValue individualModule, jsonConfig["modulos"].toArray() ) { | |
167 | - QString moduloKey, moduloValue; | |
168 | - | |
169 | - moduloKey = individualModule.toObject()["hash"].toString(); | |
170 | - moduloValue = individualModule.toObject()["nome"].toString(); | |
171 | - | |
172 | - moduleMap.insert(moduloKey, moduloValue); | |
173 | - } | |
174 | - | |
175 | - if ( jsonConfig["metodoDownload"].isArray() ) { | |
176 | - | |
177 | - foreach (QJsonValue individualMetodo, jsonConfig["metodoDownload"].toArray() ) { | |
178 | - QMap<QString, QString> newEntry; | |
179 | - | |
180 | - newEntry.insert(QString("tipo"), individualMetodo.toObject()["tipo"].toString() ); | |
181 | - newEntry.insert(QString("url"), individualMetodo.toObject()["url"].toString() ); | |
182 | - newEntry.insert(QString("path"), individualMetodo.toObject()["path"].toString() ); | |
183 | - newEntry.insert(QString("usuario"), individualMetodo.toObject()["usario"].toString() ); | |
184 | - newEntry.insert(QString("senha"), individualMetodo.toObject()["senha"].toString() ); | |
185 | - | |
186 | - metodosDownload.append( newEntry ); | |
187 | - } | |
188 | - } else { | |
189 | - QMap<QString, QString> newEntry; | |
190 | - | |
191 | - newEntry.insert(QString("tipo"), jsonConfig["metodoDownload"].toObject()["tipo"].toString() ); | |
192 | - newEntry.insert(QString("url"), jsonConfig["metodoDownload"].toObject()["url"].toString() ); | |
193 | - newEntry.insert(QString("path"), jsonConfig["metodoDownload"].toObject()["path"].toString() ); | |
194 | - newEntry.insert(QString("usuario"), jsonConfig["metodoDownload"].toObject()["usario"].toString() ); | |
195 | - newEntry.insert(QString("senha"), jsonConfig["metodoDownload"].toObject()["senha"].toString() ); | |
196 | - | |
197 | - metodosDownload.append( newEntry ); | |
198 | - } | |
199 | -} | |
200 | - | |
201 | 163 | QString CacicTimer::getDirProgram() const |
202 | 164 | { |
203 | 165 | return dirProgram; |
... | ... | @@ -271,94 +233,3 @@ void CacicTimer::setPeriodicidadeExecucao(int value) |
271 | 233 | { |
272 | 234 | periodicidadeExecucao = value; |
273 | 235 | } |
274 | - | |
275 | - | |
276 | -QStringList CacicTimer::verificarModulos(){ | |
277 | - // Compara o novo arquivo de configuração com um antigo e se forem diferentes | |
278 | - // mantem o mais recente; caso iguais simplesmente apaga o novo. | |
279 | - QFile *fileOld; | |
280 | - QFile *fileNew; | |
281 | - | |
282 | - fileOld = new QFile(this->applicationDirPath + "/getConfig.json"); | |
283 | - fileNew = new QFile(this->applicationDirPath + "/getConfigNew.json"); | |
284 | - | |
285 | - if( fileOld->exists() && fileNew->exists() ){ | |
286 | - if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) { | |
287 | - fileNew->remove(); | |
288 | - } else { | |
289 | - // Renomeia getConfigNew.json para getConfig.json | |
290 | - fileOld->remove(); | |
291 | - fileNew->rename("getConfigNew.json","getConfig.json"); | |
292 | - } | |
293 | - jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); | |
294 | - } else if( fileOld->exists() ){ | |
295 | - jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); | |
296 | - } else { | |
297 | - QLogger::QLog_Error("Cacic Daemon (Timer)", "Arquivo de configuração não criado."); | |
298 | - } | |
299 | - delete fileOld; | |
300 | - delete fileNew; | |
301 | - lerArquivoConfig(jsonConfig["agentcomputer"].toObject()); | |
302 | - | |
303 | - QStringList nomesModulos; | |
304 | - | |
305 | - int countExecNotFound = 0; | |
306 | - QMap<QString, QString>::const_iterator moduloIterator = moduleMap.constBegin(); | |
307 | - while (moduloIterator != moduleMap.constEnd()) { | |
308 | - QString nomeModulo = moduloIterator.value(); | |
309 | - QString hashModulo = moduloIterator.key(); | |
310 | - // Calcula hash do binario atual | |
311 | -#if defined(Q_OS_WIN) | |
312 | - fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo + ".exe"); | |
313 | -#else | |
314 | - fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo); | |
315 | -#endif | |
316 | - if(!fileOld->exists()) { | |
317 | - QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado.")); | |
318 | - countExecNotFound++; | |
319 | - | |
320 | - if( countExecNotFound == moduleMap.size() ) { | |
321 | - QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!"); | |
322 | - return QStringList(); | |
323 | - } | |
324 | - | |
325 | - // pula para o próximo módulo no moduloMap | |
326 | - moduloIterator++; | |
327 | - continue; | |
328 | - } | |
329 | - | |
330 | - QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex()); | |
331 | - if ( oldMd5 != hashModulo ) { | |
332 | - | |
333 | -#if defined(Q_OS_WIN) | |
334 | - fileOld->rename(this->applicationDirPath + "/" + nomeModulo + ".exe", | |
335 | - this->applicationDirPath + "/" + nomeModulo + "Old.exe"); | |
336 | -#elif defined(Q_OS_LINUX) | |
337 | - fileOld->rename(this->applicationDirPath + "/" + nomeModulo, | |
338 | - this->applicationDirPath + "/" + nomeModulo + "Old"); | |
339 | -#endif | |
340 | - | |
341 | - // Download nova versão do executável | |
342 | - QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin(); | |
343 | - bool downloadSucess = false; | |
344 | - while ( !downloadSucess && metodosIterator != metodosDownload.constEnd() ) { | |
345 | - if( metodosIterator->value("tipo") == "ftp" || metodosIterator->value("tipo") == "" ) { | |
346 | - if ( OCacicComm->ftpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | |
347 | - downloadSucess = true; | |
348 | - } else if ( metodosIterator->value("tipo") == "http" ) { | |
349 | - if( OCacicComm->httpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | |
350 | - downloadSucess = true; | |
351 | - } | |
352 | - metodosIterator++; | |
353 | - } | |
354 | - fileOld->remove(); | |
355 | - delete fileOld; | |
356 | - } | |
357 | - | |
358 | - nomesModulos.append(nomeModulo); | |
359 | - | |
360 | - moduloIterator++; | |
361 | - } | |
362 | - | |
363 | - return nomesModulos; | |
364 | -} | ... | ... |
cacic-daemon/cacicD/cacictimer.h
... | ... | @@ -35,7 +35,7 @@ public: |
35 | 35 | void setPeriodicidadeExecucao(int value); |
36 | 36 | |
37 | 37 | private: |
38 | - void verificarEIniciarQMutex(); | |
38 | + bool verificarEIniciarQMutex(); | |
39 | 39 | QStringList verificarModulos(); |
40 | 40 | void reiniciarTimer(); |
41 | 41 | QLogger::QLoggerManager *logManager; |
... | ... | @@ -50,8 +50,6 @@ private: |
50 | 50 | QJsonObject jsonConfig; |
51 | 51 | int periodicidadeExecucao = 14400; // 4*3600. Tempo default de execução. |
52 | 52 | int getPeriodicidadeExecucao() const; |
53 | - QList<QMap<QString,QString> > metodosDownload; | |
54 | - QMap<QString, QString> moduleMap; // key = hash md5, value = nome do modulo | |
55 | 53 | |
56 | 54 | private slots: |
57 | 55 | void mslot(); | ... | ... |
cacic-teste/cacic-teste.pro
... | ... | @@ -31,7 +31,8 @@ SOURCES += \ |
31 | 31 | ../src/vregistry.cpp \ |
32 | 32 | ../src/ccoleta.cpp \ |
33 | 33 | ../src/wmi.cpp \ |
34 | - ../src/QLogger.cpp | |
34 | + ../src/QLogger.cpp \ | |
35 | + ../src/checkmodules.cpp | |
35 | 36 | # ../src/qtservice/src/qtservice.cpp \ |
36 | 37 | # ../src/qtservice/src/qtservice_unix.cpp \ |
37 | 38 | # ../src/qtservice/src/qtservice_win.cpp \ |
... | ... | @@ -52,7 +53,8 @@ HEADERS += \ |
52 | 53 | ../src/vregistry.h \ |
53 | 54 | ../src/ccoleta.h \ |
54 | 55 | ../src/wmi.h \ |
55 | - ../src/QLogger.h | |
56 | + ../src/QLogger.h \ | |
57 | + ../src/checkmodules.h | |
56 | 58 | # ../src/qtservice/src/qtservice.h \ |
57 | 59 | # ../src/qtservice/src/qtservice_p.h \ |
58 | 60 | # ../src/qtservice/src/qtunixserversocket.h \ | ... | ... |
cacic-teste/testcacic.cpp
... | ... | @@ -246,18 +246,14 @@ void CTestCacic::testGetTest() |
246 | 246 | QVERIFY(ok); |
247 | 247 | } |
248 | 248 | |
249 | -void CTestCacic::testColeta() | |
249 | +void CTestCacic::testGetConfig() | |
250 | 250 | { |
251 | 251 | bool ok; |
252 | 252 | QJsonObject configEnvio; |
253 | 253 | configEnvio["computador"] = oColeta.getOComputer().toJsonObject(); |
254 | - OCacic.setJsonToFile(OCacicComm->comm("/ws/neo/config", &ok, configEnvio), "getConfig.json"); | |
255 | - oColeta.configuraColetas(); | |
256 | - oColeta.run(); | |
257 | - oColeta.waitToCollect(); | |
254 | + OCacic.setJsonToFile(OCacicComm->comm("/ws/neo/config", &ok, configEnvio)["reply"].toObject(), "getConfig.json"); | |
258 | 255 | |
259 | - QVERIFY(!oColeta.toJsonObject()["software"].toObject().isEmpty() && | |
260 | - !oColeta.toJsonObject()["hardware"].toObject().isEmpty()); | |
256 | + QVERIFY(ok); | |
261 | 257 | } |
262 | 258 | |
263 | 259 | void CTestCacic::testLogger() |
... | ... | @@ -334,6 +330,12 @@ void CTestCacic::testEnviaColeta() |
334 | 330 | QVERIFY(ok); |
335 | 331 | } |
336 | 332 | |
333 | +void CTestCacic::testGetModulesValues() | |
334 | +{ | |
335 | + oCheckModules = new CheckModules(QDir::currentPath()); | |
336 | + QVERIFY(false); | |
337 | +} | |
338 | + | |
337 | 339 | void CTestCacic::cleanupTestCase() |
338 | 340 | { |
339 | 341 | // OCacic.deleteFile("gpl-2.0.txt"); |
... | ... | @@ -347,5 +349,5 @@ void CTestCacic::cleanupTestCase() |
347 | 349 | OCacic.deleteFolder("../logs"); |
348 | 350 | OCacic.deleteFile("configRequest.json"); |
349 | 351 | OCacic.deleteFile("teste.json"); |
350 | - OCacic.deleteFile("getConfig.json"); | |
352 | +// OCacic.deleteFile("getConfig.json"); | |
351 | 353 | } | ... | ... |
cacic-teste/testcacic.h
... | ... | @@ -18,6 +18,7 @@ |
18 | 18 | #include <QJsonObject> |
19 | 19 | #include <ccoleta.h> |
20 | 20 | #include <QLogger.h> |
21 | +#include <checkmodules.h> | |
21 | 22 | |
22 | 23 | class CTestCacic : public QObject |
23 | 24 | { |
... | ... | @@ -36,6 +37,7 @@ private: |
36 | 37 | QJsonObject session; |
37 | 38 | QString cripTeste; |
38 | 39 | CColeta oColeta; |
40 | + CheckModules *oCheckModules; | |
39 | 41 | // cacicD OcacicD; |
40 | 42 | |
41 | 43 | signals: |
... | ... | @@ -73,10 +75,11 @@ private slots: |
73 | 75 | void testColetaHardware(); |
74 | 76 | void testConvertDouble(); |
75 | 77 | void testGetTest(); |
76 | - void testColeta(); | |
78 | + void testGetConfig(); | |
77 | 79 | void testLogger(); |
78 | 80 | void testFtpDownload(); |
79 | 81 | void testEnviaColeta(); |
82 | + void testGetModulesValues(); | |
80 | 83 | void cleanupTestCase(); |
81 | 84 | }; |
82 | 85 | ... | ... |
src/checkmodules.cpp
1 | 1 | #include "checkmodules.h" |
2 | 2 | |
3 | -CheckModules::CheckModules() | |
3 | +CheckModules::CheckModules(const QString &workingPath) | |
4 | 4 | { |
5 | + QJsonObject configFile; | |
6 | + configFile = oCacic.getJsonFromFile(workingPath + "/getConfig.json"); | |
7 | + if (!configFile.isEmpty()) { | |
8 | + QJsonArray modulos; | |
9 | + modulos = configFile["agentcomputer"].toObject()["modulos"].toArray(); | |
10 | + foreach (QJsonValue modulo, modulos){ | |
11 | + modules[modulo.toObject()["nome"].toString()] = modulo.toObject()["hash"].toString(); | |
12 | + } | |
13 | + } | |
14 | + //TODO: Completar constructor. Agora que tenho os nomes dos módulos e os hashs, fazer a verificação. | |
15 | + qDebug() << modules; | |
5 | 16 | } |
17 | + | |
18 | +bool CheckModules::start(){ | |
19 | + return true; | |
20 | +} | |
21 | + | |
22 | +//QStringList CheckModules::verificaModulos(){ | |
23 | +// // Compara o novo arquivo de configuração com um antigo e se forem diferentes | |
24 | +// // mantem o mais recente; caso iguais simplesmente apaga o novo. | |
25 | +// QFile *fileOld; | |
26 | +// QFile *fileNew; | |
27 | + | |
28 | +// fileOld = new QFile(this->applicationDirPath + "/getConfig.json"); | |
29 | +// fileNew = new QFile(this->applicationDirPath + "/getConfigNew.json"); | |
30 | + | |
31 | +// if( fileOld->exists() && fileNew->exists() ){ | |
32 | +// if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) { | |
33 | +// fileNew->remove(); | |
34 | +// } else { | |
35 | +// // Renomeia getConfigNew.json para getConfig.json | |
36 | +// fileOld->remove(); | |
37 | +// fileNew->rename("getConfigNew.json","getConfig.json"); | |
38 | +// } | |
39 | +// jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); | |
40 | +// } else if( fileOld->exists() ){ | |
41 | +// jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); | |
42 | +// } else { | |
43 | +// QLogger::QLog_Error("Cacic Daemon (Timer)", "Arquivo de configuração não criado."); | |
44 | +// } | |
45 | +// delete fileOld; | |
46 | +// delete fileNew; | |
47 | +// lerArquivoConfig(jsonConfig["agentcomputer"].toObject()); | |
48 | + | |
49 | +// QStringList nomesModulos; | |
50 | + | |
51 | +// int countExecNotFound = 0; | |
52 | +// QMap<QString, QString>::const_iterator moduloIterator = moduleMap.constBegin(); | |
53 | +// while (moduloIterator != moduleMap.constEnd()) { | |
54 | +// QString nomeModulo = moduloIterator.value(); | |
55 | +// QString hashModulo = moduloIterator.key(); | |
56 | +// // Calcula hash do binario atual | |
57 | +//#if defined(Q_OS_WIN) | |
58 | +// fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo + ".exe"); | |
59 | +//#else | |
60 | +// fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo); | |
61 | +//#endif | |
62 | +// if(!fileOld->exists()) { | |
63 | +// QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado.")); | |
64 | +// countExecNotFound++; | |
65 | + | |
66 | +// if( countExecNotFound == moduleMap.size() ) { | |
67 | +// QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!"); | |
68 | +// return QStringList(); | |
69 | +// } | |
70 | + | |
71 | +// // pula para o próximo módulo no moduloMap | |
72 | +// moduloIterator++; | |
73 | +// continue; | |
74 | +// } | |
75 | + | |
76 | +// QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex()); | |
77 | +// if ( oldMd5 != hashModulo ) { | |
78 | + | |
79 | +//#if defined(Q_OS_WIN) | |
80 | +// fileOld->rename(this->applicationDirPath + "/" + nomeModulo + ".exe", | |
81 | +// this->applicationDirPath + "/" + nomeModulo + "Old.exe"); | |
82 | +//#elif defined(Q_OS_LINUX) | |
83 | +// fileOld->rename(this->applicationDirPath + "/" + nomeModulo, | |
84 | +// this->applicationDirPath + "/" + nomeModulo + "Old"); | |
85 | +//#endif | |
86 | + | |
87 | +// // Download nova versão do executável | |
88 | +// QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin(); | |
89 | +// bool downloadSucess = false; | |
90 | +// while ( !downloadSucess && metodosIterator != metodosDownload.constEnd() ) { | |
91 | +// if( metodosIterator->value("tipo") == "ftp" || metodosIterator->value("tipo") == "" ) { | |
92 | +// if ( OCacicComm->ftpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | |
93 | +// downloadSucess = true; | |
94 | +// } else if ( metodosIterator->value("tipo") == "http" ) { | |
95 | +// if( OCacicComm->httpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | |
96 | +// downloadSucess = true; | |
97 | +// } | |
98 | +// metodosIterator++; | |
99 | +// } | |
100 | +// fileOld->remove(); | |
101 | +// delete fileOld; | |
102 | +// } | |
103 | + | |
104 | +// nomesModulos.append(nomeModulo); | |
105 | + | |
106 | +// moduloIterator++; | |
107 | +// } | |
108 | + | |
109 | +// return nomesModulos; | |
110 | +//} | |
111 | + | |
112 | +//void CheckModules::lerArquivoConfig ( const QJsonObject& jsonConfig ) | |
113 | +//{ | |
114 | +// /* lê json de configurações e armazena quais módulos executáveis. | |
115 | +// * E faz o mesmo tipo de comparação de hashs, com o fim de: | |
116 | +// * ou mantem o binário do módulo ou baixa um novo. | |
117 | +// */ | |
118 | +// foreach( QJsonValue individualModule, jsonConfig["modulos"].toArray() ) { | |
119 | +// QString moduloKey, moduloValue; | |
120 | + | |
121 | +// moduloKey = individualModule.toObject()["hash"].toString(); | |
122 | +// moduloValue = individualModule.toObject()["nome"].toString(); | |
123 | + | |
124 | +// moduleMap.insert(moduloKey, moduloValue); | |
125 | +// } | |
126 | + | |
127 | +// if ( jsonConfig["metodoDownload"].isArray() ) { | |
128 | + | |
129 | +// foreach (QJsonValue individualMetodo, jsonConfig["metodoDownload"].toArray() ) { | |
130 | +// QMap<QString, QString> newEntry; | |
131 | + | |
132 | +// newEntry.insert(QString("tipo"), individualMetodo.toObject()["tipo"].toString() ); | |
133 | +// newEntry.insert(QString("url"), individualMetodo.toObject()["url"].toString() ); | |
134 | +// newEntry.insert(QString("path"), individualMetodo.toObject()["path"].toString() ); | |
135 | +// newEntry.insert(QString("usuario"), individualMetodo.toObject()["usario"].toString() ); | |
136 | +// newEntry.insert(QString("senha"), individualMetodo.toObject()["senha"].toString() ); | |
137 | + | |
138 | +// metodosDownload.append( newEntry ); | |
139 | +// } | |
140 | +// } else { | |
141 | +// QMap<QString, QString> newEntry; | |
142 | + | |
143 | +// newEntry.insert(QString("tipo"), jsonConfig["metodoDownload"].toObject()["tipo"].toString() ); | |
144 | +// newEntry.insert(QString("url"), jsonConfig["metodoDownload"].toObject()["url"].toString() ); | |
145 | +// newEntry.insert(QString("path"), jsonConfig["metodoDownload"].toObject()["path"].toString() ); | |
146 | +// newEntry.insert(QString("usuario"), jsonConfig["metodoDownload"].toObject()["usario"].toString() ); | |
147 | +// newEntry.insert(QString("senha"), jsonConfig["metodoDownload"].toObject()["senha"].toString() ); | |
148 | + | |
149 | +// metodosDownload.append( newEntry ); | |
150 | +// } | |
151 | +//} | ... | ... |
src/checkmodules.h
1 | 1 | #ifndef CHECKMODULES_H |
2 | 2 | #define CHECKMODULES_H |
3 | 3 | |
4 | +#include <ccacic.h> | |
5 | +#include <cacic_comm.h> | |
6 | +#include <cacic_computer.h> | |
7 | + | |
4 | 8 | class CheckModules |
5 | 9 | { |
6 | 10 | public: |
7 | - CheckModules(); | |
11 | + CheckModules(const QString &workingPath); | |
12 | +// QStringList verificaModulos(); | |
13 | + bool start(); | |
14 | +private: | |
15 | + CCacic oCacic; | |
16 | + QVariantMap modules; //modules["name"] = hash; | |
17 | +// void lerArquivoConfig(const QJsonObject& jsonConfig); | |
8 | 18 | }; |
9 | 19 | |
10 | 20 | #endif // CHECKMODULES_H | ... | ... |