Commit ebde75cb07ab3cf8e54cb52dadbc4b0131775ce9

Authored by LightBase Consultoria em Software Publico
2 parents 6cdb3e6b 9989db7c
Exists in master

semaforo e chamada do gercols

cacic-daemon/cacicD/cacicd.cpp
@@ -34,6 +34,9 @@ void cacicD::start() { @@ -34,6 +34,9 @@ void cacicD::start() {
34 qDebug() << "\nServiço iniciado em" << application()->applicationDirPath(); 34 qDebug() << "\nServiço iniciado em" << application()->applicationDirPath();
35 QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em ").append(application()->applicationDirPath()).append(".")); 35 QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em ").append(application()->applicationDirPath()).append("."));
36 QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath().append("/getConfig.json")); 36 QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath().append("/getConfig.json"));
  37 +
  38 + QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath() + "/getConfig.json");
  39 +
37 if(!result.contains("error") && !result.isEmpty()){ 40 if(!result.contains("error") && !result.isEmpty()){
38 Ocacictimer->iniciarTimer(result["codestatus"].toInt()); 41 Ocacictimer->iniciarTimer(result["codestatus"].toInt());
39 }else{ 42 }else{
cacic-daemon/cacicD/cacictimer.cpp
@@ -11,6 +11,47 @@ CacicTimer::CacicTimer(QString dirpath) @@ -11,6 +11,47 @@ CacicTimer::CacicTimer(QString dirpath)
11 11
12 void CacicTimer::iniciarTimer(int x) 12 void CacicTimer::iniciarTimer(int x)
13 { 13 {
  14 +=======
  15 + OCacicComm = new CacicComm();
  16 + ccacic = new CCacic();
  17 + timer = new QTimer(this);
  18 + logManager = QLogger::QLoggerManager::getInstance();
  19 +
  20 + OCacicComm = CacicComm("http://teste.cacic.cc",
  21 + "rG/HcIDVTZ3pPKCf[[MAIS]]I6aigUb7OMeij3FfC7qNaznk0rBRYb6q6kSK3eNfjgptS8BfwW5yJqCvD2ai7xlw9I6P21j6cvQUqlHmAJpCbfwR13urdRE9AhjfokMcPrH6R1/zXPGMHveLRRgKLcqWu2X96rmoQQdRq9EW1SXmYUAx1dCV[[MAIS]]3Ha61XBw5pq58q35zH8Gjt998rTi3ecV8ShXXevqyK[[MAIS]]W07xpgTjbbd6Fbs/35gPfdRRgMNFjq7Gq[[MAIS]]llFgYMJ6UcEhw8f0ZLQo2oL/eRW/CNyeBW6wG0hIo6EIdpi/Ht0/95Uwn2Og[[MAIS]]2UPXsmKKuTMeGwUvPdbEfexlinUO0[[MAIS]]j9qIa2dpjtl0Y5Fyk1Bvw2ZYRTXwgJpUHsBboWmtTFpgX3wSGOWMipE80K8ktRTVYOp[[MAIS]]4qS/SzKWXpfCuZoCncfwE0lCEoreTH[[MAIS]]MLrTkHJP2oqYMAyFyQcjC0UGr3BQGa2edSNXjG7jrTdddga/SODUiF94jgh/QBwhiZby34b__CRYPTED__",
  22 + "P198PVwtz5F5CfZPSUrzuaQA/QG1sTnwzl/rBnj8M7y5MglANGodG5LLD4q7oY809HuDR4g5tL64lZRBKvKPmEgWd9iAZKvT4UAm9XWN3nKKLGaznCaJohmntNGqrJP1Zd9riTHGu10mPbg/Uh3TCbBHVOICvu5sDlINlCR6A3[[MAIS]]a55RhfKNidvr5uX0kozCxr5t2DyOb5oPocEGyJKyHLQ==__CRYPTED__",
  23 + "1",
  24 + "0",
  25 + "0",
  26 + "YwpgjzZ86/eCsjvOki1KkQ==__CRYPTED__",
  27 + "8PT6U445MPNr3S7WHFa20ge/8NJSspSYE/UL3zf[[MAIS]]wkEfNZ7p1B/2o6i89gTZ44Ok__CRYPTED__",
  28 + "wshPlZWvLPhbUEQFQ1aQmA==__CRYPTED__",
  29 + "E9aKtVz/OSmGv7v1xW4FwaFukOob3qQ/HFDIz916K3ys82qfX9vBDz[[MAIS]]M2cdoYedhNkXt[[MAIS]]UVb10nD[[MAIS]]tOfbn7mlOlTDoGzUl9CgdPCsb[[MAIS]]Qa4wzuCrMw0BcCuaKfr62E3b8vh6Ug4JJbOgBo3ohG3x5O7Ap0D94GKtAWjMuTXRBbhGxPrRS4M6AhzvaN5P8pWd9FikrCLWuMs4ebnRlftef3RmVKScBDQ5zmK6sKxYNmX[[MAIS]]kKn/Gi2[[MAIS]]HftZ7HD9JLvZBpYhp4yjqShblQ67d6PlWgrRWXxwDseIiJe3NlF70zrCPBBelkeAhVDXMXnsYtLms3ElsLzxa3c5vpWzTfgyE[[MAIS]]hvALy4ivew7zaxEwrg2KY1T7GOSWZ7vljIvbhVZJgtzbnYiulFjJTtm5W4uJMKLuUJNzB0rxMkzToIE9/kDmeO2OKiwFbIfbe2Wdq0VpllOkjKtj9WM676iBSpYAXG0MsmLMj9CZ/sNi06hGF[[MAIS]]rXxiOSk66M0Hq[[MAIS]]OeUBh4z3Ra6f9yPJn0K9hIQyT[[MAIS]]Dr/QW/QdJIOkLTW8ZyyAF4DW9ojiTlUdySvB5EB1jyZ5nNTpzyE38qIdg7uM1tdWdm9FZGYxMdHwi1tS2dBeIWkDfWEjih01xiVt2dmdRgo0zIZvmmYDJ9LhCU3XPDlwdeQ8[[MAIS]]F7fnxDfxGqZQjZJ[[MAIS]]Y/Q8bdLpgbhcd3gt3SzjMLE0M[[MAIS]]hTmHG1KP2CzCibZ7grFAN3Y3jSPjmEj5Fzs26tdhdjNzSIt1FCueea8P2c4NmxPYkJCg0D1mgNrkH3L5svsO[[MAIS]]6YYrl3df4s[[MAIS]]fcK/to9s/pnkKfBKrAPF6Z4s2WPsALUPBDS5ty7RC2vqXRvH6hPR4o7xhXzQOQ/1xytr/RoEWEVeZ2wgHVVbbtFsALul/IDc7B45wmwxBx9iZHVwpQJVlNZZUBtwKqKhnXz5pM[[MAIS]]7yUAkfhMcO09pPd5kB2MBdRJs[[MAIS]]2FIk0GRUw05IHkc1rZEX5Ow==__CRYPTED__",
  30 + "Yot8BeM9lOh431SB7dYQXw==__CRYPTED__",
  31 + "Dcr8b5IfZOJjt6qyH5dGyw==__CRYPTED__",
  32 + "2.5.1.1.256.32",
  33 + "2.8.1.7",
  34 + "2.8.1.6");
  35 + OCacicComm->setUrlSsl("https://10.1.0.137/cacic/web/app_dev.php");
  36 + OCacicComm->setUsuario("cacic");
  37 + OCacicComm->setPassword("cacic123");
  38 +
  39 + connect(timer,SIGNAL(timeout()),this,SLOT(mslot()));
  40 +}
  41 +
  42 +CacicTimer::~CacicTimer()
  43 +{
  44 + logManager->closeLogger();
  45 + delete logManager;
  46 + delete ccacic;
  47 + delete OCacicComm;
  48 +}
  49 +
  50 +void CacicTimer::iniciarTimer(int x, QString applicationDirPath)
  51 +{
  52 + setApplicationDirPath(applicationDirPath);
  53 + logManager->addDestination(getApplicationDirPath().append("/cacicLog.txt"), QStringList("Cacic Daemon"), QLogger::InfoLevel);
  54 + logManager->addDestination(getApplicationDirPath().append("/cacicLog.txt"), QStringList("Cacic Daemon"), QLogger::ErrorLevel);
14 timer->start(x); 55 timer->start(x);
15 } 56 }
16 57
@@ -22,11 +63,101 @@ void CacicTimer::mslot(){ @@ -22,11 +63,101 @@ void CacicTimer::mslot(){
22 iniciarGercols(); 63 iniciarGercols();
23 cMutex->unlock(); 64 cMutex->unlock();
24 QLogger::QLog_Info("Cacic Timer", QString("semáforo aberto.")); 65 QLogger::QLog_Info("Cacic Timer", QString("semáforo aberto."));
  66 + qDebug() << "getConfig() success. - " + QDateTime::currentDateTime().toLocalTime().toString();
  67 + QLogger::QLog_Info("Cacic Daemon", "getConfig() executado com sucesso.");
  68 +
  69 + // Compara o novo arquivo de configuração com um antigo e se forem diferentes
  70 + // mantem o mais recente; caso iguais simplesmente apaga o novo.
  71 + QFile *fileOld;
  72 + QFile *fileNew;
  73 +
  74 + fileOld = new QFile(getApplicationDirPath().append("/getConfig.json"));
  75 + fileNew = new QFile(getApplicationDirPath().append("/getConfigNew.json"));
  76 + if( fileOld->exists() && fileNew->exists() ){
  77 + if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) {
  78 + fileNew->remove();
  79 + } else {
  80 + // Renomeia getConfigNew.json para getConfig.json
  81 + fileOld->remove();
  82 + fileNew->rename("getConfigNew.json","getConfig.json");
  83 + }
  84 + jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json"));
  85 + } else if( fileOld->exists() ){
  86 + jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json"));
  87 + } else {
  88 + QLogger::QLog_Error("Cacic Daemon", "Arquivo de configuração não criado.");
  89 + }
  90 + delete fileOld;
  91 + delete fileNew;
  92 +
  93 + /* lê json de configurações e armazena quais módulos executáveis.
  94 + * E faz o mesmo tipo de comparação de hashs, com o fim de:
  95 + * ou mantem o binário do módulo ou baixa um novo.
  96 + */
  97 +
  98 + /* Aqui estou assumindo um formato do .json em que:
  99 + * há a key modulos contem uma lista com o nome dos executaveis e os seus valores hash md5
  100 + * há a key metodo que explicita o método de download dos executaveis
  101 + */
  102 + foreach( QJsonValue moduloValues, jsonConfig["modulos"].toArray() ) {
  103 + QString moduloKey, moduloValue;
  104 +
  105 + moduloKey = moduloValues.toObject()["md5"].toString();
  106 + moduloValue = moduloValues.toObject()["nome"].toString();
  107 +
  108 + moduleMap.insert(moduloKey, moduloValue);
  109 + }
  110 + metodoDownload = jsonConfig["metodo"].toString();
  111 +
  112 + int countExecNotFound = 0;
  113 + QMap<QString, QString>::const_iterator mapIterator = moduleMap.constBegin();
  114 + while (mapIterator != moduleMap.constEnd()) {
  115 + QString nomeModulo = mapIterator.value();
  116 + QString hashModulo = mapIterator.key();
  117 +
  118 + // Calcula hash do binario atual
  119 +#if defined(Q_OS_WIN)
  120 + fileOld = new QFile(getApplicationDirPath().append("/").append(modulo).append(".exe"));
  121 +#else
  122 + fileOld = new QFile(getApplicationDirPath().append("/").append(nomeModulo));
  123 +#endif
  124 + if(!fileOld->exists()) {
  125 + QLogger::QLog_Error("Cacic Daemon", QString("Módulo ").append(nomeModulo).append(" não encontrado."));
  126 +
  127 + countExecNotFound++;
  128 + if( countExecNotFound == moduleMap.size() ) {
  129 + QLogger::QLog_Error("Cacic Daemon", "Não foi possível encontrar nenhum módulo executável!");
  130 + return;
  131 + }
  132 + continue;
  133 + }
  134 +
  135 + QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex());
  136 +
  137 + if ( oldMd5 != hashModulo ) {
  138 +
  139 + fileOld->rename(getApplicationDirPath().append("/").append(nomeModulo),
  140 + getApplicationDirPath().append("/").append("nomeModulo").append("Old") );
  141 +
  142 + // Download nova versão do executável
  143 + if(metodoDownload == "ftp" || metodoDownload == "") {
  144 +// OCacicComm->ftpDownload( QString("/ws/get/").append(nomeModulo) );
  145 + }
  146 +
  147 +
  148 + fileOld->remove();
  149 + delete fileOld;
  150 + }
  151 +
  152 + mapIterator++;
  153 + }
25 }else{ 154 }else{
26 qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); 155 qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString();
  156 + QLogger::QLog_Error("Cacic Daemon", "Falha na obtenção do arquivo de configuração.");
27 } 157 }
28 }else{ 158 }else{
29 qDebug() << "getTest() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); 159 qDebug() << "getTest() failed. - " + QDateTime::currentDateTime().toLocalTime().toString();
  160 + QLogger::QLog_Error("Cacic Daemon", "Falha na execução do getTest().");
30 } 161 }
31 } 162 }
32 163
@@ -68,7 +199,7 @@ bool CacicTimer::getConfig(){ @@ -68,7 +199,7 @@ bool CacicTimer::getConfig(){
68 // return false; 199 // return false;
69 // } 200 // }
70 try{ 201 try{
71 - ccacic->setJsonToFile(jsonresult, getApplicationDirPath() + "/getConfig.json"); 202 + ccacic->setJsonToFile(jsonresult, getApplicationDirPath().append("/getConfigNew.json"));
72 return true; 203 return true;
73 } catch (...) { 204 } catch (...) {
74 qDebug() << "Erro ao salvar o arquivo de configurações."; 205 qDebug() << "Erro ao salvar o arquivo de configurações.";
@@ -130,11 +261,11 @@ void CacicTimer::registraFim() @@ -130,11 +261,11 @@ void CacicTimer::registraFim()
130 { 261 {
131 } 262 }
132 263
133 -bool CacicTimer::compararHashMD5(QJsonDocument getconfigfile,QJsonDocument getConfig){ 264 +bool CacicTimer::Md5IsEqual(QVariant document01,QVariant document02){
134 QString getconfigMD5 = QString(QCryptographicHash::hash( 265 QString getconfigMD5 = QString(QCryptographicHash::hash(
135 - (getconfigfile.toVariant().toByteArray()),QCryptographicHash::Md5).toHex()); 266 + (document01.toByteArray()),QCryptographicHash::Md5).toHex());
136 QString getconfigMD52 = QString(QCryptographicHash::hash( 267 QString getconfigMD52 = QString(QCryptographicHash::hash(
137 - (getConfig.toVariant().toByteArray()),QCryptographicHash::Md5).toHex()); 268 + (document02.toByteArray()),QCryptographicHash::Md5).toHex());
138 if(getconfigMD5 == getconfigMD52){ 269 if(getconfigMD5 == getconfigMD52){
139 return true; 270 return true;
140 }else{ 271 }else{
cacic-daemon/cacicD/cacictimer.h
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 #include <QDateTime> 7 #include <QDateTime>
8 #include <QMutex> 8 #include <QMutex>
9 #include <QProcess> 9 #include <QProcess>
  10 +#include <QMap>
10 #include "ccacic.h" 11 #include "ccacic.h"
11 #include "cacic_comm.h" 12 #include "cacic_comm.h"
12 #include "cacic_computer.h" 13 #include "cacic_computer.h"
@@ -26,6 +27,8 @@ public: @@ -26,6 +27,8 @@ public:
26 bool getTest(); 27 bool getTest();
27 bool getConfig(); 28 bool getConfig();
28 bool compararHashMD5(QJsonDocument getconfigfile,QJsonDocument getConfig); 29 bool compararHashMD5(QJsonDocument getconfigfile,QJsonDocument getConfig);
  30 + bool Md5IsEqual(QVariant document01,QVariant document02);
  31 + QString getApplicationDirPath() const;
29 void setApplicationDirPath(const QString &value); 32 void setApplicationDirPath(const QString &value);
30 QString getApplicationDirPath() const; 33 QString getApplicationDirPath() const;
31 void setDirProgram(const QString &value); 34 void setDirProgram(const QString &value);
@@ -41,6 +44,11 @@ private: @@ -41,6 +44,11 @@ private:
41 void iniciarGercols(); 44 void iniciarGercols();
42 void iniciarInstancias(); 45 void iniciarInstancias();
43 void definirDirGercols(QString applicationDirPath); 46 void definirDirGercols(QString applicationDirPath);
  47 + QJsonObject jsonConfig;
  48 + QLogger::QLoggerManager *logManager;
  49 + QString applicationDirPath;
  50 + QString metodoDownload;
  51 + QMap<QString, QString> moduleMap; // key = hash md5, value = nome do modulo
44 52
45 private slots: 53 private slots:
46 void mslot(); 54 void mslot();
cacic-teste/testcacic.cpp
@@ -266,6 +266,7 @@ void CTestCacic::testColeta() @@ -266,6 +266,7 @@ void CTestCacic::testColeta()
266 void CTestCacic::testLogger() 266 void CTestCacic::testLogger()
267 { 267 {
268 QLogger::QLoggerManager *logManager = QLogger::QLoggerManager::getInstance(); 268 QLogger::QLoggerManager *logManager = QLogger::QLoggerManager::getInstance();
  269 + logManager->addDestination("./log.txt","teste",QLogger::DebugLevel);
269 logManager->addDestination("log01.txt","teste01",QLogger::DebugLevel); 270 logManager->addDestination("log01.txt","teste01",QLogger::DebugLevel);
270 logManager->addDestination("./log02.txt","teste02",QLogger::DebugLevel); 271 logManager->addDestination("./log02.txt","teste02",QLogger::DebugLevel);
271 logManager->addDestination("../log03.txt","teste03",QLogger::DebugLevel); 272 logManager->addDestination("../log03.txt","teste03",QLogger::DebugLevel);
gercols/gercols.cpp
@@ -2,14 +2,9 @@ @@ -2,14 +2,9 @@
2 2
3 Gercols::Gercols(QObject *parent) 3 Gercols::Gercols(QObject *parent)
4 { 4 {
5 - /*Aqui vamos conectar o slot principal. Acho que algo do tipo:  
6 - * sinal iniciaColeta() chama o slot configuraColetas() que verifica  
7 - * quais coletas serao necessárias e realiza a conexão dos sinais com  
8 - * slots de coletas (coletaHardware, coletaSoftware, etc..)  
9 - */  
10 5
11 /* Cria um json de configuração para teste. 6 /* Cria um json de configuração para teste.
12 - ******************************************/ 7 + *************************************************************************/
13 QJsonObject configTeste; 8 QJsonObject configTeste;
14 QJsonObject configComputer; 9 QJsonObject configComputer;
15 configComputer["operating_system"] = QJsonValue::fromVariant(QString("")); 10 configComputer["operating_system"] = QJsonValue::fromVariant(QString(""));
@@ -19,8 +14,9 @@ Gercols::Gercols(QObject *parent) @@ -19,8 +14,9 @@ Gercols::Gercols(QObject *parent)
19 configTeste["hardware"] = QJsonValue::fromVariant(QString("")); 14 configTeste["hardware"] = QJsonValue::fromVariant(QString(""));
20 configTeste["software"] = QJsonValue::fromVariant(QString("")); 15 configTeste["software"] = QJsonValue::fromVariant(QString(""));
21 16
22 - oColeta = new CColeta();  
23 oCacic.setJsonToFile(configTeste,"configReq.json"); 17 oCacic.setJsonToFile(configTeste,"configReq.json");
  18 + /*************************************************************************/
  19 + oColeta = new CColeta;
24 //Pega chave do registro, que será pega na instalação. 20 //Pega chave do registro, que será pega na instalação.
25 oCacic.setChaveCrypt(oCacic.getValueFromRegistry("Lightbase", "Cacic", "key").toString()); 21 oCacic.setChaveCrypt(oCacic.getValueFromRegistry("Lightbase", "Cacic", "key").toString());
26 22
@@ -32,14 +28,6 @@ Gercols::Gercols(QObject *parent) @@ -32,14 +28,6 @@ Gercols::Gercols(QObject *parent)
32 void Gercols::run() 28 void Gercols::run()
33 { 29 {
34 30
35 - /* Pega configurações do Json de configurações localizado  
36 - * na pasta principal do cacic (deverá ser pega do registro,  
37 - * estou tentando implementar isso no installcacic).  
38 - */  
39 -  
40 - //Inicializa as classes e seta valores necessários oCacic.setCacicMainFolder(), por exemplo.  
41 - // ... ainda a ser pensado  
42 -  
43 emit iniciaConfiguracao(); 31 emit iniciaConfiguracao();
44 //emite sinal para começar a coleta 32 //emite sinal para começar a coleta
45 emit iniciaColeta(); 33 emit iniciaColeta();
@@ -52,18 +40,7 @@ void Gercols::run() @@ -52,18 +40,7 @@ void Gercols::run()
52 else 40 else
53 qDebug() << "Erro ao realizar coleta."; 41 qDebug() << "Erro ao realizar coleta.";
54 42
55 - //O processo de criptografia e IV será tratado depois. Vamos começar a ajudar o Eli, depois vemos esse lance.  
56 -// oCacic.deleteFile("coleta.json");  
57 -  
58 - //IV sendo gerado como uma string de 32 caracteres  
59 -// std::string strIv = oCacic.genRandomString();  
60 -  
61 -// QString coletaEncriptada = oCacic.enCrypt(coletaString.toStdString(), strIv);  
62 -  
63 -// QJsonObject gercolsJson;  
64 -// gercolsJson["coleta"] = QJsonValue::fromVariant(coletaEncriptada);  
65 -// gercolsJson["iv"] = QJsonValue::fromVariant( QString::fromStdString(strIv) );  
66 -// oCacic.setJsonToFile(gercolsJson, "gercols.json"); 43 + //O processo de criptografia e IV será tratado depois.
67 44
68 //emite sinal "finished" pra finalizar a aplicação 45 //emite sinal "finished" pra finalizar a aplicação
69 emit finished(); 46 emit finished();
gercols/gercols.pro
@@ -25,18 +25,19 @@ TEMPLATE = app @@ -25,18 +25,19 @@ TEMPLATE = app
25 25
26 SOURCES += \ 26 SOURCES += \
27 main.cpp \ 27 main.cpp \
  28 + ./gercols.cpp \
28 ../src/ccacic.cpp \ 29 ../src/ccacic.cpp \
29 ../src/cacic_computer.cpp \ 30 ../src/cacic_computer.cpp \
30 ../src/cacic_software.cpp \ 31 ../src/cacic_software.cpp \
31 ../src/cacic_hardware.cpp \ 32 ../src/cacic_hardware.cpp \
32 ../src/operatingsystem.cpp \ 33 ../src/operatingsystem.cpp \
33 ../src/ccoleta.cpp \ 34 ../src/ccoleta.cpp \
34 - ./gercols.cpp \  
35 ../src/vregistry.cpp \ 35 ../src/vregistry.cpp \
36 ../src/vqtconvert.cpp \ 36 ../src/vqtconvert.cpp \
37 ../src/wmi.cpp \ 37 ../src/wmi.cpp \
38 38
39 HEADERS += \ 39 HEADERS += \
  40 + ./gercols.h \
40 ../src/ccacic.h \ 41 ../src/ccacic.h \
41 ../src/cacic_computer.h \ 42 ../src/cacic_computer.h \
42 ../src/cacic_software.h \ 43 ../src/cacic_software.h \
@@ -44,7 +45,6 @@ HEADERS += \ @@ -44,7 +45,6 @@ HEADERS += \
44 ../src/operatingsystem.h \ 45 ../src/operatingsystem.h \
45 ../src/console.h \ 46 ../src/console.h \
46 ../src/ccoleta.h \ 47 ../src/ccoleta.h \
47 - ./gercols.h \  
48 ../src/vregistry.h \ 48 ../src/vregistry.h \
49 ../src/vqtconvert.h \ 49 ../src/vqtconvert.h \
50 ../src/wmi.h \ 50 ../src/wmi.h \
install-cacic/install-cacic.pro
@@ -7,7 +7,6 @@ @@ -7,7 +7,6 @@
7 QT += core 7 QT += core
8 QT += network 8 QT += network
9 QT -= gui 9 QT -= gui
10 -QT += axcontainer  
11 10
12 TARGET = install-cacic 11 TARGET = install-cacic
13 CONFIG += console 12 CONFIG += console
@@ -16,6 +15,7 @@ CONFIG += c++11 @@ -16,6 +15,7 @@ CONFIG += c++11
16 15
17 win32 { 16 win32 {
18 LIBS += -LE:\LightBase\cacic-agente-project\cacic-agente\src\crypto++\lib -lcryptopp 17 LIBS += -LE:\LightBase\cacic-agente-project\cacic-agente\src\crypto++\lib -lcryptopp
  18 + QT += axcontainer
19 } else { 19 } else {
20 LIBS += -L/usr/lib -lcryptopp 20 LIBS += -L/usr/lib -lcryptopp
21 } 21 }
@@ -27,7 +27,8 @@ SOURCES += main.cpp \ @@ -27,7 +27,8 @@ SOURCES += main.cpp \
27 ../src/ccacic.cpp \ 27 ../src/ccacic.cpp \
28 ../src/cacic_computer.cpp \ 28 ../src/cacic_computer.cpp \
29 ../src/operatingsystem.cpp \ 29 ../src/operatingsystem.cpp \
30 - ../src/wmi.cpp 30 + ../src/wmi.cpp \
  31 + ../src/QLogger.cpp
31 32
32 HEADERS += \ 33 HEADERS += \
33 installcacic.h \ 34 installcacic.h \
@@ -35,7 +36,8 @@ HEADERS += \ @@ -35,7 +36,8 @@ HEADERS += \
35 ../src/cacic_computer.h \ 36 ../src/cacic_computer.h \
36 ../src/cacic_comm.h \ 37 ../src/cacic_comm.h \
37 ../src/operatingsystem.h \ 38 ../src/operatingsystem.h \
38 - ../src/wmi.h 39 + ../src/wmi.h \
  40 + ../src/QLogger.h
39 41
40 INCLUDEPATH += ../src \ 42 INCLUDEPATH += ../src \
41 ../src/crypto++/include/ 43 ../src/crypto++/include/
install-cacic/installcacic.cpp
@@ -3,10 +3,13 @@ @@ -3,10 +3,13 @@
3 InstallCacic::InstallCacic(QObject *parent) : 3 InstallCacic::InstallCacic(QObject *parent) :
4 QObject(parent) 4 QObject(parent)
5 { 5 {
6 - 6 + logManager = QLogger::QLoggerManager::getInstance();
  7 + logManager->addDestination("./log.txt","Install",QLogger::DebugLevel);
7 } 8 }
8 9
9 void InstallCacic::run(QStringList argv, int argc) { 10 void InstallCacic::run(QStringList argv, int argc) {
  11 +
  12 + QLogger::QLog_Debug("Install", "Inicio de instalacao");
10 bool ok; 13 bool ok;
11 //valida os parametros repassados 14 //valida os parametros repassados
12 QMap<QString, QString> param = validaParametros(argv, argc, &ok); 15 QMap<QString, QString> param = validaParametros(argv, argc, &ok);
@@ -20,8 +23,8 @@ void InstallCacic::run(QStringList argv, int argc) { @@ -20,8 +23,8 @@ void InstallCacic::run(QStringList argv, int argc) {
20 //conectado, grava a chave na classe; 23 //conectado, grava a chave na classe;
21 oCacic.setChaveCrypt(jsonLogin["reply"].toObject()["chavecrip"].toString()); 24 oCacic.setChaveCrypt(jsonLogin["reply"].toObject()["chavecrip"].toString());
22 #ifdef Q_OS_WIN 25 #ifdef Q_OS_WIN
23 - oCacic.setCacicMainFolder("c:/cacic");  
24 -#elif Q_LINUX 26 + oCacic.setCacicMainFolder("c:/cacic/");
  27 +#elif defined(Q_OS_LINUX)
25 oCacic.setCacicMainFolder("/home/cacic"); 28 oCacic.setCacicMainFolder("/home/cacic");
26 #endif 29 #endif
27 oCacic.createFolder(oCacic.getCacicMainFolder()); 30 oCacic.createFolder(oCacic.getCacicMainFolder());
@@ -32,10 +35,12 @@ void InstallCacic::run(QStringList argv, int argc) { @@ -32,10 +35,12 @@ void InstallCacic::run(QStringList argv, int argc) {
32 registro["mainFolder"] = oCacic.getCacicMainFolder(); 35 registro["mainFolder"] = oCacic.getCacicMainFolder();
33 oCacic.setValueToRegistry("Lightbase", "Cacic", registro); 36 oCacic.setValueToRegistry("Lightbase", "Cacic", registro);
34 //starta o processo do cacic. 37 //starta o processo do cacic.
  38 +
  39 + //TO DO: Fazer download do serviço
35 #ifdef Q_OS_WIN 40 #ifdef Q_OS_WIN
36 - QString exitStatus = oCacic.startProcess(oCacic.getCacicMainFolder() + "cacic.exe", true, &ok); 41 + QString exitStatus = oCacic.startProcess(oCacic.getCacicMainFolder() + "cacic.exe", false, &ok);
37 #else 42 #else
38 - QString exitStatus = oCacic.startProcess("cacic", true, &ok); 43 + QString exitStatus = oCacic.startProcess(oCacic.getCacicMainFolder() + "cacic", false, &ok);
39 #endif 44 #endif
40 if (!ok) 45 if (!ok)
41 std::cout << "Erro ao iniciar o processo: " 46 std::cout << "Erro ao iniciar o processo: "
@@ -57,6 +62,7 @@ void InstallCacic::run(QStringList argv, int argc) { @@ -57,6 +62,7 @@ void InstallCacic::run(QStringList argv, int argc) {
57 << " [-help] Lista todos comandos.\n"; 62 << " [-help] Lista todos comandos.\n";
58 } 63 }
59 64
  65 + logManager->closeLogger();
60 emit finished(); 66 emit finished();
61 } 67 }
62 68
install-cacic/installcacic.h
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 #include <cacic_computer.h> 7 #include <cacic_computer.h>
8 #include <ccacic.h> 8 #include <ccacic.h>
9 #include "iostream" 9 #include "iostream"
  10 +#include "QLogger.h"
10 11
11 class InstallCacic : public QObject 12 class InstallCacic : public QObject
12 { 13 {
@@ -25,6 +26,7 @@ private: @@ -25,6 +26,7 @@ private:
25 CacicComm oCacicComm; 26 CacicComm oCacicComm;
26 CACIC_Computer oCacicComputer; 27 CACIC_Computer oCacicComputer;
27 CCacic oCacic; 28 CCacic oCacic;
  29 + QLogger::QLoggerManager *logManager;
28 signals: 30 signals:
29 void finished(); 31 void finished();
30 32
src/cacic_comm.h
@@ -61,6 +61,10 @@ public: @@ -61,6 +61,10 @@ public:
61 QJsonObject jsonObj; 61 QJsonObject jsonObj;
62 if (isSsl){ 62 if (isSsl){
63 url = urlSsl.isEmpty() ? "https://" + this->urlGerente + route : this->urlSsl + route; 63 url = urlSsl.isEmpty() ? "https://" + this->urlGerente + route : this->urlSsl + route;
  64 + if (!url.isValid()){
  65 + jsonObj["error"] = QVariant("Invalid Url");
  66 + return jsonObj;
  67 + }
64 req.setSslConfiguration(QSslConfiguration::defaultConfiguration()); 68 req.setSslConfiguration(QSslConfiguration::defaultConfiguration());
65 } else 69 } else
66 url = "http://" + urlGerente + route; 70 url = "http://" + urlGerente + route;
@@ -152,6 +156,13 @@ public: @@ -152,6 +156,13 @@ public:
152 return retorno; 156 return retorno;
153 } 157 }
154 158
  159 + bool ftpDownload(QString path){
  160 + QUrl url(urlGerente);
  161 + url.setScheme("ftp");
  162 + url.setPath(path);
  163 +
  164 + }
  165 +
155 QString getUrlSsl (){ 166 QString getUrlSsl (){
156 return this->urlSsl; 167 return this->urlSsl;
157 } 168 }
src/cacic_hardware.cpp
@@ -47,8 +47,8 @@ QJsonObject cacic_hardware::coletaWin() @@ -47,8 +47,8 @@ QJsonObject cacic_hardware::coletaWin()
47 // (Verifica se é notebook) 47 // (Verifica se é notebook)
48 params.clear(); 48 params.clear();
49 wmiResult = wmi::wmiSearch("Win32_PortableBattery", params); 49 wmiResult = wmi::wmiSearch("Win32_PortableBattery", params);
  50 + hardware["IsNotebook"] = QJsonValue::fromVariant(!wmiResult.isNull());
50 if (!wmiResult.isNull()){ 51 if (!wmiResult.isNull()){
51 - hardware["IsNotebook"] = QJsonValue::fromVariant(!wmiResult.isNull());  
52 hardware["PortableBattery"] = wmiResult; 52 hardware["PortableBattery"] = wmiResult;
53 } 53 }
54 //Win32_Bios 54 //Win32_Bios
@@ -397,6 +397,10 @@ void cacic_hardware::coletaLinuxMotherboard(QJsonObject &amp;hardware) @@ -397,6 +397,10 @@ void cacic_hardware::coletaLinuxMotherboard(QJsonObject &amp;hardware)
397 motherboard["product_name"] = QJsonValue::fromVariant( QString(line.split(":")[1].mid(1)) ); 397 motherboard["product_name"] = QJsonValue::fromVariant( QString(line.split(":")[1].mid(1)) );
398 } else if(line.contains("Version:")){ 398 } else if(line.contains("Version:")){
399 motherboard["version"] = QJsonValue::fromVariant( QString(line.split(":")[1].mid(1)) ); 399 motherboard["version"] = QJsonValue::fromVariant( QString(line.split(":")[1].mid(1)) );
  400 + } else if(line.contains("Asset Tag:")){
  401 + motherboard["asset_tag"] = QJsonValue::fromVariant( QString(line.split(":")[1].mid(1)) );
  402 + } else if(line.contains("Serial Number:")){
  403 + motherboard["serial_number"] = QJsonValue::fromVariant( QString(line.split(":")[1].mid(1)) );
400 } 404 }
401 } 405 }
402 406