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(); |