From 1d0c0bfec0121a41ce2388f23c8d4211f6d2f377 Mon Sep 17 00:00:00 2001 From: Thiago Rocha Date: Fri, 12 Sep 2014 11:35:23 -0300 Subject: [PATCH] Algumas mudanças no install-cacic; e começando já a comparação de binários locais e do servidor de acordo com o getConfig(). --- cacic-daemon/cacicD/cacicd.cpp | 1 + cacic-daemon/cacicD/cacictimer.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++------ cacic-daemon/cacicD/cacictimer.h | 6 +++++- install-cacic/install-cacic.pro | 8 +++++--- install-cacic/installcacic.cpp | 8 ++++++-- install-cacic/installcacic.h | 2 ++ 6 files changed, 63 insertions(+), 12 deletions(-) diff --git a/cacic-daemon/cacicD/cacicd.cpp b/cacic-daemon/cacicD/cacicd.cpp index bb6d77d..16524c7 100644 --- a/cacic-daemon/cacicD/cacicd.cpp +++ b/cacic-daemon/cacicD/cacicd.cpp @@ -36,6 +36,7 @@ void cacicD::start() { QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em ").append(application()->applicationDirPath()).append(".")); QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath() + "/getConfig.json"); + if(!result.contains("error") && !result.isEmpty()){ Ocacictimer->iniciarTimer(result["codestatus"].toInt(), application()->applicationDirPath()); }else{ diff --git a/cacic-daemon/cacicD/cacictimer.cpp b/cacic-daemon/cacicD/cacictimer.cpp index 550d23e..925c9f0 100644 --- a/cacic-daemon/cacicD/cacictimer.cpp +++ b/cacic-daemon/cacicD/cacictimer.cpp @@ -5,14 +5,15 @@ CacicTimer::CacicTimer() OCacicComm = new CacicComm(); ccacic = new CCacic(); timer = new QTimer(this); - //manager = QLogger::QLoggerManager::getInstance(); - //manager->addDestination("cacicLog.txt", QStringList("CacicD"), QLogger::LogLevel); + logManager = QLogger::QLoggerManager::getInstance(); connect(timer,SIGNAL(timeout()),this,SLOT(mslot())); } void CacicTimer::iniciarTimer(int x, QString applicationDirPath) { setApplicationDirPath(applicationDirPath); + logManager->addDestination(getApplicationDirPath().append("/cacicLog.txt"), QStringList("Cacic Daemon"), QLogger::InfoLevel); + logManager->addDestination(getApplicationDirPath().append("/cacicLog.txt"), QStringList("Cacic Daemon"), QLogger::ErrorLevel); timer->start(x); } @@ -21,14 +22,51 @@ void CacicTimer::mslot(){ //manager->QLogger::QLog_Trace("ModuleName", "Message: "); if(getConfig()){ qDebug() << "getConfig() success. - " + QDateTime::currentDateTime().toLocalTime().toString(); + QLogger::QLog_Info("Cacic Daemon", "getConfig() executado com sucesso."); + + // Compara o novo arquivo de configuração com um antigo e se forem diferentes + // mantem o mais recente; caso iguais simplesmente apaga o novo. + QFile *fileConfig = new QFile(getApplicationDirPath().append("/getConfig.json")); + QFile *fileConfigNew = new QFile(getApplicationDirPath().append("/getConfigNew.json")); + + if( fileConfig->exists() && fileConfigNew->exists() ){ + if( Md5IsEqual(QVariant::fromValue(fileConfig), QVariant::fromValue(fileConfigNew)) ) { + fileConfigNew->remove(); + delete fileConfigNew; + } else { + // Renomeia getConfigNew.json para getConfig.json + fileConfig->remove(); + delete fileConfig; + fileConfigNew->rename("getConfigNew.json","getConfig.json"); + delete fileConfigNew; + } + jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json")); + } else if( fileConfig->exists() ){ + jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json")); + } else { + QLogger::QLog_Error("Cacic Daemon", "Arquivo de configuração não criado."); + } + + /* lê json de configurações e armazena quais módulos executáveis. + * E faz o mesmo tipo de comparação de hashs, com o fim de: + * ou mantem o binário do módulo ou baixa um novo. + */ + foreach( QVariant vectorsContent, jsonConfig["modulos"].toArray().toVariantList().toVector() ) + moduleList.append( vectorsContent.toString() ); + + foreach( QString modulo, moduleList ) { + + } //aqui irá abrir o semaforo e iniciar a coleta. }else{ qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); + QLogger::QLog_Error("Cacic Daemon", "Falha na obtenção do arquivo de configuração."); } }else{ qDebug() << "getTest() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); + QLogger::QLog_Error("Cacic Daemon", "Falha na execução do getTest()."); } } @@ -70,7 +108,7 @@ bool CacicTimer::getConfig(){ return false; } try{ - ccacic->setJsonToFile(jsonresult, getApplicationDirPath() + "/getConfig.json"); + ccacic->setJsonToFile(jsonresult, getApplicationDirPath().append("/getConfigNew.json")); return true; } catch (...) { qDebug() << "Erro ao salvar o arquivo de configurações."; @@ -101,11 +139,11 @@ void CacicTimer::registraFim() { } -bool CacicTimer::compararHashMD5(QJsonDocument getconfigfile,QJsonDocument getConfig){ +bool CacicTimer::Md5IsEqual(QVariant document01,QVariant document02){ QString getconfigMD5 = QString(QCryptographicHash::hash( - (getconfigfile.toVariant().toByteArray()),QCryptographicHash::Md5).toHex()); + (document01.toByteArray()),QCryptographicHash::Md5).toHex()); QString getconfigMD52 = QString(QCryptographicHash::hash( - (getConfig.toVariant().toByteArray()),QCryptographicHash::Md5).toHex()); + (document02.toByteArray()),QCryptographicHash::Md5).toHex()); if(getconfigMD5 == getconfigMD52){ return true; }else{ diff --git a/cacic-daemon/cacicD/cacictimer.h b/cacic-daemon/cacicD/cacictimer.h index 66b3152..8a882c8 100644 --- a/cacic-daemon/cacicD/cacictimer.h +++ b/cacic-daemon/cacicD/cacictimer.h @@ -23,14 +23,18 @@ public: void iniciarTimer(int x, QString applicationDirPath); bool getTest(); bool getConfig(); - bool compararHashMD5(QJsonDocument getconfigfile,QJsonDocument getConfig); + bool Md5IsEqual(QVariant document01,QVariant document02); QString getApplicationDirPath() const; void setApplicationDirPath(const QString &value); private: void registraFim(); void registraInicio(); + + QJsonObject jsonConfig; + QLogger::QLoggerManager *logManager; QString applicationDirPath; + QStringList moduleList; private slots: void mslot(); diff --git a/install-cacic/install-cacic.pro b/install-cacic/install-cacic.pro index 9b617aa..96c52f4 100644 --- a/install-cacic/install-cacic.pro +++ b/install-cacic/install-cacic.pro @@ -7,7 +7,6 @@ QT += core QT += network QT -= gui -QT += axcontainer TARGET = install-cacic CONFIG += console @@ -16,6 +15,7 @@ CONFIG += c++11 win32 { LIBS += -LE:\LightBase\cacic-agente-project\cacic-agente\src\crypto++\lib -lcryptopp + QT += axcontainer } else { LIBS += -L/usr/lib -lcryptopp } @@ -27,7 +27,8 @@ SOURCES += main.cpp \ ../src/ccacic.cpp \ ../src/cacic_computer.cpp \ ../src/operatingsystem.cpp \ - ../src/wmi.cpp + ../src/wmi.cpp \ + ../src/QLogger.cpp HEADERS += \ installcacic.h \ @@ -35,7 +36,8 @@ HEADERS += \ ../src/cacic_computer.h \ ../src/cacic_comm.h \ ../src/operatingsystem.h \ - ../src/wmi.h + ../src/wmi.h \ + ../src/QLogger.h INCLUDEPATH += ../src \ ../src/crypto++/include/ diff --git a/install-cacic/installcacic.cpp b/install-cacic/installcacic.cpp index 7279734..a1fe1bc 100644 --- a/install-cacic/installcacic.cpp +++ b/install-cacic/installcacic.cpp @@ -3,10 +3,13 @@ InstallCacic::InstallCacic(QObject *parent) : QObject(parent) { - + logManager = QLogger::QLoggerManager::getInstance(); + logManager->addDestination("./log.txt","Install",QLogger::DebugLevel); } void InstallCacic::run(QStringList argv, int argc) { + + QLogger::QLog_Debug("Install", "Inicio de instalacao"); bool ok; //valida os parametros repassados QMap param = validaParametros(argv, argc, &ok); @@ -21,7 +24,7 @@ void InstallCacic::run(QStringList argv, int argc) { oCacic.setChaveCrypt(jsonLogin["reply"].toObject()["chavecrip"].toString()); #ifdef Q_OS_WIN oCacic.setCacicMainFolder("c:/cacic"); -#elif Q_LINUX +#elif defined(Q_OS_LINUX) oCacic.setCacicMainFolder("/home/cacic"); #endif oCacic.createFolder(oCacic.getCacicMainFolder()); @@ -57,6 +60,7 @@ void InstallCacic::run(QStringList argv, int argc) { << " [-help] Lista todos comandos.\n"; } + logManager->closeLogger(); emit finished(); } diff --git a/install-cacic/installcacic.h b/install-cacic/installcacic.h index 5e3c4a5..d036fe8 100644 --- a/install-cacic/installcacic.h +++ b/install-cacic/installcacic.h @@ -7,6 +7,7 @@ #include #include #include "iostream" +#include "QLogger.h" class InstallCacic : public QObject { @@ -25,6 +26,7 @@ private: CacicComm oCacicComm; CACIC_Computer oCacicComputer; CCacic oCacic; + QLogger::QLoggerManager *logManager; signals: void finished(); -- libgit2 0.21.2