ESPHome  2024.2.1
Public Member Functions | Protected Member Functions | Protected Attributes
esphome::wireguard::Wireguard Class Reference

Main Wireguard component class. More...

#include <wireguard.h>

Inheritance diagram for esphome::wireguard::Wireguard:
esphome::PollingComponent esphome::Component

Public Member Functions

void setup () override
 
void loop () override
 
void update () override
 
void dump_config () override
 
void on_shutdown () override
 
bool can_proceed () override
 
float get_setup_priority () const override
 
void set_address (const std::string &address)
 
void set_netmask (const std::string &netmask)
 
void set_private_key (const std::string &key)
 
void set_peer_endpoint (const std::string &endpoint)
 
void set_peer_public_key (const std::string &key)
 
void set_peer_port (uint16_t port)
 
void set_preshared_key (const std::string &key)
 
void add_allowed_ip (const std::string &ip, const std::string &netmask)
 
void set_keepalive (uint16_t seconds)
 
void set_reboot_timeout (uint32_t seconds)
 
void set_srctime (time::RealTimeClock *srctime)
 
void set_status_sensor (binary_sensor::BinarySensor *sensor)
 
void set_enabled_sensor (binary_sensor::BinarySensor *sensor)
 
void set_handshake_sensor (sensor::Sensor *sensor)
 
void set_address_sensor (text_sensor::TextSensor *sensor)
 
void disable_auto_proceed ()
 Block the setup step until peer is connected. More...
 
void enable ()
 Enable the WireGuard component. More...
 
void disable ()
 Stop any running connection and disable the WireGuard component. More...
 
void publish_enabled_state ()
 Publish the enabled state if the enabled binary sensor is configured. More...
 
bool is_enabled ()
 Return if the WireGuard component is or is not enabled. More...
 
bool is_peer_up () const
 
time_t get_latest_handshake () const
 
- Public Member Functions inherited from esphome::PollingComponent
 PollingComponent ()
 
 PollingComponent (uint32_t update_interval)
 Initialize this polling component with the given update interval in ms. More...
 
virtual void set_update_interval (uint32_t update_interval)
 Manually set the update interval in ms for this polling object. More...
 
void call_setup () override
 
virtual uint32_t get_update_interval () const
 Get the update interval in ms of this sensor. More...
 
void start_poller ()
 
void stop_poller ()
 
- Public Member Functions inherited from esphome::Component
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop(). More...
 
void call ()
 
virtual void on_safe_shutdown ()
 
uint32_t get_component_state () const
 
virtual void mark_failed ()
 Mark this component as failed. More...
 
bool is_failed ()
 
bool is_ready ()
 
bool status_has_warning ()
 
bool status_has_error ()
 
void status_set_warning ()
 
void status_set_error ()
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const std::string &name, uint32_t length=5000)
 
void status_momentary_error (const std::string &name, uint32_t length=5000)
 
bool has_overridden_loop () const
 
void set_component_source (const char *source)
 Set where this component was loaded from for some debug messages. More...
 
const char * get_component_source () const
 Get the integration where this component was declared as a string. More...
 

Protected Member Functions

void start_connection_ ()
 
void stop_connection_ ()
 
- Protected Member Functions inherited from esphome::Component
virtual void call_loop ()
 
virtual void call_dump_config ()
 
void set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name. More...
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const std::string &name)
 Cancel an interval function. More...
 
void set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 Set an retry function with a unique name. More...
 
void set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 
bool cancel_retry (const std::string &name)
 Cancel a retry function. More...
 
void set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name. More...
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const std::string &name)
 Cancel a timeout function. More...
 
