Commit 35f40da6d704704dc0cf7dea3ad11f869c4a09ce

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