From 7b70f3c2ef7d4ba0b1a787d5f50db6c44c84bcaa Mon Sep 17 00:00:00 2001 From: Leonardo Grasso Date: Tue, 22 Sep 2020 17:44:03 +0200 Subject: [PATCH] new(userspace/falco): stdout output C++ impl Signed-off-by: Leonardo Grasso --- userspace/falco/falco_outputs_stdout.cpp | 39 ++++++++++++++++++++++++ userspace/falco/falco_outputs_stdout.h | 37 ++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 userspace/falco/falco_outputs_stdout.cpp create mode 100644 userspace/falco/falco_outputs_stdout.h diff --git a/userspace/falco/falco_outputs_stdout.cpp b/userspace/falco/falco_outputs_stdout.cpp new file mode 100644 index 00000000..33872826 --- /dev/null +++ b/userspace/falco/falco_outputs_stdout.cpp @@ -0,0 +1,39 @@ +/* +Copyright (C) 2020 The Falco Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include "falco_outputs_stdout.h" +#include +#include "banned.h" // This raises a compilation error when certain functions are used + +void falco::outputs::output_stdout::output_event(gen_event *evt, std::string &rule, std::string &source, + falco_common::priority_type priority, std::string &format, std::string &msg) +{ + output_msg(priority, msg); +} + +void falco::outputs::output_stdout::output_msg(falco_common::priority_type priority, std::string &msg) +{ + std::cout << msg + "\n"; + if(!m_buffered) + { + std::cout.flush(); + } +} + +void falco::outputs::output_stdout::cleanup() +{ + std::cout.flush(); +} diff --git a/userspace/falco/falco_outputs_stdout.h b/userspace/falco/falco_outputs_stdout.h new file mode 100644 index 00000000..80909a37 --- /dev/null +++ b/userspace/falco/falco_outputs_stdout.h @@ -0,0 +1,37 @@ +/* +Copyright (C) 2020 The Falco Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#pragma once + +#include "falco_output.h" + +namespace falco +{ +namespace outputs +{ + +class output_stdout : public output +{ + void output_event(gen_event *evt, std::string &rule, std::string &source, + falco_common::priority_type priority, std::string &format, std::string &msg); + + void output_msg(falco_common::priority_type priority, std::string &msg); + + void cleanup(); +}; + +} // namespace outputs +} // namespace falco