void defer (const std::string &name, std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
bool cancel_defer (const std::string &name)
 Cancel a defer callback using the specified name, name must not be empty. More...
 

Protected Attributes

std::string address_
 
std::string netmask_
 
std::string private_key_
 
std::string peer_endpoint_
 
std::string peer_public_key_
 
std::string preshared_key_
 
std::vector< std::tuple< std::string, std::string > > allowed_ips_
 
uint16_t peer_port_
 
uint16_t keepalive_
 
uint32_t reboot_timeout_
 
time::RealTimeClocksrctime_
 
binary_sensor::BinarySensorstatus_sensor_ = nullptr
 
binary_sensor::BinarySensorenabled_sensor_ = nullptr
 
sensor::Sensorhandshake_sensor_ = nullptr
 
text_sensor::TextSensoraddress_sensor_ = nullptr
 
bool proceed_allowed_ = true
 Set to false to block the setup step until peer is connected. More...
 
bool enabled_ = true
 When false the wireguard link will not be established. More...
 
wireguard_config_t wg_config_ = ESP_WIREGUARD_CONFIG_DEFAULT()
 
wireguard_ctx_t wg_ctx_ = ESP_WIREGUARD_CONTEXT_DEFAULT()
 
esp_err_t wg_initialized_ = ESP_FAIL
 
esp_err_t wg_connected_ = ESP_FAIL
 
uint32_t wg_peer_offline_time_ = 0
 The last time the remote peer become offline. More...
 
time_t latest_saved_handshake_ = 0
 The latest saved handshake. More...
 
- Protected Attributes inherited from esphome::PollingComponent
uint32_t update_interval_
 
- Protected Attributes inherited from esphome::Component
uint32_t component_state_ {0x0000}
 State of this component. More...
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 

Detailed Description

Main Wireguard component class.

Definition at line 30 of file wireguard.h.

Member Function Documentation

◆ add_allowed_ip()

void esphome::wireguard::Wireguard::add_allowed_ip ( const std::string &  ip,
const std::string &  netmask 
)

Definition at line 187 of file wireguard.cpp.

◆ can_proceed()

bool esphome::wireguard::Wireguard::can_proceed ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 164 of file wireguard.cpp.

◆ disable()

void esphome::wireguard::Wireguard::disable ( )

Stop any running connection and disable the WireGuard component.

Definition at line 216 of file wireguard.cpp.

◆ disable_auto_proceed()

void esphome::wireguard::Wireguard::disable_auto_proceed ( )

Block the setup step until peer is connected.

Definition at line 208 of file wireguard.cpp.

◆ dump_config()

void esphome::wireguard::Wireguard::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 139 of file wireguard.cpp.

◆ enable()

void esphome::wireguard::Wireguard::enable ( )

Enable the WireGuard component.

Definition at line 210 of file wireguard.cpp.

◆ get_latest_handshake()

time_t esphome::wireguard::Wireguard::get_latest_handshake ( ) const

Definition at line 171 of file wireguard.cpp.

◆ get_setup_priority()

float esphome::wireguard::Wireguard::get_setup_priority ( ) const
inlineoverridevirtual

Reimplemented from esphome::Component.

Definition at line 39 of file wireguard.h.

◆ is_enabled()

bool esphome::wireguard::Wireguard::is_enabled ( )

Return if the WireGuard component is or is not enabled.

Definition at line 231 of file wireguard.cpp.

◆ is_peer_up()

bool esphome::wireguard::Wireguard::is_peer_up ( ) const

Definition at line 166 of file wireguard.cpp.

◆ loop()

void esphome::wireguard::Wireguard::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 72 of file wireguard.cpp.

◆ on_shutdown()

void esphome::wireguard::Wireguard::on_shutdown ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 162 of file wireguard.cpp.

◆ publish_enabled_state()

void esphome::wireguard::Wireguard::publish_enabled_state ( )

Publish the enabled state if the enabled binary sensor is configured.

Definition at line 223 of file wireguard.cpp.

◆ set_address()

void esphome::wireguard::Wireguard::set_address ( const std::string &  address)

Definition at line 179 of file wireguard.cpp.

◆ set_address_sensor()

void esphome::wireguard::Wireguard::set_address_sensor ( text_sensor::TextSensor sensor)

Definition at line 205 of file wireguard.cpp.

◆ set_enabled_sensor()

void esphome::wireguard::Wireguard::set_enabled_sensor ( binary_sensor::BinarySensor sensor)

Definition at line 197 of file wireguard.cpp.

◆ set_handshake_sensor()

void esphome::wireguard::Wireguard::set_handshake_sensor ( sensor::Sensor sensor)

Definition at line 201 of file wireguard.cpp.

◆ set_keepalive()

void esphome::wireguard::Wireguard::set_keepalive ( uint16_t  seconds)

Definition at line 191 of file wireguard.cpp.

◆ set_netmask()

void esphome::wireguard::Wireguard::set_netmask ( const std::string &  netmask)

Definition at line 180 of file wireguard.cpp.

◆ set_peer_endpoint()

void esphome::wireguard::Wireguard::set_peer_endpoint ( const std::string &  endpoint)

Definition at line 182 of file wireguard.cpp.

◆ set_peer_port()

void esphome::wireguard::Wireguard::set_peer_port ( uint16_t  port)

Definition at line 184 of file wireguard.cpp.

◆ set_peer_public_key()

void esphome::wireguard::Wireguard::set_peer_public_key ( const std::string &  key)

Definition at line 183 of file wireguard.cpp.

◆ set_preshared_key()

void esphome::wireguard::Wireguard::set_preshared_key ( const std::string &  key)

Definition at line 185 of file wireguard.cpp.

◆ set_private_key()

void esphome::wireguard::Wireguard::set_private_key ( const std::string &  key)

Definition at line 181 of file wireguard.cpp.

◆ set_reboot_timeout()

void esphome::wireguard::Wireguard::set_reboot_timeout ( uint32_t  seconds)

Definition at line 192 of file wireguard.cpp.

◆ set_srctime()

void esphome::wireguard::Wireguard::set_srctime ( time::RealTimeClock srctime)

Definition at line 193 of file wireguard.cpp.

◆ set_status_sensor()

void esphome::wireguard::Wireguard::set_status_sensor ( binary_sensor::BinarySensor sensor)

Definition at line 196 of file wireguard.cpp.

◆ setup()

void esphome::wireguard::Wireguard::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 37 of file wireguard.cpp.

◆ start_connection_()

void esphome::wireguard::Wireguard::start_connection_ ( )
protected

Definition at line 233 of file wireguard.cpp.

◆ stop_connection_()

void esphome::wireguard::Wireguard::stop_connection_ ( )
protected

Definition at line 295 of file wireguard.cpp.

◆ update()

void esphome::wireguard::Wireguard::update ( )
overridevirtual

Implements esphome::PollingComponent.

Definition at line 83 of file wireguard.cpp.

Field Documentation

◆ address_

std::string esphome::wireguard::Wireguard::address_
protected

Definition at line 87 of file wireguard.h.

◆ address_sensor_

text_sensor::TextSensor* esphome::wireguard::Wireguard::address_sensor_ = nullptr
protected

Definition at line 112 of file wireguard.h.

◆ allowed_ips_

std::vector<std::tuple<std::string, std::string> > esphome::wireguard::Wireguard::allowed_ips_
protected

Definition at line 94 of file wireguard.h.

◆ enabled_

bool esphome::wireguard::Wireguard::enabled_ = true
protected

When false the wireguard link will not be established.

Definition at line 119 of file wireguard.h.

◆ enabled_sensor_

binary_sensor::BinarySensor* esphome::wireguard::Wireguard::enabled_sensor_ = nullptr
protected

Definition at line 104 of file wireguard.h.

◆ handshake_sensor_

sensor::Sensor* esphome::wireguard::Wireguard::handshake_sensor_ = nullptr
protected

Definition at line 108 of file wireguard.h.

◆ keepalive_

uint16_t esphome::wireguard::Wireguard::keepalive_
protected

Definition at line 97 of file wireguard.h.

◆ latest_saved_handshake_

time_t esphome::wireguard::Wireguard::latest_saved_handshake_ = 0
protected

The latest saved handshake.

This is used to save (and log) the latest completed handshake even after a full refresh of the wireguard keys (for example after a stop/start connection cycle).

Definition at line 136 of file wireguard.h.

◆ netmask_

std::string esphome::wireguard::Wireguard::netmask_
protected

Definition at line 88 of file wireguard.h.

◆ peer_endpoint_

std::string esphome::wireguard::Wireguard::peer_endpoint_
protected

Definition at line 90 of file wireguard.h.

◆ peer_port_

uint16_t esphome::wireguard::Wireguard::peer_port_
protected

Definition at line 96 of file wireguard.h.

◆ peer_public_key_

std::string esphome::wireguard::Wireguard::peer_public_key_
protected

Definition at line 91 of file wireguard.h.

◆ preshared_key_

std::string esphome::wireguard::Wireguard::preshared_key_
protected

Definition at line 92 of file wireguard.h.

◆ private_key_

std::string esphome::wireguard::Wireguard::private_key_
protected

Definition at line 89 of file wireguard.h.

◆ proceed_allowed_

bool esphome::wireguard::Wireguard::proceed_allowed_ = true
protected

Set to false to block the setup step until peer is connected.

Definition at line 116 of file wireguard.h.

◆ reboot_timeout_

uint32_t esphome::wireguard::Wireguard::reboot_timeout_
protected

Definition at line 98 of file wireguard.h.

◆ srctime_

time::RealTimeClock* esphome::wireguard::Wireguard::srctime_
protected

Definition at line 100 of file wireguard.h.

◆ status_sensor_

binary_sensor::BinarySensor* esphome::wireguard::Wireguard::status_sensor_ = nullptr
protected

Definition at line 103 of file wireguard.h.

◆ wg_config_

wireguard_config_t esphome::wireguard::Wireguard::wg_config_ = ESP_WIREGUARD_CONFIG_DEFAULT()
protected

Definition at line 121 of file wireguard.h.

◆ wg_connected_

esp_err_t esphome::wireguard::Wireguard::wg_connected_ = ESP_FAIL
protected

Definition at line 125 of file wireguard.h.

◆ wg_ctx_

wireguard_ctx_t esphome::wireguard::Wireguard::wg_ctx_ = ESP_WIREGUARD_CONTEXT_DEFAULT()
protected

Definition at line 122 of file wireguard.h.

◆ wg_initialized_

esp_err_t esphome::wireguard::Wireguard::wg_initialized_ = ESP_FAIL
protected

Definition at line 124 of file wireguard.h.

◆ wg_peer_offline_time_

uint32_t esphome::wireguard::Wireguard::wg_peer_offline_time_ = 0
protected

The last time the remote peer become offline.

Definition at line 128 of file wireguard.h.


The documentation for this class was generated from the following files: