diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 46ca80e469b0d0761f2892355b71dce65cac792c..3ccf7a7381c49a8d11faf5437f28eea308007ea9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,7 +13,7 @@ pattern: - apt-get update && apt-get install -y git python - git clone https://github.com/google/styleguide - cd styleguide/cpplint - - ./cpplint.py --filter=-whitespace/blank_line,-build/include_what_you_use ../../src/!(jsoncpp).cpp ../../src/linux/*.cpp ../../src/windows/*.cpp + - ./cpplint.py --filter=-whitespace/blank_line,-build/include_what_you_use ../../src/agent/!(jsoncpp).cpp ../../src/agent/linux/*.cpp ../../src/agent/windows/*.cpp compile: stage: build diff --git a/CMakeLists.txt b/CMakeLists.txt index 5fc8536c23e568232c6907da0cf30e1359dc4d15..238b82c086b4ad9d75a66ad75ce1d7ad681705e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,14 +11,14 @@ set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" ) # src : main + jsoncpp library -file ( GLOB SOURCES src/*.cpp ) +file ( GLOB SOURCES src/agent/*.cpp ) # src : collect functions - depend on OS if ( WIN32 ) - file ( GLOB SOURCES ${SOURCES} src/windows/*.cpp ) + file ( GLOB SOURCES ${SOURCES} src/agent/windows/*.cpp ) else () # if( UNIX ) - file ( GLOB SOURCES ${SOURCES} src/linux/*.cpp ) + file ( GLOB SOURCES ${SOURCES} src/agent/linux/*.cpp ) endif () @@ -66,6 +66,13 @@ if ( PRINT_JSON ) add_definitions ( -DPRINT_JSON ) endif () +# test to update +option( UPDATE_JSON "Set to ON to print json objects before sending" OFF ) +message(STATUS "${UPDATE_JSON}: ${${UPDATE_JSON}}") +if ( UPDATE_JSON ) + add_definitions ( -DUPDATE_JSON ) +endif () + # compile set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY "../bin" ) add_executable ( agent-v${VERSION_MAJOR}.${VERSION_MINOR} ${SOURCES} ) diff --git a/include/agent/linux/datasid-agent.h b/include/agent/linux/datasid-agent.h index b2a9c552d2e131185c34997f415c1915837ebc23..33e562fc3536561dfa0b2beb72e7830ea5d98736 100644 --- a/include/agent/linux/datasid-agent.h +++ b/include/agent/linux/datasid-agent.h @@ -20,6 +20,7 @@ */ #pragma once #include <iostream> +#include <json/json.h> class Agent{ private: @@ -43,6 +44,7 @@ class Agent{ std::string getVersion() const; }; + int datasid_agent(); std::string getAbsolutePath( std::string str, int tot); bool prefixIsSet(std::string prefix); diff --git a/include/agent/linux/datasid-common.h b/include/agent/linux/datasid-common.h index 60dd76b2bf27df538811552bb875c2fec81ea157..c435cd5f772f4b02edd828dce9bee43c57cacff2 100644 --- a/include/agent/linux/datasid-common.h +++ b/include/agent/linux/datasid-common.h @@ -23,6 +23,7 @@ #include "datasid-agent.h" #include "datasid-conf.h" #include "datasid-proxy.h" +#include <json/json.h> -bool datasid_common(Conf* conf, Proxy* proxy, Agent* agent); +bool datasid_common(Json::Value& inventory, Agent* agent, Conf* conf, Proxy* proxy); bool fileExist(const char * file); diff --git a/include/agent/linux/datasid-conf.h b/include/agent/linux/datasid-conf.h index 4864c0e723d3280f0f5040b3d6db6961a0474b95..3f267d52981b727a87291bc25e6df6a1d565b94d 100644 --- a/include/agent/linux/datasid-conf.h +++ b/include/agent/linux/datasid-conf.h @@ -22,6 +22,7 @@ #include <map> #include "datasid-agent.h" #include "datasid-parse.h" +#include "json/json.h" class Conf{ private: @@ -58,5 +59,5 @@ class Conf{ }; -void datasid_conf(Agent* agent, Conf* conf); +bool datasid_conf(Agent* agent, Conf* conf, Json::Value& update); bool setConf(Conf* conf, Agent* agent, std::map<std::string, std::string>* content); diff --git a/include/agent/linux/datasid-proxy.h b/include/agent/linux/datasid-proxy.h index ab7ca1bc09d24b04a7cbd814e5728d964fb8dfd5..973f1c57295633fb40d9bb96b78cf2ec231d75cb 100644 --- a/include/agent/linux/datasid-proxy.h +++ b/include/agent/linux/datasid-proxy.h @@ -23,6 +23,7 @@ #include "datasid-agent.h" #include "datasid-conf.h" #include "datasid-parse.h" +#include "json/json.h" class Proxy{ private: @@ -43,5 +44,5 @@ class Proxy{ std::string getPassword() const; }; -void datasid_proxy(Conf* conf, Proxy* proxy); +bool datasid_proxy(Conf* conf, Proxy* proxy, Json::Value& update); bool setProxy(Proxy* proxy, std::map<std::string, std::string>* content); diff --git a/include/agent/main.h b/include/agent/main.h index 45dd1eb1ddb64275a30917d602805453106ca2f4..440a57c21790e0520f607f3362dd6bab5f19b18c 100644 --- a/include/agent/main.h +++ b/include/agent/main.h @@ -1,5 +1,4 @@ -#ifndef __main__ -#define __main__ +#pragma once #include <cstring> #include <fstream> #include <iostream> @@ -9,5 +8,3 @@ #include "linux/datasid-conf.h" bool fileExist(const std::string& file); -int main(); -#endif diff --git a/src/jsoncpp.cpp b/src/agent/jsoncpp.cpp similarity index 100% rename from src/jsoncpp.cpp rename to src/agent/jsoncpp.cpp diff --git a/src/linux/datasid-agent.cpp b/src/agent/linux/datasid-agent.cpp similarity index 78% rename from src/linux/datasid-agent.cpp rename to src/agent/linux/datasid-agent.cpp index 3d71b94e46648b64ba3377598ed24b433b5ff951..8a46b58a0a93eb06a8cef7613866fd0d1fcd18ba 100644 --- a/src/linux/datasid-agent.cpp +++ b/src/agent/linux/datasid-agent.cpp @@ -19,7 +19,7 @@ * USA. */ #include <string> -#include "../../include/agent/main.h" +#include "agent/main.h" /* * set Functions @@ -94,20 +94,35 @@ bool prefixIsSet(std::string prefix) { return true; } +// NOLINTNEXTLINE(runtime/references) int datasid_agent() { Agent agent; Conf conf; Proxy proxy; + Json::Value update; + /* Set agent prefix */ - agent.setPrefix(__FILE__, 3); + agent.setPrefix(__FILE__, 4); /* Set confif file */ agent.setDefaultConf("/conf/datasid-conf.json"); /* Run datasid-common.cpp */ - if (!datasid_common(&conf, &proxy, &agent)) - exit(1); + if (datasid_common(update, &agent, &conf, &proxy)) { + std::fstream logFile(agent.getLogFile().c_str(), std::fstream::app); + logFile << __DATE__ << " - Agent started." << std::endl; + logFile << __DATE__ << " - Start of update process execution." + << std::endl; + } + + #ifdef UPDATE_JSON + Json::StyledWriter styledWriter; + if (!update.isNull()) + std::cout << styledWriter.write(update) << std::endl; + else + std::cout << "Empty updat object" << std::endl; + #endif return 1; } diff --git a/src/linux/datasid-common.cpp b/src/agent/linux/datasid-common.cpp similarity index 65% rename from src/linux/datasid-common.cpp rename to src/agent/linux/datasid-common.cpp index 0fcf5857e763e340306da22cd9a593e9b7ca3ef2..2f91cae6c2ca1a1acfbff3de908e69a601747bb9 100644 --- a/src/linux/datasid-common.cpp +++ b/src/agent/linux/datasid-common.cpp @@ -19,7 +19,7 @@ * USA. */ #include <string> -#include "../../include/agent/linux/datasid-common.h" +#include "agent/linux/datasid-common.h" /* * fileExist Function @@ -36,30 +36,43 @@ bool fileExist(const std::string& file) { return false; } - -bool datasid_common(Conf* conf, Proxy* proxy, Agent* agent) { +// NOLINTNEXTLINE(runtime/references) +bool datasid_common(Json::Value& inventory, Agent* agent, Conf* conf, + Proxy* proxy) { try { prefixIsSet(agent->getPrefix()); } catch (const char* msg) { - std::cout << __DATE__ << msg << std::endl; + std::string var = __DATE__ + *msg; + inventory["data"]["prefix_not_set"] = var; return false; } /* Read config file and declare only valid variables */ if (!fileExist(agent->getDefaultConf())) { - std::cout << __DATE__ << "ERROR: Config file not found." << std::endl; + std::string var = __DATE__ + + std::string(" - ERROR: Conf file not found."); + + inventory["data"]["conf_file_not_found"] = var; return false; } else { - datasid_conf(agent, conf); + if (!datasid_conf(agent, conf, inventory)) { + return false; + } } /* Read proxy file and declare only valid variables */ - if (!fileExist(conf->getProxyConf())) - std::cout << __DATE__ << "WARNING: Proxy file not found. " << std::endl; - else - datasid_proxy(conf, proxy); + if (!fileExist(conf->getProxyConf())) { + std::string var = __DATE__ + + std::string(" - WARNING: Proxy file not found."); + + inventory["data"]["proxy_file_not_found"] = var; + } else { + if (!datasid_proxy(conf, proxy, inventory)) { + return false; + } + } return true; } diff --git a/src/linux/datasid-conf.cpp b/src/agent/linux/datasid-conf.cpp similarity index 91% rename from src/linux/datasid-conf.cpp rename to src/agent/linux/datasid-conf.cpp index ab33ecfaf52c1d47be4353b899a060aed1cac690..54cf4a310f3a45d038a609a1db3d877f1b5a40ce 100644 --- a/src/linux/datasid-conf.cpp +++ b/src/agent/linux/datasid-conf.cpp @@ -25,7 +25,7 @@ #include <map> #include <sstream> #include <string> -#include "../../include/agent/linux/datasid-conf.h" +#include "agent/linux/datasid-conf.h" /* * set Functions */ @@ -144,17 +144,19 @@ bool setConf(Conf* conf, Agent* agent, std::map<std::string, return true; } -void datasid_conf(Agent* agent, Conf* conf) { +// NOLINTNEXTLINE(runtime/references) +bool datasid_conf(Agent* agent, Conf* conf, Json::Value& update) { std::map<std::string, std::string> content; if (readFile(agent->getDefaultConf(), &content)) { if (!setConf(conf, agent, &content)) { - std::cout << __DATE__ << " ERROR: to parse variables " << - "from config file." << std::endl; - exit(1); + std::string var = __DATE__ + + std::string(" - ERROR: to parse variables from config file."); + + update["data"]["conf_file_not_found"] = var; + return false; } - } else { - std::cout << __DATE__ << " ERROR: config file not found." << std::endl; - exit(1); } + + return true; } diff --git a/src/linux/datasid-parse.cpp b/src/agent/linux/datasid-parse.cpp similarity index 98% rename from src/linux/datasid-parse.cpp rename to src/agent/linux/datasid-parse.cpp index 2bec17c626ab53c45f2320cc3b681592af098b99..a9dcf339507495b8b9987efee643c69571758dbc 100644 --- a/src/linux/datasid-parse.cpp +++ b/src/agent/linux/datasid-parse.cpp @@ -21,7 +21,7 @@ #include <re2/re2.h> #include <map> #include <string> -#include "../../include/agent/linux/datasid-parse.h" +#include "agent/linux/datasid-parse.h" /* * trim Function diff --git a/src/linux/datasid-proxy.cpp b/src/agent/linux/datasid-proxy.cpp similarity index 86% rename from src/linux/datasid-proxy.cpp rename to src/agent/linux/datasid-proxy.cpp index 32ac8a7016a713128fdc3b68768539574aba9cae..3a31f9e0e948f31a2b0c75f34a8f0547d061e9cf 100644 --- a/src/linux/datasid-proxy.cpp +++ b/src/agent/linux/datasid-proxy.cpp @@ -21,7 +21,7 @@ #include <iostream> #include <map> #include <string> -#include "../../include/agent/linux/datasid-proxy.h" +#include "agent/linux/datasid-proxy.h" /* * set Functions @@ -84,16 +84,19 @@ bool setProxy(Proxy* proxy, std::map<std::string, std::string>* content) { return true; } -void datasid_proxy(Conf* conf, Proxy* proxy) { +// NOLINTNEXTLINE(runtime/references) +bool datasid_proxy(Conf* conf, Proxy* proxy, Json::Value& update) { std::map<std::string, std::string> content; if (readFile(conf->getProxyConf(), &content)) { if (!setProxy(proxy, &content)) { - std::cout << __DATE__ << " ERROR: to parse variables" << - " from proxy file." << std::endl; - exit(1); + std::string var = __DATE__ + + std::string(" - ERROR: to parse variables from proxy file."); + + update["data"]["proxy_file_not_found"] = var; + return false; } - } else { - std::cout << __DATE__ << " WARNING: proxy file not found." << std::endl; } + + return true; } diff --git a/src/linux/get_date.cpp b/src/agent/linux/get_date.cpp similarity index 100% rename from src/linux/get_date.cpp rename to src/agent/linux/get_date.cpp diff --git a/src/linux/get_disks_info.cpp b/src/agent/linux/get_disks_info.cpp similarity index 100% rename from src/linux/get_disks_info.cpp rename to src/agent/linux/get_disks_info.cpp diff --git a/src/linux/get_distro.cpp b/src/agent/linux/get_distro.cpp similarity index 100% rename from src/linux/get_distro.cpp rename to src/agent/linux/get_distro.cpp diff --git a/src/linux/get_macaddr.cpp b/src/agent/linux/get_macaddr.cpp similarity index 100% rename from src/linux/get_macaddr.cpp rename to src/agent/linux/get_macaddr.cpp diff --git a/src/linux/get_machine_type.cpp b/src/agent/linux/get_machine_type.cpp similarity index 100% rename from src/linux/get_machine_type.cpp rename to src/agent/linux/get_machine_type.cpp diff --git a/src/linux/get_memory_size.cpp b/src/agent/linux/get_memory_size.cpp similarity index 100% rename from src/linux/get_memory_size.cpp rename to src/agent/linux/get_memory_size.cpp diff --git a/src/linux/get_processor_model.cpp b/src/agent/linux/get_processor_model.cpp similarity index 100% rename from src/linux/get_processor_model.cpp rename to src/agent/linux/get_processor_model.cpp diff --git a/src/linux/get_time.cpp b/src/agent/linux/get_time.cpp similarity index 100% rename from src/linux/get_time.cpp rename to src/agent/linux/get_time.cpp diff --git a/src/linux/get_user_count.cpp b/src/agent/linux/get_user_count.cpp similarity index 100% rename from src/linux/get_user_count.cpp rename to src/agent/linux/get_user_count.cpp diff --git a/src/linux/inventory.cpp b/src/agent/linux/inventory.cpp similarity index 100% rename from src/linux/inventory.cpp rename to src/agent/linux/inventory.cpp diff --git a/src/linux/open_file.cpp b/src/agent/linux/open_file.cpp similarity index 100% rename from src/linux/open_file.cpp rename to src/agent/linux/open_file.cpp diff --git a/src/main.cpp b/src/agent/main.cpp similarity index 99% rename from src/main.cpp rename to src/agent/main.cpp index 51f0d7afd500b9c7bc8786e041a33fe7cc40a766..79979433cb920654004fc213b5134e10e97e4b6a 100644 --- a/src/main.cpp +++ b/src/agent/main.cpp @@ -27,12 +27,10 @@ #include "agent/main.h" int main() { - + datasid_agent(); send_inventory(); send_net_bandwidth(); send_user_history(); - datasid_agent(); - return 0; } diff --git a/src/network_bandwidth.cpp b/src/agent/network_bandwidth.cpp similarity index 100% rename from src/network_bandwidth.cpp rename to src/agent/network_bandwidth.cpp diff --git a/src/post.cpp b/src/agent/post.cpp similarity index 100% rename from src/post.cpp rename to src/agent/post.cpp diff --git a/src/user_history.cpp b/src/agent/user_history.cpp similarity index 100% rename from src/user_history.cpp rename to src/agent/user_history.cpp diff --git a/src/windows/get_date.cpp b/src/agent/windows/get_date.cpp similarity index 100% rename from src/windows/get_date.cpp rename to src/agent/windows/get_date.cpp diff --git a/src/windows/get_macaddr.cpp b/src/agent/windows/get_macaddr.cpp similarity index 100% rename from src/windows/get_macaddr.cpp rename to src/agent/windows/get_macaddr.cpp diff --git a/src/windows/get_machine_type.cpp b/src/agent/windows/get_machine_type.cpp similarity index 100% rename from src/windows/get_machine_type.cpp rename to src/agent/windows/get_machine_type.cpp diff --git a/src/windows/get_time.cpp b/src/agent/windows/get_time.cpp similarity index 100% rename from src/windows/get_time.cpp rename to src/agent/windows/get_time.cpp diff --git a/src/windows/inventory.cpp b/src/agent/windows/inventory.cpp similarity index 100% rename from src/windows/inventory.cpp rename to src/agent/windows/inventory.cpp diff --git a/test/returnTest.bats b/test/returnTest.bats index d20ca170dd17f8cbf5857482eab1bf193a47f709..30ef0a24ed4958d5f35cfbef4b8eac9a786a5c1a 100755 --- a/test/returnTest.bats +++ b/test/returnTest.bats @@ -50,7 +50,7 @@ setup() { } teardown() { - rm -f export.json + rm -f export.json } @test "Amount Users" {