Unified logic to serialise attack information

This commit is contained in:
Pavel Odintsov 2023-07-31 11:35:37 +01:00
parent e791f3ad45
commit 85ad7810e3
3 changed files with 19 additions and 11 deletions

View File

@ -2451,3 +2451,17 @@ bool subnet_belongs_to_patricia_tree(patricia_tree_t* patricia_tree, const subne
} }
} }
// Prepares textual dump of simple packets buffer
void print_simple_packet_buffer_to_string(const boost::circular_buffer<simple_packet_t>& simple_packets_buffer, std::string& output) {
if (simple_packets_buffer.size() != 0) {
std::stringstream ss;
for (const simple_packet_t& packet : simple_packets_buffer) {
ss << print_simple_packet(packet);
}
output = ss.str();
}
}

View File

@ -19,6 +19,8 @@
#include "attack_details.hpp" #include "attack_details.hpp"
#include <boost/circular_buffer.hpp>
#define TCP_FIN_FLAG_SHIFT 1 #define TCP_FIN_FLAG_SHIFT 1
#define TCP_SYN_FLAG_SHIFT 2 #define TCP_SYN_FLAG_SHIFT 2
#define TCP_RST_FLAG_SHIFT 3 #define TCP_RST_FLAG_SHIFT 3
@ -166,3 +168,5 @@ std::string convert_any_subnet_to_string(const subnet_cidr_mask_t& subnet);
std::string print_binary_string_as_hex_with_leading_0x(const uint8_t* data_ptr, uint32_t data_length); std::string print_binary_string_as_hex_with_leading_0x(const uint8_t* data_ptr, uint32_t data_length);
bool read_ipv6_subnet_from_string(subnet_ipv6_cidr_mask_t& ipv6_address, const std::string& ipv6_subnet_as_string); bool read_ipv6_subnet_from_string(subnet_ipv6_cidr_mask_t& ipv6_address, const std::string& ipv6_subnet_as_string);
bool subnet_belongs_to_patricia_tree(patricia_tree_t* patricia_tree, const subnet_cidr_mask_t& subnet); bool subnet_belongs_to_patricia_tree(patricia_tree_t* patricia_tree, const subnet_cidr_mask_t& subnet);
// Prepares textual dump of simple packets buffer
void print_simple_packet_buffer_to_string(const boost::circular_buffer<simple_packet_t>& simple_packets_buffer, std::string& output);

View File

@ -1267,18 +1267,8 @@ void call_blackhole_actions_per_host(attack_action_t attack_action,
action_name = "unban"; action_name = "unban";
} }
// For all attack types at this moment we could prepare simple packet dump
std::string simple_packets_dump; std::string simple_packets_dump;
print_simple_packet_buffer_to_string(simple_packets_buffer, simple_packets_dump);
if (simple_packets_buffer.size() != 0) {
std::stringstream ss;
for (const simple_packet_t& packet : simple_packets_buffer) {
ss << print_simple_packet(packet);
}
simple_packets_dump = ss.str();
}
std::string basic_attack_information_in_json = std::string basic_attack_information_in_json =
get_attack_description_in_json_for_web_hooks(client_ip, subnet_ipv6_cidr_mask_t{}, false, action_name, current_attack); get_attack_description_in_json_for_web_hooks(client_ip, subnet_ipv6_cidr_mask_t{}, false, action_name, current_attack);