diff --git a/src/NetworkClient.h b/src/NetworkClient.h new file mode 100644 index 0000000..4198dd3 --- /dev/null +++ b/src/NetworkClient.h @@ -0,0 +1,34 @@ +#pragma once + +#include +#include + +class NetworkClient : public Client { + class Impl; + std::unique_ptr _impl; + + public: + NetworkClient(); + NetworkClient(WiFiClient wifi_client); + virtual ~NetworkClient(); + + int connect(IPAddress ip, uint16_t port) final; + int connect(const char * host, uint16_t port) final; + int connect(const char * host, uint16_t port, int32_t timeout); + size_t write(uint8_t) final; + size_t write(const uint8_t * buf, size_t size) final; + size_t write(const char * str); + int available() final; + int read() final; + int read(uint8_t * buf, size_t size) final; + int peek() final; + void flush() final; + void stop() final; + uint8_t connected() final; + operator bool() final; + + void setCACert(const char * rootCA); + void setCACertBundle(const uint8_t * bundle); + void setInsecure(); + bool verify(const char * fingerprint, const char * domain_name); +}; diff --git a/src/WebSockets.h b/src/WebSockets.h index c918c9f..cfecef2 100644 --- a/src/WebSockets.h +++ b/src/WebSockets.h @@ -135,6 +135,7 @@ #define NETWORK_UNOWIFIR4 (7) #define NETWORK_WIFI_NINA (8) #define NETWORK_SAMD_SEED (9) +#define NETWORK_CUSTOM (10) // max size of the WS Message Header #define WEBSOCKETS_MAX_HEADER_SIZE (14) @@ -286,6 +287,14 @@ #define WEBSOCKETS_NETWORK_CLASS WiFiClient #define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer +#elif(WEBSOCKETS_NETWORK_TYPE == NETWORK_CUSTOM) +#include +#include + +#define SSL_AXTLS +#define WEBSOCKETS_NETWORK_CLASS NetworkClient +#define WEBSOCKETS_NETWORK_SSL_CLASS NetworkClient +#define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer #else #error "no network type selected!" #endif