Commit 1c90acb3746cf848c89e57f86477ff4c785d5788

Authored by Thiago Rocha
1 parent a65e13cf
Exists in master

Métodos de coleta de software para Linux criados.

gercols/gercols.cpp
@@ -32,7 +32,7 @@ qDebug() << "TESTE"; @@ -32,7 +32,7 @@ qDebug() << "TESTE";
32 32
33 void Gercols::run() 33 void Gercols::run()
34 { 34 {
35 - QJsonObject coleta; 35 +
36 /* Pega configurações do Json de configurações localizado 36 /* Pega configurações do Json de configurações localizado
37 * na pasta principal do cacic (deverá ser pega do registro, 37 * na pasta principal do cacic (deverá ser pega do registro,
38 * estou tentando implementar isso no installcacic). 38 * estou tentando implementar isso no installcacic).
src/cacic_software.cpp
@@ -8,8 +8,9 @@ void cacic_software::iniciaColeta() @@ -8,8 +8,9 @@ void cacic_software::iniciaColeta()
8 { 8 {
9 #ifdef Q_OS_WIN 9 #ifdef Q_OS_WIN
10 this->coletaSoftware = coletaWin(); 10 this->coletaSoftware = coletaWin();
11 -#else 11 +#elif defined(Q_OS_LINUX)
12 this->coletaSoftware = coletaLinux(); 12 this->coletaSoftware = coletaLinux();
  13 +
13 #endif 14 #endif
14 } 15 }
15 16
@@ -33,10 +34,82 @@ QJsonObject cacic_software::coletaWin() @@ -33,10 +34,82 @@ QJsonObject cacic_software::coletaWin()
33 return softwaresJson; 34 return softwaresJson;
34 } 35 }
35 36
36 -void cacic_software::coletaLinux() 37 +QJsonObject cacic_software::coletaLinux()
37 { 38 {
38 39
  40 + OperatingSystem operatingSystem;
  41 +
  42 + if( operatingSystem.getIdOs() == OperatingSystem::LINUX_ARCH ) {
  43 + return coletaArch();
  44 + } else if ( operatingSystem.getIdOs() == OperatingSystem::LINUX_DEBIAN ||
  45 + operatingSystem.getIdOs() == OperatingSystem::LINUX_UBUNTU ) {
  46 + return coletaDebian();
  47 + }
  48 +}
  49 +
  50 +QJsonObject cacic_software::coletaArch()
  51 +{
  52 + ConsoleObject console;
  53 + QJsonObject softwaresJson;
  54 +
  55 + QStringList packages = console("pacman -Qe").split("\n");
  56 +
  57 + foreach(QString package, packages) {
  58 + QString packageName = package.split(" ")[0];
  59 + QJsonObject packageJson;
  60 +
  61 + QStringList packageInfo = console(QString("pacman -Qi ").append(packageName)).split("\n");
  62 +// qDebug() << packageInfo;
  63 +
  64 + packageJson["name"] = QJsonValue::fromVariant(QString(packageName));
  65 + foreach(QString line, packageInfo) {
  66 + if(line.contains("Version"))
  67 + packageJson["version"] = line.split(":")[1].mid(1);
  68 + if(line.contains("Description"))
  69 + packageJson["description"] = line.split(":")[1].mid(1);
  70 + if(line.contains("URL"))
  71 + packageJson["url"] = line.split(":")[1].mid(1);
  72 + if(line.contains("Installed size"))
  73 + packageJson["installed_size"] = line.split(":")[1].mid(1);
  74 + if(line.contains("Install Date"))
  75 + packageJson["install_date"] = line.split(":")[1].mid(1);
  76 + }
  77 + softwaresJson[packageName] = packageJson;
  78 + }
  79 + return softwaresJson;
39 } 80 }
  81 +
  82 +QJsonObject cacic_software::coletaDebian()
  83 +{
  84 + ConsoleObject console;
  85 + QJsonObject softwaresJson;
  86 +
  87 + QStringList packages = console("dpkg --get-selections").split("\n");
  88 +
  89 + foreach(QString package, packages) {
  90 + QString packageName = package.split(" ")[0];
  91 + QJsonObject packageJson;
  92 +
  93 + QStringList packageInfo = console(QString("apt-cache show ").append(packageName)).split("\n");
  94 +// qDebug() << packageInfo;
  95 +
  96 + packageJson["name"] = QJsonValue::fromVariant(QString(packageName));
  97 + foreach(QString line, packageInfo) {
  98 + if(line.contains("Version"))
  99 + packageJson["version"] = line.split(":")[1].mid(1);
  100 + if(line.contains("Description"))
  101 + packageJson["description"] = line.split(":")[1].mid(1);
  102 + if(line.contains("Homepage"))
  103 + packageJson["url"] = line.split(":")[1].mid(1);
  104 + if(line.contains("Installed-Size"))
  105 + packageJson["installed_size"] = line.split(":")[1].mid(1);
  106 + }
  107 + softwaresJson[packageName] = packageJson;
  108 + }
  109 +
  110 + return softwaresJson;
  111 +}
  112 +
40 QJsonObject cacic_software::toJsonObject() 113 QJsonObject cacic_software::toJsonObject()
41 { 114 {
42 return coletaSoftware; 115 return coletaSoftware;
src/cacic_software.h
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 #define CACIC_SOFTWARE_H 2 #define CACIC_SOFTWARE_H
3 #include <QtCore> 3 #include <QtCore>
4 #include <ccacic.h> 4 #include <ccacic.h>
  5 +#include <console.h>
  6 +#include <operatingsystem.h>
5 class cacic_software 7 class cacic_software
6 { 8 {
7 public: 9 public:
@@ -11,7 +13,9 @@ public: @@ -11,7 +13,9 @@ public:
11 13
12 private: 14 private:
13 QJsonObject coletaWin(); 15 QJsonObject coletaWin();
14 - void coletaLinux(); 16 + QJsonObject coletaLinux();
  17 + QJsonObject coletaArch();
  18 + QJsonObject coletaDebian();
15 19
16 CCacic oCacic; 20 CCacic oCacic;
17 QJsonObject coletaSoftware; 21 QJsonObject coletaSoftware;
src/ccoleta.cpp
@@ -16,6 +16,7 @@ void CColeta::coletaSoftware() @@ -16,6 +16,7 @@ void CColeta::coletaSoftware()
16 { 16 {
17 qDebug() << "coletaSoftware() executado"; 17 qDebug() << "coletaSoftware() executado";
18 oSoftware.iniciaColeta(); 18 oSoftware.iniciaColeta();
  19 +
19 } 20 }
20 21
21 void CColeta::configuraColetas(){ 22 void CColeta::configuraColetas(){
@@ -35,10 +35,7 @@ public slots: @@ -35,10 +35,7 @@ public slots:
35 signals: 35 signals:
36 void beginComputer(); 36 void beginComputer();
37 void beginHardware(); 37 void beginHardware();
38 - void beginNetworkInterfaces();  
39 - void beginOperatingSystem();  
40 void beginSoftware(); 38 void beginSoftware();
41 - void beginUser();  
42 void finished(); 39 void finished();
43 }; 40 };
44 41