mirror of
https://github.com/falcosecurity/falco.git
synced 2026-04-02 18:12:15 +00:00
Compare commits
2 Commits
update/lib
...
fix/http-o
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
369f69e8c8 | ||
|
|
9a664771c0 |
@@ -175,18 +175,14 @@ include(njson)
|
|||||||
# yaml-cpp
|
# yaml-cpp
|
||||||
include(yaml-cpp)
|
include(yaml-cpp)
|
||||||
|
|
||||||
if(NOT WIN32
|
if(NOT MINIMAL_BUILD AND NOT EMSCRIPTEN)
|
||||||
AND NOT APPLE
|
|
||||||
AND NOT MINIMAL_BUILD
|
|
||||||
AND NOT EMSCRIPTEN
|
|
||||||
)
|
|
||||||
# OpenSSL
|
# OpenSSL
|
||||||
include(openssl)
|
include(openssl)
|
||||||
|
|
||||||
# libcurl
|
# libcurl
|
||||||
include(curl)
|
include(curl)
|
||||||
|
|
||||||
# todo(jasondellaluce,rohith-raju): support webserver for non-linux builds too cpp-httlib
|
# cpp-httplib
|
||||||
include(cpp-httplib)
|
include(cpp-httplib)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -202,14 +198,6 @@ include(valijson)
|
|||||||
if(USE_GPERFTOOLS)
|
if(USE_GPERFTOOLS)
|
||||||
include(gperftools)
|
include(gperftools)
|
||||||
endif()
|
endif()
|
||||||
if(NOT MINIMAL_BUILD)
|
|
||||||
if(NOT WIN32
|
|
||||||
AND NOT APPLE
|
|
||||||
AND NOT EMSCRIPTEN
|
|
||||||
)
|
|
||||||
include(cares)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
|||||||
@@ -1,78 +0,0 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
#
|
|
||||||
# Copyright (C) 2023 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.
|
|
||||||
#
|
|
||||||
|
|
||||||
option(USE_BUNDLED_CARES "Enable building of the bundled c-ares" ${USE_BUNDLED_DEPS})
|
|
||||||
|
|
||||||
if(CARES_INCLUDE)
|
|
||||||
# we already have c-ares
|
|
||||||
elseif(NOT USE_BUNDLED_CARES)
|
|
||||||
find_path(CARES_INCLUDE NAMES cares/ares.h ares.h)
|
|
||||||
find_library(CARES_LIB NAMES cares)
|
|
||||||
if(CARES_INCLUDE AND CARES_LIB)
|
|
||||||
message(STATUS "Found c-ares: include: ${CARES_INCLUDE}, lib: ${CARES_LIB}")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Couldn't find system c-ares")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if(BUILD_SHARED_LIBS)
|
|
||||||
set(CARES_LIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
||||||
set(CARES_STATIC_OPTION "Off")
|
|
||||||
else()
|
|
||||||
set(CARES_LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
||||||
set(CARES_STATIC_OPTION "On")
|
|
||||||
endif()
|
|
||||||
set(CARES_SRC "${PROJECT_BINARY_DIR}/c-ares-prefix/src/c-ares")
|
|
||||||
set(CARES_INCLUDE "${CARES_SRC}/include/")
|
|
||||||
set(CARES_LIB "${CARES_SRC}/lib/libcares${CARES_LIB_SUFFIX}")
|
|
||||||
|
|
||||||
if(NOT TARGET c-ares)
|
|
||||||
message(STATUS "Using bundled c-ares in '${CARES_SRC}'")
|
|
||||||
ExternalProject_Add(
|
|
||||||
c-ares
|
|
||||||
PREFIX "${PROJECT_BINARY_DIR}/c-ares-prefix"
|
|
||||||
URL "https://github.com/c-ares/c-ares/releases/download/v1.33.1/c-ares-1.33.1.tar.gz"
|
|
||||||
URL_HASH "SHA256=06869824094745872fa26efd4c48e622b9bd82a89ef0ce693dc682a23604f415"
|
|
||||||
BUILD_IN_SOURCE 1
|
|
||||||
CMAKE_ARGS -DCMAKE_POLICY_DEFAULT_CMP0091:STRING=NEW
|
|
||||||
-DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY}
|
|
||||||
-DCMAKE_INSTALL_LIBDIR=lib
|
|
||||||
-DCARES_SHARED=${BUILD_SHARED_LIBS}
|
|
||||||
-DCARES_STATIC=${CARES_STATIC_OPTION}
|
|
||||||
-DCARES_STATIC_PIC=${ENABLE_PIC}
|
|
||||||
-DCARES_BUILD_TOOLS=Off
|
|
||||||
-DCARES_INSTALL=Off
|
|
||||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
|
||||||
BUILD_BYPRODUCTS ${CARES_INCLUDE} ${CARES_LIB}
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
)
|
|
||||||
install(
|
|
||||||
FILES "${CARES_LIB}"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${LIBS_PACKAGE_NAME}"
|
|
||||||
COMPONENT "libs-deps"
|
|
||||||
)
|
|
||||||
install(
|
|
||||||
DIRECTORY "${CARES_INCLUDE}"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${LIBS_PACKAGE_NAME}"
|
|
||||||
COMPONENT "libs-deps"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT TARGET c-ares)
|
|
||||||
add_custom_target(c-ares)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories("${CARES_INCLUDE}")
|
|
||||||
@@ -22,7 +22,7 @@ limitations under the License.
|
|||||||
#include <libsinsp/utils.h>
|
#include <libsinsp/utils.h>
|
||||||
|
|
||||||
#include <re2/re2.h>
|
#include <re2/re2.h>
|
||||||
#if defined(__linux__) and !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
#if !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
#endif
|
#endif
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
@@ -136,7 +136,7 @@ uint64_t parse_prometheus_interval(std::string interval_str) {
|
|||||||
return interval;
|
return interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__) and !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
#if !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
||||||
std::string calculate_file_sha256sum(const std::string& filename) {
|
std::string calculate_file_sha256sum(const std::string& filename) {
|
||||||
std::ifstream file(filename, std::ios::binary);
|
std::ifstream file(filename, std::ios::binary);
|
||||||
if(!file.is_open()) {
|
if(!file.is_open()) {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ limitations under the License.
|
|||||||
namespace falco::utils {
|
namespace falco::utils {
|
||||||
uint64_t parse_prometheus_interval(std::string interval_str);
|
uint64_t parse_prometheus_interval(std::string interval_str);
|
||||||
|
|
||||||
#if defined(__linux__) and !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
#if !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
||||||
std::string calculate_file_sha256sum(const std::string& filename);
|
std::string calculate_file_sha256sum(const std::string& filename);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -83,22 +83,16 @@ if(NOT WIN32)
|
|||||||
target_sources(falco_application PRIVATE outputs_program.cpp outputs_syslog.cpp)
|
target_sources(falco_application PRIVATE outputs_program.cpp outputs_syslog.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT MINIMAL_BUILD)
|
if(NOT EMSCRIPTEN AND NOT MINIMAL_BUILD)
|
||||||
target_sources(falco_application PRIVATE outputs_http.cpp falco_metrics.cpp webserver.cpp)
|
target_sources(falco_application PRIVATE outputs_http.cpp falco_metrics.cpp webserver.cpp)
|
||||||
|
|
||||||
list(APPEND FALCO_INCLUDE_DIRECTORIES FALCO_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
|
list(APPEND FALCO_INCLUDE_DIRECTORIES FALCO_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
|
||||||
"${CARES_INCLUDE}"
|
|
||||||
)
|
|
||||||
|
|
||||||
if(TARGET c-ares)
|
if(USE_BUNDLED_CURL)
|
||||||
list(APPEND FALCO_DEPENDENCIES c-ares)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND USE_BUNDLED_CURL)
|
|
||||||
list(APPEND FALCO_DEPENDENCIES curl)
|
list(APPEND FALCO_DEPENDENCIES curl)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND FALCO_LIBRARIES httplib::httplib "${CURL_LIBRARIES}" "${CARES_LIB}")
|
list(APPEND FALCO_LIBRARIES httplib::httplib "${CURL_LIBRARIES}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(EMSCRIPTEN)
|
if(EMSCRIPTEN)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ falco::app::run_result falco::app::actions::load_rules_files(falco::app::state&
|
|||||||
if(res->has_warnings()) {
|
if(res->has_warnings()) {
|
||||||
falco_logger::log(falco_logger::level::WARNING, res->as_string(true, rc) + "\n");
|
falco_logger::log(falco_logger::level::WARNING, res->as_string(true, rc) + "\n");
|
||||||
}
|
}
|
||||||
#if defined(__linux__) and !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
#if !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
||||||
s.config->m_loaded_rules_filenames_sha256sum.insert(
|
s.config->m_loaded_rules_filenames_sha256sum.insert(
|
||||||
{filename, falco::utils::calculate_file_sha256sum(filename)});
|
{filename, falco::utils::calculate_file_sha256sum(filename)});
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ limitations under the License.
|
|||||||
|
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
|
|
||||||
#if defined(__linux__) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
#if !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
||||||
#include "webserver.h"
|
#include "webserver.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ using namespace falco::app;
|
|||||||
using namespace falco::app::actions;
|
using namespace falco::app::actions;
|
||||||
|
|
||||||
falco::app::run_result falco::app::actions::start_webserver(falco::app::state& state) {
|
falco::app::run_result falco::app::actions::start_webserver(falco::app::state& state) {
|
||||||
#if defined(__linux__) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
#if !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
||||||
if(state.is_capture_mode() || !state.config->m_webserver_enabled) {
|
if(state.is_capture_mode() || !state.config->m_webserver_enabled) {
|
||||||
return run_result::ok();
|
return run_result::ok();
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ falco::app::run_result falco::app::actions::start_webserver(falco::app::state& s
|
|||||||
}
|
}
|
||||||
|
|
||||||
falco::app::run_result falco::app::actions::stop_webserver(falco::app::state& state) {
|
falco::app::run_result falco::app::actions::stop_webserver(falco::app::state& state) {
|
||||||
#if defined(__linux__) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
#if !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
||||||
if(state.is_capture_mode() || !state.config->m_webserver_enabled) {
|
if(state.is_capture_mode() || !state.config->m_webserver_enabled) {
|
||||||
return run_result::ok();
|
return run_result::ok();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ limitations under the License.
|
|||||||
#include "restart_handler.h"
|
#include "restart_handler.h"
|
||||||
#include "../configuration.h"
|
#include "../configuration.h"
|
||||||
#include "../stats_writer.h"
|
#include "../stats_writer.h"
|
||||||
#if defined(__linux__) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
#if !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
||||||
#include "../webserver.h"
|
#include "../webserver.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ struct state {
|
|||||||
// Helper responsible for watching of handling hot application restarts
|
// Helper responsible for watching of handling hot application restarts
|
||||||
std::shared_ptr<restart_handler> restarter;
|
std::shared_ptr<restart_handler> restarter;
|
||||||
|
|
||||||
#if defined(__linux__) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
#if !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
||||||
falco_webserver webserver;
|
falco_webserver webserver;
|
||||||
#endif
|
#endif
|
||||||
// Set by start_webserver to start prometheus metrics
|
// Set by start_webserver to start prometheus metrics
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ void falco_configuration::merge_config_files(const std::string &config_name,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__) and !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
#if !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
||||||
for(auto &filename : m_loaded_configs_filenames) {
|
for(auto &filename : m_loaded_configs_filenames) {
|
||||||
m_loaded_configs_filenames_sha256sum.insert(
|
m_loaded_configs_filenames_sha256sum.insert(
|
||||||
{filename, falco::utils::calculate_file_sha256sum(filename)});
|
{filename, falco::utils::calculate_file_sha256sum(filename)});
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ std::string falco_metrics::falco_to_text_prometheus(
|
|||||||
"falco",
|
"falco",
|
||||||
{{"version", FALCO_VERSION}});
|
{{"version", FALCO_VERSION}});
|
||||||
|
|
||||||
#if defined(__linux__) and !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
#if !defined(MINIMAL_BUILD) and !defined(__EMSCRIPTEN__)
|
||||||
// Note that the rule counter metrics are retrieved from the state, not from any inspector
|
// Note that the rule counter metrics are retrieved from the state, not from any inspector
|
||||||
// Distinguish between config and rules files using labels, following Prometheus best
|
// Distinguish between config and rules files using labels, following Prometheus best
|
||||||
// practices: https://prometheus.io/docs/practices/naming/#labels
|
// practices: https://prometheus.io/docs/practices/naming/#labels
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ limitations under the License.
|
|||||||
#include "outputs_program.h"
|
#include "outputs_program.h"
|
||||||
#include "outputs_syslog.h"
|
#include "outputs_syslog.h"
|
||||||
#endif
|
#endif
|
||||||
#if defined(__linux__) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
#if !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
||||||
#include "outputs_http.h"
|
#include "outputs_http.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ void falco_outputs::add_output(const falco::outputs::config &oc) {
|
|||||||
oo = std::make_unique<falco::outputs::output_syslog>();
|
oo = std::make_unique<falco::outputs::output_syslog>();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(__linux__) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
#if !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD)
|
||||||
else if(oc.name == "http") {
|
else if(oc.name == "http") {
|
||||||
oo = std::make_unique<falco::outputs::output_http>();
|
oo = std::make_unique<falco::outputs::output_http>();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user