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