From ae5e588410ad4ffdf61008f43619a9adbdf68510 Mon Sep 17 00:00:00 2001 From: cziter15 Date: Sat, 15 Feb 2025 12:51:13 +0100 Subject: [PATCH] Fix bear ssl fwd def --- src/ksf/comp/ksMqttConnector.cpp | 18 +++++++++--------- src/ksf/comp/ksMqttConnector.h | 6 ++++-- src/ksf/misc/ksCertUtils.h | 15 ++++++++++----- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/ksf/comp/ksMqttConnector.cpp b/src/ksf/comp/ksMqttConnector.cpp index 575f1887..a6408230 100644 --- a/src/ksf/comp/ksMqttConnector.cpp +++ b/src/ksf/comp/ksMqttConnector.cpp @@ -32,6 +32,8 @@ using namespace std::placeholders; namespace ksf::comps { + ksMqttConnector::~ksMqttConnector() = default; + ksMqttConnector::ksMqttConnector(bool sendConnectionStatus, bool usePersistentSession) : reconnectTimer(KSF_MQTT_RECONNECT_DELAY_MS) { @@ -39,8 +41,6 @@ namespace ksf::comps bitflags.usePersistentSession = usePersistentSession; } - ksMqttConnector::~ksMqttConnector() = default; - bool ksMqttConnector::init(ksApplication* app) { ksMqttConfigProvider cfgProvider; @@ -67,10 +67,9 @@ namespace ksf::comps void ksMqttConnector::setupConnection(const std::string broker, const std::string& port, std::string login, std::string password, std::string prefix, const std::string& fingerprint) { - /* Set up secure connection if a fingerprint is provided. */ if (!fingerprint.empty()) { - auto secureClient = std::make_unique(); + auto secureClient{std::make_unique()}; certFingerprint = std::make_unique(); if (certFingerprint->setup(secureClient.get(), fingerprint)) netClientUq = std::move(secureClient); @@ -80,7 +79,7 @@ namespace ksf::comps /* Whoops, it looks like fingerprint validation failed. */ if (!netClientUq) return; - + /* Set socket timeouts. */ netClientUq->setTimeout(KSF_MQTT_TIMEOUT_MS); @@ -92,7 +91,7 @@ namespace ksf::comps ksf::from_chars(port, portNumber); /* Create MQTT client. */ - mqttClientUq = std::make_unique(*netClientUq); + mqttClientUq = std::make_unique(*netClientUq.get()); } void ksMqttConnector::mqttConnectedInternal() @@ -104,8 +103,8 @@ namespace ksf::comps void ksMqttConnector::mqttMessageInternal(const char* topic, const uint8_t* payload, uint32_t length) { - auto handlesDeviceMessage{onDeviceMessage->isBound()}; - auto handlesAnyMessage{onAnyMessage->isBound()}; + bool handlesDeviceMessage{onDeviceMessage->isBound()}; + bool handlesAnyMessage{onAnyMessage->isBound()}; if (!handlesDeviceMessage && !handlesAnyMessage) return; @@ -134,7 +133,8 @@ namespace ksf::comps void ksMqttConnector::subscribe(const std::string& topic, bool skipDevicePrefix, ksMqttConnector::QosLevel qos) { - mqttClientUq->subscribe(skipDevicePrefix ? topic.c_str() : std::string(prefix + topic).c_str(), static_cast(qos)); + uint8_t qosLevel{static_cast(qos)}; + mqttClientUq->subscribe(skipDevicePrefix ? topic.c_str() : std::string(prefix + topic).c_str(), qosLevel); } void ksMqttConnector::unsubscribe(const std::string& topic, bool skipDevicePrefix) diff --git a/src/ksf/comp/ksMqttConnector.h b/src/ksf/comp/ksMqttConnector.h index 4110b8ca..c841641e 100644 --- a/src/ksf/comp/ksMqttConnector.h +++ b/src/ksf/comp/ksMqttConnector.h @@ -20,9 +20,11 @@ #if (defined(ESP32) && ESP_ARDUINO_VERSION_MAJOR >= 3) #define ksMqttConnectorNetClient_t NetworkClient #define ksMqttConnectorNetClientSecure_t NetworkClientSecure -#else +#elif defined (ESP8266) #define ksMqttConnectorNetClient_t WiFiClient - #define ksMqttConnectorNetClientSecure_t WiFiClientSecure + #define ksMqttConnectorNetClientSecure_t BearSSL::WiFiClientSecure +#else + #error Platform not implemented. #endif class PubSubClient; diff --git a/src/ksf/misc/ksCertUtils.h b/src/ksf/misc/ksCertUtils.h index 50412b1d..ffa7cc3c 100644 --- a/src/ksf/misc/ksCertUtils.h +++ b/src/ksf/misc/ksCertUtils.h @@ -12,14 +12,19 @@ #include #include -#if (defined(ESP32) && ESP_ARDUINO_VERSION_MAJOR >= 3) - #define ksCertUtilsNetCLientSecure_t NetworkClientSecure -#else +#if defined(ESP32) #define ksCertUtilsNetCLientSecure_t WiFiClientSecure + class ksCertUtilsNetCLientSecure_t +#elif defined(ESP8266) + namespace BearSSL + { + class WiFiClientSecure; + } + #define ksCertUtilsNetCLientSecure_t BearSSL::WiFiClientSecure +#else + #error Platform not implemented. #endif -class ksCertUtilsNetCLientSecure_t; - namespace ksf::misc { /*!