Commit d538265d605aa3f2e9ceaa7422f89ca382c6c2b5
1 parent
af93bf85
Exists in
master
Correção da leitura do json do getConfig() para refletir sua nova versão.
Showing
1 changed file
with
39 additions
and
14 deletions
Show diff stats
cacic-daemon/cacicD/cacictimer.cpp
| @@ -120,10 +120,6 @@ void CacicTimer::lerArquivoConfig ( const QJsonObject& jsonConfig ) | @@ -120,10 +120,6 @@ void CacicTimer::lerArquivoConfig ( const QJsonObject& jsonConfig ) | ||
| 120 | /* lê json de configurações e armazena quais módulos executáveis. | 120 | /* lê json de configurações e armazena quais módulos executáveis. |
| 121 | * E faz o mesmo tipo de comparação de hashs, com o fim de: | 121 | * E faz o mesmo tipo de comparação de hashs, com o fim de: |
| 122 | * ou mantem o binário do módulo ou baixa um novo. | 122 | * ou mantem o binário do módulo ou baixa um novo. |
| 123 | - * | ||
| 124 | - * Aqui estou assumindo um formato do .json em que: | ||
| 125 | - * há a key modulos contem uma lista com o nome dos executaveis e os seus valores hash md5 | ||
| 126 | - * há a key metodo que explicita o método de download dos executaveis | ||
| 127 | */ | 123 | */ |
| 128 | foreach( QJsonValue individualModule, jsonConfig["modulos"].toArray() ) { | 124 | foreach( QJsonValue individualModule, jsonConfig["modulos"].toArray() ) { |
| 129 | QString moduloKey, moduloValue; | 125 | QString moduloKey, moduloValue; |
| @@ -134,12 +130,27 @@ void CacicTimer::lerArquivoConfig ( const QJsonObject& jsonConfig ) | @@ -134,12 +130,27 @@ void CacicTimer::lerArquivoConfig ( const QJsonObject& jsonConfig ) | ||
| 134 | moduleMap.insert(moduloKey, moduloValue); | 130 | moduleMap.insert(moduloKey, moduloValue); |
| 135 | } | 131 | } |
| 136 | 132 | ||
| 137 | - foreach (QJsonValue individualMetodo, jsonConfig["metodoDownload"].toArray() ) { | 133 | + if ( jsonConfig["metodoDownload"].isArray() ) { |
| 134 | + | ||
| 135 | + foreach (QJsonValue individualMetodo, jsonConfig["metodoDownload"].toArray() ) { | ||
| 136 | + QMap<QString, QString> newEntry; | ||
| 137 | + | ||
| 138 | + newEntry.insert(QString("tipo"), individualMetodo.toObject()["tipo"].toString() ); | ||
| 139 | + newEntry.insert(QString("url"), individualMetodo.toObject()["url"].toString() ); | ||
| 140 | + newEntry.insert(QString("path"), individualMetodo.toObject()["path"].toString() ); | ||
| 141 | + newEntry.insert(QString("usuario"), individualMetodo.toObject()["usario"].toString() ); | ||
| 142 | + newEntry.insert(QString("senha"), individualMetodo.toObject()["senha"].toString() ); | ||
| 143 | + | ||
| 144 | + metodosDownload.append( newEntry ); | ||
| 145 | + } | ||
| 146 | + } else { | ||
| 138 | QMap<QString, QString> newEntry; | 147 | QMap<QString, QString> newEntry; |
| 139 | 148 | ||
| 140 | - newEntry.insert(QString("tipo"), individualMetodo.toObject()["tipo"].toString() ); | ||
| 141 | - newEntry.insert(QString("url"), individualMetodo.toObject()["url"].toString() ); | ||
| 142 | - newEntry.insert(QString("path"), individualMetodo.toObject()["path"].toString() ); | 149 | + newEntry.insert(QString("tipo"), jsonConfig["metodoDownload"].toObject()["tipo"].toString() ); |
| 150 | + newEntry.insert(QString("url"), jsonConfig["metodoDownload"].toObject()["url"].toString() ); | ||
| 151 | + newEntry.insert(QString("path"), jsonConfig["metodoDownload"].toObject()["path"].toString() ); | ||
| 152 | + newEntry.insert(QString("usuario"), jsonConfig["metodoDownload"].toObject()["usario"].toString() ); | ||
| 153 | + newEntry.insert(QString("senha"), jsonConfig["metodoDownload"].toObject()["senha"].toString() ); | ||
| 143 | 154 | ||
| 144 | metodosDownload.append( newEntry ); | 155 | metodosDownload.append( newEntry ); |
| 145 | } | 156 | } |
| @@ -255,8 +266,10 @@ QStringList CacicTimer::verificarModulos(){ | @@ -255,8 +266,10 @@ QStringList CacicTimer::verificarModulos(){ | ||
| 255 | // mantem o mais recente; caso iguais simplesmente apaga o novo. | 266 | // mantem o mais recente; caso iguais simplesmente apaga o novo. |
| 256 | QFile *fileOld; | 267 | QFile *fileOld; |
| 257 | QFile *fileNew; | 268 | QFile *fileNew; |
| 269 | + | ||
| 258 | fileOld = new QFile(this->applicationDirPath + "/getConfig.json"); | 270 | fileOld = new QFile(this->applicationDirPath + "/getConfig.json"); |
| 259 | fileNew = new QFile(this->applicationDirPath + "/getConfigNew.json"); | 271 | fileNew = new QFile(this->applicationDirPath + "/getConfigNew.json"); |
| 272 | + | ||
| 260 | if( fileOld->exists() && fileNew->exists() ){ | 273 | if( fileOld->exists() && fileNew->exists() ){ |
| 261 | if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) { | 274 | if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) { |
| 262 | fileNew->remove(); | 275 | fileNew->remove(); |
| @@ -278,29 +291,41 @@ QStringList CacicTimer::verificarModulos(){ | @@ -278,29 +291,41 @@ QStringList CacicTimer::verificarModulos(){ | ||
| 278 | QStringList nomesModulos; | 291 | QStringList nomesModulos; |
| 279 | 292 | ||
| 280 | int countExecNotFound = 0; | 293 | int countExecNotFound = 0; |
| 281 | - QMap<QString, QString>::const_iterator mapIterator = moduleMap.constBegin(); | ||
| 282 | - while (mapIterator != moduleMap.constEnd()) { | ||
| 283 | - QString nomeModulo = mapIterator.value(); | ||
| 284 | - QString hashModulo = mapIterator.key(); | 294 | + QMap<QString, QString>::const_iterator moduloIterator = moduleMap.constBegin(); |
| 295 | + while (moduloIterator != moduleMap.constEnd()) { | ||
| 296 | + QString nomeModulo = moduloIterator.value(); | ||
| 297 | + QString hashModulo = moduloIterator.key(); | ||
| 285 | // Calcula hash do binario atual | 298 | // Calcula hash do binario atual |
| 286 | #if defined(Q_OS_WIN) | 299 | #if defined(Q_OS_WIN) |
| 287 | - fileOld = new QFile(this->applicationDirPath + "/" + modulo + ".exe"); | 300 | + fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo + ".exe"); |
| 288 | #else | 301 | #else |
| 289 | fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo); | 302 | fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo); |
| 290 | #endif | 303 | #endif |
| 291 | if(!fileOld->exists()) { | 304 | if(!fileOld->exists()) { |
| 292 | QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado.")); | 305 | QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado.")); |
| 293 | countExecNotFound++; | 306 | countExecNotFound++; |
| 307 | + | ||
| 294 | if( countExecNotFound == moduleMap.size() ) { | 308 | if( countExecNotFound == moduleMap.size() ) { |
| 295 | QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!"); | 309 | QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!"); |
| 296 | return QStringList(); | 310 | return QStringList(); |
| 297 | } | 311 | } |
| 312 | + | ||
| 313 | + // pula para o próximo módulo no moduloMap | ||
| 314 | + moduloIterator++; | ||
| 298 | continue; | 315 | continue; |
| 299 | } | 316 | } |
| 317 | + | ||
| 300 | QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex()); | 318 | QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex()); |
| 301 | if ( oldMd5 != hashModulo ) { | 319 | if ( oldMd5 != hashModulo ) { |
| 320 | + | ||
| 321 | +#if defined(Q_OS_WIN) | ||
| 322 | + fileOld->rename(this->applicationDirPath + "/" + nomeModulo + ".exe", | ||
| 323 | + this->applicationDirPath + "/" + nomeModulo + "Old.exe"); | ||
| 324 | +#elif defined(Q_OS_LINUX) | ||
| 302 | fileOld->rename(this->applicationDirPath + "/" + nomeModulo, | 325 | fileOld->rename(this->applicationDirPath + "/" + nomeModulo, |
| 303 | this->applicationDirPath + "/" + nomeModulo + "Old"); | 326 | this->applicationDirPath + "/" + nomeModulo + "Old"); |
| 327 | +#endif | ||
| 328 | + | ||
| 304 | // Download nova versão do executável | 329 | // Download nova versão do executável |
| 305 | QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin(); | 330 | QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin(); |
| 306 | bool downloadSucess = false; | 331 | bool downloadSucess = false; |
| @@ -320,7 +345,7 @@ QStringList CacicTimer::verificarModulos(){ | @@ -320,7 +345,7 @@ QStringList CacicTimer::verificarModulos(){ | ||
| 320 | 345 | ||
| 321 | nomesModulos.append(nomeModulo); | 346 | nomesModulos.append(nomeModulo); |
| 322 | 347 | ||
| 323 | - mapIterator++; | 348 | + moduloIterator++; |
| 324 | } | 349 | } |
| 325 | 350 | ||
| 326 | return nomesModulos; | 351 | return nomesModulos; |