Commit b3f29df01cdfed37cc4d1e4e973ce8795228350d
1 parent
48bd8e5a
Exists in
master
refactoring
Showing
2 changed files
with
71 additions
and
83 deletions
Show diff stats
cacic-daemon/cacicD/cacictimer.cpp
@@ -22,93 +22,14 @@ void CacicTimer::iniciarTimer(int x) | @@ -22,93 +22,14 @@ void CacicTimer::iniciarTimer(int x) | ||
22 | } | 22 | } |
23 | 23 | ||
24 | void CacicTimer::mslot(){ | 24 | void CacicTimer::mslot(){ |
25 | - QLogger::QLog_Info("Cacic Daemon (Timer)", QString("mslot();")); | ||
26 | cMutex->lock(); | 25 | cMutex->lock(); |
27 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo fechado.")); | 26 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo fechado.")); |
28 | - | ||
29 | if(getTest()){ | 27 | if(getTest()){ |
30 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getTeste() success.")); | 28 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getTeste() success.")); |
31 | - | ||
32 | if(getConfig()){ | 29 | if(getConfig()){ |
33 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getConfig() success.")); | 30 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getConfig() success.")); |
34 | - | ||
35 | - // Compara o novo arquivo de configuração com um antigo e se forem diferentes | ||
36 | - // mantem o mais recente; caso iguais simplesmente apaga o novo. | ||
37 | - QFile *fileOld; | ||
38 | - QFile *fileNew; | ||
39 | - | ||
40 | - fileOld = new QFile(getApplicationDirPath().append("/getConfig.json")); | ||
41 | - fileNew = new QFile(getApplicationDirPath().append("/getConfigNew.json")); | ||
42 | - if( fileOld->exists() && fileNew->exists() ){ | ||
43 | - if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) { | ||
44 | - fileNew->remove(); | ||
45 | - } else { | ||
46 | - // Renomeia getConfigNew.json para getConfig.json | ||
47 | - fileOld->remove(); | ||
48 | - fileNew->rename("getConfigNew.json","getConfig.json"); | ||
49 | - } | ||
50 | - jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json")); | ||
51 | - } else if( fileOld->exists() ){ | ||
52 | - jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json")); | ||
53 | - } else { | ||
54 | - QLogger::QLog_Error("Cacic Daemon (Timer)", "Arquivo de configuração não criado."); | ||
55 | - } | ||
56 | - delete fileOld; | ||
57 | - delete fileNew; | ||
58 | - | ||
59 | - lerArquivoConfig(jsonConfig); | ||
60 | - | ||
61 | - int countExecNotFound = 0; | ||
62 | - QMap<QString, QString>::const_iterator mapIterator = moduleMap.constBegin(); | ||
63 | - while (mapIterator != moduleMap.constEnd()) { | ||
64 | - QString nomeModulo = mapIterator.value(); | ||
65 | - QString hashModulo = mapIterator.key(); | ||
66 | - | ||
67 | - // Calcula hash do binario atual | ||
68 | -#if defined(Q_OS_WIN) | ||
69 | - fileOld = new QFile(getApplicationDirPath().append("/").append(modulo).append(".exe")); | ||
70 | -#else | ||
71 | - fileOld = new QFile(getApplicationDirPath().append("/").append(nomeModulo)); | ||
72 | -#endif | ||
73 | - if(!fileOld->exists()) { | ||
74 | - QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado.")); | ||
75 | - | ||
76 | - countExecNotFound++; | ||
77 | - if( countExecNotFound == moduleMap.size() ) { | ||
78 | - QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!"); | ||
79 | - return; | ||
80 | - } | ||
81 | - continue; | ||
82 | - } | ||
83 | - | ||
84 | - QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex()); | ||
85 | - | ||
86 | - if ( oldMd5 != hashModulo ) { | ||
87 | - | ||
88 | - fileOld->rename(getApplicationDirPath().append("/").append(nomeModulo), | ||
89 | - getApplicationDirPath().append("/").append("nomeModulo").append("Old") ); | ||
90 | - | ||
91 | - // Download nova versão do executável | ||
92 | - QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin(); | ||
93 | - bool downloadSucess = false; | ||
94 | - while ( !downloadSucess && metodosIterator != metodosDownload.constEnd() ) { | ||
95 | - | ||
96 | - if( metodosIterator->value("tipo") == "ftp" || metodosIterator->value("tipo") == "" ) { | ||
97 | - if ( OCacicComm->ftpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | ||
98 | - downloadSucess = true; | ||
99 | - | ||
100 | - } else if ( metodosIterator->value("tipo") == "http" ) { | ||
101 | - if( OCacicComm->httpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | ||
102 | - downloadSucess = true; | ||
103 | - } | ||
104 | - metodosIterator++; | ||
105 | - } | ||
106 | - fileOld->remove(); | ||
107 | - delete fileOld; | ||
108 | - } | ||
109 | - | ||
110 | - mapIterator++; | ||
111 | - } | 31 | + verificarModulos(); |
32 | + iniciarGercols(); | ||
112 | }else{ | 33 | }else{ |
113 | qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); | 34 | qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); |
114 | QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na obtenção do arquivo de configuração."); | 35 | QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na obtenção do arquivo de configuração."); |
@@ -117,7 +38,6 @@ void CacicTimer::mslot(){ | @@ -117,7 +38,6 @@ void CacicTimer::mslot(){ | ||
117 | qDebug() << "getTest() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); | 38 | qDebug() << "getTest() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); |
118 | QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na execução do getTest()."); | 39 | QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na execução do getTest()."); |
119 | } | 40 | } |
120 | - | ||
121 | cMutex->unlock(); | 41 | cMutex->unlock(); |
122 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo aberto.")); | 42 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo aberto.")); |
123 | } | 43 | } |
@@ -277,3 +197,71 @@ void CacicTimer::definirDirGercols(QString appDirPath){ | @@ -277,3 +197,71 @@ void CacicTimer::definirDirGercols(QString appDirPath){ | ||
277 | setDirProgram(appDirPath + "/cacic-gercols"); | 197 | setDirProgram(appDirPath + "/cacic-gercols"); |
278 | #endif | 198 | #endif |
279 | } | 199 | } |
200 | + | ||
201 | +void CacicTimer::verificarModulos(){ | ||
202 | + // Compara o novo arquivo de configuração com um antigo e se forem diferentes | ||
203 | + // mantem o mais recente; caso iguais simplesmente apaga o novo. | ||
204 | + QFile *fileOld; | ||
205 | + QFile *fileNew; | ||
206 | + fileOld = new QFile(this->applicationDirPath + "/getConfig.json"); | ||
207 | + fileNew = new QFile(this->applicationDirPath + "/getConfigNew.json"); | ||
208 | + if( fileOld->exists() && fileNew->exists() ){ | ||
209 | + if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) { | ||
210 | + fileNew->remove(); | ||
211 | + } else { | ||
212 | + // Renomeia getConfigNew.json para getConfig.json | ||
213 | + fileOld->remove(); | ||
214 | + fileNew->rename("getConfigNew.json","getConfig.json"); | ||
215 | + } | ||
216 | + jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); | ||
217 | + } else if( fileOld->exists() ){ | ||
218 | + jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); | ||
219 | + } else { | ||
220 | + QLogger::QLog_Error("Cacic Daemon (Timer)", "Arquivo de configuração não criado."); | ||
221 | + } | ||
222 | + delete fileOld; | ||
223 | + delete fileNew; | ||
224 | + lerArquivoConfig(jsonConfig); | ||
225 | + int countExecNotFound = 0; | ||
226 | + QMap<QString, QString>::const_iterator mapIterator = moduleMap.constBegin(); | ||
227 | + while (mapIterator != moduleMap.constEnd()) { | ||
228 | + QString nomeModulo = mapIterator.value(); | ||
229 | + QString hashModulo = mapIterator.key(); | ||
230 | + // Calcula hash do binario atual | ||
231 | +#if defined(Q_OS_WIN) | ||
232 | + fileOld = new QFile(this->applicationDirPath + "/" + modulo + ".exe"); | ||
233 | +#else | ||
234 | + fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo); | ||
235 | +#endif | ||
236 | + if(!fileOld->exists()) { | ||
237 | + QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado.")); | ||
238 | + countExecNotFound++; | ||
239 | + if( countExecNotFound == moduleMap.size() ) { | ||
240 | + QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!"); | ||
241 | + return; | ||
242 | + } | ||
243 | + continue; | ||
244 | + } | ||
245 | + QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex()); | ||
246 | + if ( oldMd5 != hashModulo ) { | ||
247 | + fileOld->rename(this->applicationDirPath + "/" + nomeModulo, | ||
248 | + this->applicationDirPath + "/" + nomeModulo + "Old"); | ||
249 | + // Download nova versão do executável | ||
250 | + QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin(); | ||
251 | + bool downloadSucess = false; | ||
252 | + while ( !downloadSucess && metodosIterator != metodosDownload.constEnd() ) { | ||
253 | + if( metodosIterator->value("tipo") == "ftp" || metodosIterator->value("tipo") == "" ) { | ||
254 | + if ( OCacicComm->ftpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | ||
255 | + downloadSucess = true; | ||
256 | + } else if ( metodosIterator->value("tipo") == "http" ) { | ||
257 | + if( OCacicComm->httpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) ) | ||
258 | + downloadSucess = true; | ||
259 | + } | ||
260 | + metodosIterator++; | ||
261 | + } | ||
262 | + fileOld->remove(); | ||
263 | + delete fileOld; | ||
264 | + } | ||
265 | + mapIterator++; | ||
266 | + } | ||
267 | +} |
cacic-daemon/cacicD/cacictimer.h
@@ -36,9 +36,9 @@ public: | @@ -36,9 +36,9 @@ public: | ||
36 | private: | 36 | private: |
37 | void registraFimColeta(QString msg); | 37 | void registraFimColeta(QString msg); |
38 | void registraInicioColeta(); | 38 | void registraInicioColeta(); |
39 | + void verificarModulos(); | ||
39 | QLogger::QLoggerManager *logManager; | 40 | QLogger::QLoggerManager *logManager; |
40 | QString dirProgram; | 41 | QString dirProgram; |
41 | - //QProcess *myProcess; | ||
42 | QString applicationDirPath; | 42 | QString applicationDirPath; |
43 | QString getDirProgram() const; | 43 | QString getDirProgram() const; |
44 | void iniciarGercols(); | 44 | void iniciarGercols(); |