diff --git a/userspace/falco/CMakeLists.txt b/userspace/falco/CMakeLists.txt index 7704840f..0da26aea 100644 --- a/userspace/falco/CMakeLists.txt +++ b/userspace/falco/CMakeLists.txt @@ -39,6 +39,7 @@ add_custom_command( ${CMAKE_CURRENT_SOURCE_DIR}/outputs.proto WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +if(MINIMAL_BUILD) add_executable( falco configuration.cpp @@ -48,7 +49,6 @@ add_executable( statsfilewriter.cpp falco.cpp "${SYSDIG_SOURCE_DIR}/userspace/sysdig/fields_info.cpp" - webserver.cpp grpc_context.cpp grpc_server_impl.cpp grpc_request_context.cpp @@ -58,43 +58,97 @@ add_executable( ${CMAKE_CURRENT_BINARY_DIR}/outputs.grpc.pb.cc ${CMAKE_CURRENT_BINARY_DIR}/outputs.pb.cc ${CMAKE_CURRENT_BINARY_DIR}/schema.pb.cc) +else() + add_executable( + falco + configuration.cpp + logger.cpp + falco_outputs.cpp + event_drops.cpp + statsfilewriter.cpp + falco.cpp + "${SYSDIG_SOURCE_DIR}/userspace/sysdig/fields_info.cpp" + webserver.cpp + grpc_context.cpp + grpc_server_impl.cpp + grpc_request_context.cpp + grpc_server.cpp + ${CMAKE_CURRENT_BINARY_DIR}/version.grpc.pb.cc + ${CMAKE_CURRENT_BINARY_DIR}/version.pb.cc + ${CMAKE_CURRENT_BINARY_DIR}/outputs.grpc.pb.cc + ${CMAKE_CURRENT_BINARY_DIR}/outputs.pb.cc + ${CMAKE_CURRENT_BINARY_DIR}/schema.pb.cc) -add_dependencies(falco civetweb string-view-lite) + add_dependencies(falco civetweb) +endif() + +add_dependencies(falco string-view-lite) if(USE_BUNDLED_DEPS) add_dependencies(falco yamlcpp) endif() -target_include_directories( - falco - PUBLIC - "${SYSDIG_SOURCE_DIR}/userspace/sysdig" - "${PROJECT_SOURCE_DIR}/userspace/engine" - "${PROJECT_BINARY_DIR}/userspace/falco" - "${PROJECT_BINARY_DIR}/driver/src" - "${STRING_VIEW_LITE_INCLUDE}" - "${YAMLCPP_INCLUDE_DIR}" - "${CIVETWEB_INCLUDE_DIR}" - "${OPENSSL_INCLUDE_DIR}" - "${GRPC_INCLUDE}" - "${GRPCPP_INCLUDE}" - "${PROTOBUF_INCLUDE}" - "${CMAKE_CURRENT_BINARY_DIR}" - "${DRAIOS_DEPENDENCIES_DIR}/yaml-${DRAIOS_YAML_VERSION}/target/include") +if(MINIMAL_BUILD) + target_include_directories( + falco + PUBLIC + "${SYSDIG_SOURCE_DIR}/userspace/sysdig" + "${PROJECT_SOURCE_DIR}/userspace/engine" + "${PROJECT_BINARY_DIR}/userspace/falco" + "${PROJECT_BINARY_DIR}/driver/src" + "${STRING_VIEW_LITE_INCLUDE}" + "${YAMLCPP_INCLUDE_DIR}" + "${OPENSSL_INCLUDE_DIR}" + "${GRPC_INCLUDE}" + "${GRPCPP_INCLUDE}" + "${PROTOBUF_INCLUDE}" + "${CMAKE_CURRENT_BINARY_DIR}" + "${DRAIOS_DEPENDENCIES_DIR}/yaml-${DRAIOS_YAML_VERSION}/target/include") -target_link_libraries( - falco - falco_engine - sinsp - "${GPR_LIB}" - "${GRPC_LIB}" - "${GRPCPP_LIB}" - "${PROTOBUF_LIB}" - "${OPENSSL_LIBRARY_SSL}" - "${OPENSSL_LIBRARY_CRYPTO}" - "${LIBYAML_LIB}" - "${YAMLCPP_LIB}" - "${CIVETWEB_LIB}") + target_link_libraries( + falco + falco_engine + sinsp + "${GPR_LIB}" + "${GRPC_LIB}" + "${GRPCPP_LIB}" + "${PROTOBUF_LIB}" + "${OPENSSL_LIBRARY_SSL}" + "${OPENSSL_LIBRARY_CRYPTO}" + "${LIBYAML_LIB}" + "${YAMLCPP_LIB}") +else() + target_include_directories( + falco + PUBLIC + "${SYSDIG_SOURCE_DIR}/userspace/sysdig" + "${PROJECT_SOURCE_DIR}/userspace/engine" + "${PROJECT_BINARY_DIR}/userspace/falco" + "${PROJECT_BINARY_DIR}/driver/src" + "${STRING_VIEW_LITE_INCLUDE}" + "${YAMLCPP_INCLUDE_DIR}" + "${CIVETWEB_INCLUDE_DIR}" + "${OPENSSL_INCLUDE_DIR}" + "${GRPC_INCLUDE}" + "${GRPCPP_INCLUDE}" + "${PROTOBUF_INCLUDE}" + "${CMAKE_CURRENT_BINARY_DIR}" + "${DRAIOS_DEPENDENCIES_DIR}/yaml-${DRAIOS_YAML_VERSION}/target/include") + + target_link_libraries( + falco + falco_engine + sinsp + "${GPR_LIB}" + "${GRPC_LIB}" + "${GRPCPP_LIB}" + "${PROTOBUF_LIB}" + "${OPENSSL_LIBRARY_SSL}" + "${OPENSSL_LIBRARY_CRYPTO}" + "${LIBYAML_LIB}" + "${YAMLCPP_LIB}" + "${CIVETWEB_LIB}") +endif() configure_file(config_falco.h.in config_falco.h) diff --git a/userspace/falco/falco.cpp b/userspace/falco/falco.cpp index 50e62eac..01467a3b 100644 --- a/userspace/falco/falco.cpp +++ b/userspace/falco/falco.cpp @@ -43,7 +43,9 @@ limitations under the License. #include "falco_engine.h" #include "config_falco.h" #include "statsfilewriter.h" +#ifndef MINIMAL_BUILD #include "webserver.h" +#endif #include "grpc_server.h" #include "banned.h" // This raises a compilation error when certain functions are used @@ -461,7 +463,9 @@ int falco_init(int argc, char **argv) double duration; scap_stats cstats; +#ifndef MINIMAL_BUILD falco_webserver webserver; +#endif falco::grpc::server grpc_server; std::thread grpc_server_thread; @@ -1225,6 +1229,7 @@ int falco_init(int argc, char **argv) delete mesos_api; mesos_api = 0; +#ifndef MINIMAL_BUILD if(trace_filename.empty() && config.m_webserver_enabled && !disable_k8s_audit) { std::string ssl_option = (config.m_webserver_ssl_enabled ? " (SSL)" : ""); @@ -1232,6 +1237,7 @@ int falco_init(int argc, char **argv) webserver.init(&config, engine, outputs); webserver.start(); } +#endif // gRPC server if(config.m_grpc_enabled) @@ -1302,7 +1308,9 @@ int falco_init(int argc, char **argv) inspector->close(); engine->print_stats(); sdropmgr.print_stats(); +#ifndef MINIMAL_BUILD webserver.stop(); +#endif if(grpc_server_thread.joinable()) { grpc_server.shutdown(); @@ -1315,7 +1323,9 @@ int falco_init(int argc, char **argv) result = EXIT_FAILURE; +#ifndef MINIMAL_BUILD webserver.stop(); +#endif if(grpc_server_thread.joinable()) { grpc_server.shutdown();