From d0973fa63a6652f35e410ea1306edd2ff471fbb7 Mon Sep 17 00:00:00 2001 From: "Andrii Serbeniuk -X (aserbeni - SOFTSERVE INC at Cisco)" Date: Wed, 18 Sep 2024 14:44:28 +0000 Subject: [PATCH] Pull request #4448: extractor: rewrite std writer to use text_log utility Merge in SNORT/snort3 from ~ASERBENI/snort3:log_perf_ci to master Squashed commit of the following: commit 11c5aa69552e778d782dc74bce964d8e2e34378e Author: Andrii Serbeniuk Date: Fri Sep 6 10:13:34 2024 +0300 extractor: rewrite std writer to use text_log utility This way its output will be written to the same descriptor as ips events. In most of the cases it's stdout, but it can also be descriptor 3 if snort was build with --enable-stdlog --- .../extractor/extractor_writer.cc | 13 +++++++++++++ src/network_inspectors/extractor/extractor_writer.h | 9 ++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/network_inspectors/extractor/extractor_writer.cc b/src/network_inspectors/extractor/extractor_writer.cc index 227b65f6c..7f402a31f 100644 --- a/src/network_inspectors/extractor/extractor_writer.cc +++ b/src/network_inspectors/extractor/extractor_writer.cc @@ -35,6 +35,19 @@ ExtractorWriter* ExtractorWriter::make_writer(OutputType o_type) } } +StdExtractorWriter::StdExtractorWriter() : ExtractorWriter(), extr_std_log(snort::TextLog_Init("stdout")) +{} + +StdExtractorWriter::~StdExtractorWriter() +{ + snort::TextLog_Term(extr_std_log); +} + +void StdExtractorWriter::write(const char* ss) +{ + snort::TextLog_Print(extr_std_log, "%s", ss); +} + #ifdef UNIT_TEST #include "catch/snort_catch.h" diff --git a/src/network_inspectors/extractor/extractor_writer.h b/src/network_inspectors/extractor/extractor_writer.h index d6551f5cf..a30c912b2 100644 --- a/src/network_inspectors/extractor/extractor_writer.h +++ b/src/network_inspectors/extractor/extractor_writer.h @@ -23,6 +23,8 @@ #include #include +#include "log/text_log.h" + class OutputType { public: @@ -77,10 +79,10 @@ protected: class StdExtractorWriter : public ExtractorWriter { public: - StdExtractorWriter() = default; + StdExtractorWriter(); + ~StdExtractorWriter() override; - void write(const char* ss) override - { fprintf(stdout, "%s", ss); } + void write(const char* ss) override; void lock() override { write_mutex.lock(); } @@ -90,6 +92,7 @@ public: private: std::mutex write_mutex; + TextLog* extr_std_log; }; #endif -- 2.47.3