diff --git a/.circleci/config.yml b/.circleci/config.yml index ab094df7..a5519120 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -115,16 +115,30 @@ jobs: command: "sudo docker exec -it linux_priviledged_container pbuilder --create --basetgz /data/debian_base.tgz --distribution << parameters.debian_codename >>" - run: ls -la /data - run: sudo docker exec -it linux_priviledged_container pbuilder --build --basetgz /data/debian_base.tgz --debbuildopts "-sa" /fastnetmon_$(sudo docker exec -it linux_priviledged_container head -n 1 fastnetmon-debian-salsa/debian/changelog|awk '{print $2}'|sed 's/[()]//g').dsc - build_docker_x86_64: + build_docker: machine: image: ubuntu-2204:current steps: - - checkout - - run: docker build -t ghcr.io/pavel-odintsov/fastnetmon-community:<< pipeline.parameters.fastnetmon_build_version >> -t ghcr.io/pavel-odintsov/fastnetmon-community:latest - < src/Dockerfile - - run: sudo docker images - - run: echo $CR_PAT | sudo docker login ghcr.io -u pavel-odintsov --password-stdin - - run: sudo docker push ghcr.io/pavel-odintsov/fastnetmon-community:<< pipeline.parameters.fastnetmon_build_version >> - - run: sudo docker push ghcr.io/pavel-odintsov/fastnetmon-community:latest + - checkout + - run: + name: Extract GitHub Username + command: | + GH_USERNAME=$(echo "<< pipeline.project.git_url >>" | sed -n 's#.*/\([^/]*\)/.*#\1#p') + echo "GitHub username is $GH_USERNAME" + echo "export GH_USERNAME=$GH_USERNAME" >> $BASH_ENV + - run: + name: Build Docker images + command: | + echo $CR_PAT | docker login ghcr.io -u $GH_USERNAME --password-stdin + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker buildx create --use + docker buildx inspect --bootstrap + docker buildx build \ + --file src/Dockerfile \ + --platform linux/amd64,linux/arm64 \ + --tag ghcr.io/$GH_USERNAME/fastnetmon-community:<< pipeline.parameters.fastnetmon_build_version >> \ + --tag ghcr.io/$GH_USERNAME/fastnetmon-community:latest \ + --push . build_gce: machine: # We use this image because it uses GCE instead of AWS for testing @@ -134,14 +148,6 @@ jobs: resource_class: large steps: - checkout - build_docker_arm64: - machine: - image: ubuntu-2204:current - resource_class: arm.large - steps: - - checkout - - run: docker build --build-arg installer_file_name=installer_arm64 -t ghcr.io/pavel-odintsov/fastnetmon-community:1.2.3 -t ghcr.io/pavel-odintsov/fastnetmon-community:latest - < src/Dockerfile - - run: sudo docker images build_fedora_upstream: parameters: docker_image: @@ -436,10 +442,8 @@ workflows: distro_name: "debian" resource_class: "arm.large" debian_package_architecture: "arm64" - - build_docker_x86_64: - name: "Build Docker image on x86_64 platform" - # - build_docker_arm64: - # name: "Build Docker image on ARM64 platform" + - build_docker: + name: "Build Docker images" - build_debian_upstream_package: name: "Debian Sid Upstream Build" debian_codename: "sid" diff --git a/src/Dockerfile b/src/Dockerfile index de7b3c29..5bbcae95 100644 --- a/src/Dockerfile +++ b/src/Dockerfile @@ -1,11 +1,18 @@ -FROM ubuntu:22.04 - -ARG installer_file_name=installer +FROM ubuntu:24.04 ENV CI=true +ARG TARGETPLATFORM + +RUN apt-get update && apt-get upgrade -y && apt-get install -y wget -RUN apt-get update && apt-get upgrade -y && apt-get install -y wget && wget https://install.fastnetmon.com/$installer_file_name -Oinstaller && chmod +x installer && ./installer -install_community_edition +RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ + wget https://install.fastnetmon.com/installer -O installer; \ + elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ + wget https://install.fastnetmon.com/installer_arm64 -O installer; \ + fi && \ + chmod +x installer && \ + ./installer -install_community_edition -LABEL org.opencontainers.image.source https://github.com/pavel-odintsov/fastnetmon +LABEL org.opencontainers.image.source=https://github.com/pavel-odintsov/fastnetmon -CMD /opt/fastnetmon/fastnetmon +CMD ["/opt/fastnetmon-community/app/bin/fastnetmon"] diff --git a/src/fast_library.cpp b/src/fast_library.cpp index 3c28af25..65bb1c27 100644 --- a/src/fast_library.cpp +++ b/src/fast_library.cpp @@ -146,7 +146,7 @@ std::string get_net_address_from_network_as_string(std::string network_cidr_form split(subnet_as_string, network_cidr_format, boost::is_any_of("/"), boost::token_compress_on); if (subnet_as_string.size() != 2) { - return 0; + return std::string(); } return subnet_as_string[0]; diff --git a/src/fastnetmon.cpp b/src/fastnetmon.cpp index 4224d2c7..d881180c 100644 --- a/src/fastnetmon.cpp +++ b/src/fastnetmon.cpp @@ -464,10 +464,6 @@ void free_up_all_resources(); void interruption_signal_handler(int signal_number); #ifdef FASTNETMON_API -void silent_logging_function(gpr_log_func_args* args) { - // We do not want any logging here -} - // We could not define this variable in top of the file because we should define class before FastnetmonApiServiceImpl api_service; @@ -1864,10 +1860,6 @@ int main(int argc, char** argv) { std::filesystem::remove(fastnetmon_platform_configuration.backtrace_path); } -#ifdef FASTNETMON_API - gpr_set_log_function(silent_logging_function); -#endif - // Set default ban configuration init_global_ban_settings(); diff --git a/src/fastnetmon_api_client.cpp b/src/fastnetmon_api_client.cpp index d2a5f5c3..56fcccde 100644 --- a/src/fastnetmon_api_client.cpp +++ b/src/fastnetmon_api_client.cpp @@ -90,10 +90,6 @@ class FastnetmonClient { std::unique_ptr stub_; }; -void silent_logging_function(gpr_log_func_args* args) { - // We do not want any logging here -} - int main(int argc, char** argv) { std::string supported_commands_list = "ban, unban, get_banlist"; @@ -102,8 +98,6 @@ int main(int argc, char** argv) { return 1; } - gpr_set_log_function(silent_logging_function); - // Instantiate the client. It requires a channel, out of which the actual RPCs // are created. This channel models a connection to an endpoint (in this case, // localhost at port 50051). We indicate that the channel isn't authenticated diff --git a/src/metrics/clickhouse.cpp b/src/metrics/clickhouse.cpp index d8c3c918..9ff12ec8 100644 --- a/src/metrics/clickhouse.cpp +++ b/src/metrics/clickhouse.cpp @@ -213,8 +213,6 @@ void increment_clickhouse_per_protocol_counters(PerProtocolMetrics& metrics, con // Populates Clickhouse host counters using speed_element void increment_clickhouse_host_counters(ClickhouseHostMetrics& metrics, const subnet_counter_t& current_speed_element) { - std::vector processed_directions = { INCOMING, OUTGOING }; - metrics.packets_incoming->Append(current_speed_element.total.in_packets); metrics.bits_incoming->Append(current_speed_element.total.in_bytes * 8); metrics.flows_incoming->Append(current_speed_element.in_flows); @@ -496,8 +494,6 @@ template (std::is_same_v)bool push_hosts_traffic_counters_to_clickhouse(clickhouse::Client* clickhouse_metrics_client, abstract_subnet_counters_t& host_counters, const std::string& table_name) { - std::vector processed_directions = { INCOMING, OUTGOING }; - clickhouse::Block block; ClickhouseHostMetrics metrics; diff --git a/src/metrics/graphite.cpp b/src/metrics/graphite.cpp index 718abf71..4d774e2a 100644 --- a/src/metrics/graphite.cpp +++ b/src/metrics/graphite.cpp @@ -214,6 +214,6 @@ void graphite_push_thread() { logger << log4cpp::Priority::DEBUG << "Graphite data pushed in: " << graphite_thread_execution_time.tv_sec << " sec " << graphite_thread_execution_time.tv_usec << " microseconds\n"; - boost::this_thread::sleep(boost::posix_time::seconds(fastnetmon_global_configuration.clickhouse_metrics_push_period)); + boost::this_thread::sleep(boost::posix_time::seconds(fastnetmon_global_configuration.graphite_push_period)); } }