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 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,82 @@ QJsonObject cacic_software::coletaWin()
33 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 113 QJsonObject cacic_software::toJsonObject()
41 114 {
42 115 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  
... ...