statistics_db.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /**
  2. * Class writing the statistics to the database.
  3. */
  4. #ifndef CPP_PCAPREADER_STATISTICSDB_H
  5. #define CPP_PCAPREADER_STATISTICSDB_H
  6. #include <iostream>
  7. #include <memory>
  8. #include <string>
  9. #include "statistics.h"
  10. #include <SQLiteCpp/SQLiteCpp.h>
  11. #include <unordered_map>
  12. class statistics_db {
  13. public:
  14. /*
  15. * Constructor: Creates new database / Opens existing database
  16. */
  17. statistics_db(std::string database_path);
  18. /*
  19. * Database version: Increment number on every change in the C++ code!
  20. */
  21. static const int DB_VERSION = 4;
  22. /*
  23. * Methods for writing values into database
  24. */
  25. void writeStatisticsIP(std::unordered_map<std::string, entry_ipStat> ipStatistics);
  26. void writeStatisticsDegree(std::unordered_map<std::string, entry_ipStat> ipStatistics);
  27. void writeStatisticsTTL(std::unordered_map<ipAddress_ttl, int> ttlDistribution);
  28. void writeStatisticsMSS(std::unordered_map<ipAddress_mss, int> mssDistribution);
  29. void writeStatisticsToS(std::unordered_map<ipAddress_tos, int> tosDistribution);
  30. void writeStatisticsWin(std::unordered_map<ipAddress_win, int> winDistribution);
  31. void writeStatisticsProtocols(std::unordered_map<ipAddress_protocol, entry_protocolStat> protocolDistribution);
  32. void writeStatisticsPorts(std::unordered_map<ipAddress_inOut_port, entry_portStat> portsStatistics);
  33. void writeStatisticsIpMac(std::unordered_map<std::string, std::string> IpMacStatistics);
  34. void writeStatisticsFile(int packetCount, float captureDuration, std::string timestampFirstPkt,
  35. std::string timestampLastPkt, float avgPacketRate, float avgPacketSize,
  36. float avgPacketsSentPerHost, float avgBandwidthIn, float avgBandwidthOut);
  37. void writeStatisticsConv(std::unordered_map<conv, entry_convStat> convStatistics);
  38. void writeStatisticsConvExt(std::unordered_map<convWithProt, entry_convStatExt> conv_statistics_extended);
  39. void writeStatisticsInterval(std::unordered_map<std::string, entry_intervalStat> intervalStatistics);
  40. void writeDbVersion();
  41. void readPortServicesFromNmap();
  42. std::string getNmapPath();
  43. bool pathExists(std::string path);
  44. void writeStatisticsUnrecognizedPDUs(std::unordered_map<unrecognized_PDU, unrecognized_PDU_stat> unrecognized_PDUs);
  45. private:
  46. // Pointer to the SQLite database
  47. std::unique_ptr<SQLite::Database> db;
  48. // Vector which contains all ports and their corresponding services
  49. std::unordered_map<int, std::string> portServices;
  50. };
  51. #endif //CPP_PCAPREADER_STATISTICSDB_H