From 460e248aed308d96da4d6d7b6b0f969a3b774981 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 28 May 2026 17:57:11 +0800 Subject: [PATCH] privacy: disable Bambu cloud telemetry before DLL start() (#13898) * privacy: disable Bambu cloud telemetry before DLL start() --- src/slic3r/GUI/GUI_App.cpp | 10 +++++++++- src/slic3r/Utils/NetworkAgent.cpp | 15 ++++++++------- src/slic3r/Utils/NetworkAgent.hpp | 5 +++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 6b4f5fc89d..082eb12b6a 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3349,6 +3349,8 @@ bool GUI_App::on_init_network(bool try_backup) std::string country_code = app_config->get_country_code(); m_agent->set_country_code(country_code); m_agent->start(); + // Orca: disable Bambu telemetry up-front (before any login) so it never starts. + check_track_enable(); } // When using Orca cloud alongside the BBL network plugin, the BBL DLL agent still @@ -3365,6 +3367,12 @@ bool GUI_App::on_init_network(bool try_backup) bbl.init_log(); bbl.set_cert_file(resources_dir() + "/cert", "slicer_base64.cer"); bbl.set_country_code(app_config->get_country_code()); + // Orca: disable Bambu telemetry before start() so the DLL never spins up tracking + // workers. This covers the case where the BBL plugin is loaded for LAN discovery + // but the user has not registered BBL_CLOUD_PROVIDER (so m_agent->track_enable + // would not reach this DLL instance). + bbl.track_enable(false); + bbl.track_remove_files(); bbl.start(); } } @@ -4970,7 +4978,7 @@ void GUI_App::on_user_login_handle(wxCommandEvent &evt) void GUI_App::check_track_enable() { - // Orca: alaways disable track event + // Orca: telemetry only exists on the BBL cloud agent; always disable it. if (m_agent) { m_agent->track_enable(false); m_agent->track_remove_files(); diff --git a/src/slic3r/Utils/NetworkAgent.cpp b/src/slic3r/Utils/NetworkAgent.cpp index 03e677b636..e59795c058 100644 --- a/src/slic3r/Utils/NetworkAgent.cpp +++ b/src/slic3r/Utils/NetworkAgent.cpp @@ -582,21 +582,22 @@ int NetworkAgent::get_my_token(std::string ticket, unsigned int* http_code, std: return -1; } -int NetworkAgent::track_enable(bool enable, const std::string& provider) +int NetworkAgent::track_enable(bool enable) { - this->enable_track = enable; - const auto cloud_agent = get_cloud_agent(provider); + // Orca cloud has no telemetry; the only cloud agent that tracks events is BBL. + this->enable_track = enable; + const auto cloud_agent = get_cloud_agent(BBL_CLOUD_PROVIDER); if (cloud_agent) return cloud_agent->track_enable(enable); - return -1; + return 0; } -int NetworkAgent::track_remove_files(const std::string& provider) +int NetworkAgent::track_remove_files() { - const auto cloud_agent = get_cloud_agent(provider); + const auto cloud_agent = get_cloud_agent(BBL_CLOUD_PROVIDER); if (cloud_agent) return cloud_agent->track_remove_files(); - return -1; + return 0; } int NetworkAgent::track_event(std::string evt_key, std::string content, const std::string& provider) diff --git a/src/slic3r/Utils/NetworkAgent.hpp b/src/slic3r/Utils/NetworkAgent.hpp index e069066b58..49a2e9f5d6 100644 --- a/src/slic3r/Utils/NetworkAgent.hpp +++ b/src/slic3r/Utils/NetworkAgent.hpp @@ -118,8 +118,9 @@ public: int get_model_mall_detail_url(std::string* url, std::string id, const std::string& provider = ORCA_CLOUD_PROVIDER); int get_my_profile(std::string token, unsigned int* http_code, std::string* http_body, const std::string& provider = ORCA_CLOUD_PROVIDER); int get_my_token(std::string ticket, unsigned int* http_code, std::string* http_body, const std::string& provider = ORCA_CLOUD_PROVIDER); - int track_enable(bool enable, const std::string& provider = ORCA_CLOUD_PROVIDER); - int track_remove_files(const std::string& provider = ORCA_CLOUD_PROVIDER); + // Orca: telemetry only exists on the BBL cloud agent (Orca cloud has no track events). + int track_enable(bool enable); + int track_remove_files(); int track_event(std::string evt_key, std::string content, const std::string& provider = ORCA_CLOUD_PROVIDER); int track_header(std::string header, const std::string& provider = ORCA_CLOUD_PROVIDER); int track_update_property(std::string name, std::string value, std::string type = "string", const std::string& provider = ORCA_CLOUD_PROVIDER);