|
join 1.0
lightweight network framework library
|
basic DNS resolver over TLS socket (DNS over TLS). More...
#include <resolver.hpp>


Public Types | |
| using | Socket = typename Protocol::Socket |
| using | Endpoint = typename Protocol::Endpoint |
| using | State = typename Socket::State |
Public Types inherited from join::BasicDatagramResolver< Protocol > | |
| using | Socket = typename Protocol::Socket |
| using | Endpoint = typename Protocol::Endpoint |
| using | State = typename Socket::State |
| using | DnsNotify = std::function<void (const DnsPacket&)> |
| notification callback definition. | |
Public Member Functions | |
| BasicTlsResolver (const std::string &server={}, uint16_t port=Protocol::defaultPort, Reactor *reactor=nullptr) | |
| construct the DoT resolver instance. | |
| BasicTlsResolver (const BasicTlsResolver &other)=delete | |
| copy constructor. | |
| BasicTlsResolver & | operator= (const BasicTlsResolver &other)=delete |
| copy assignment operator. | |
| BasicTlsResolver (BasicTlsResolver &&other)=delete | |
| move constructor. | |
| BasicTlsResolver & | operator= (BasicTlsResolver &&other)=delete |
| move assignment operator. | |
| virtual | ~BasicTlsResolver () noexcept=default |
| destroy instance. | |
| virtual int | connect (const Endpoint &endpoint) override |
| make a connection to the given endpoint. | |
| virtual int | connectEncrypted (const Endpoint &endpoint) override |
| make an encrypted connection to the given endpoint. | |
| virtual bool | waitEncrypted (int timeout=0) override |
| wait until TLS handshake is performed or timeout occur (non blocking socket). | |
| virtual bool | waitConnected (int timeout=0) override |
| block until connected. | |
| virtual void | close () noexcept override |
| close the TLS connection and reset framing state. | |
| virtual int | read (char *data, unsigned long maxSize) noexcept override |
| read a framed DoT message (2-byte length prefix). | |
| virtual int | write (const char *data, unsigned long size) noexcept override |
| write a framed DoT message (2-byte length prefix). | |
Public Member Functions inherited from join::BasicDatagramResolver< Protocol > | |
| BasicDatagramResolver (const std::string &server={}, uint16_t port=Protocol::defaultPort, Reactor *reactor=nullptr) | |
| construct the resolver instance. | |
| BasicDatagramResolver (const BasicDatagramResolver &other)=delete | |
| copy constructor. | |
| BasicDatagramResolver & | operator= (const BasicDatagramResolver &other)=delete |
| copy assignment operator. | |
| BasicDatagramResolver (BasicDatagramResolver &&other)=delete | |
| move constructor. | |
| BasicDatagramResolver & | operator= (BasicDatagramResolver &&other)=delete |
| move assignment operator. | |
| virtual | ~BasicDatagramResolver () noexcept=default |
| destroy instance. | |
| virtual int | disconnect () override |
| shutdown the connection. | |
| IpAddressList | resolveAllAddress (const std::string &host, int family, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name and return all IP addresses found. | |
| IpAddressList | resolveAllAddress (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name and return all IP addresses found. | |
| IpAddress | resolveAddress (const std::string &host, int family, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name using address family. | |
| IpAddress | resolveAddress (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name. | |
| AliasList | resolveAllName (const IpAddress &address, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve all host address. | |
| std::string | resolveName (const IpAddress &address, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host address. | |
| ServerList | resolveAllNameServer (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve all host name server. | |
| std::string | resolveNameServer (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name server. | |
| std::string | resolveAuthority (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host start of authority name server. | |
| ExchangerList | resolveAllMailExchanger (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve all host mail exchanger. | |
| std::string | resolveMailExchanger (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host mail exchanger. | |
Static Public Member Functions | |
| static IpAddressList | lookupAllAddress (const std::string &host, int family)=delete |
| resolve host name using system name servers and return all IP addresses found. | |
| static IpAddressList | lookupAllAddress (const std::string &host)=delete |
| resolve host name using system name servers and return all IP addresses found. | |
| static IpAddress | lookupAddress (const std::string &host, int family)=delete |
| resolve host name using system name servers. | |
| static IpAddress | lookupAddress (const std::string &host)=delete |
| resolve host name using system name servers. | |
| static AliasList | lookupAllName (const IpAddress &address)=delete |
| resolve all host address. | |
| static std::string | lookupName (const IpAddress &address)=delete |
| resolve host address. | |
| static ServerList | lookupAllNameServer (const std::string &host)=delete |
| resolve all host name server. | |
| static std::string | lookupNameServer (const std::string &host)=delete |
| resolve host name server. | |
| static std::string | lookupAuthority (const std::string &host)=delete |
| resolve host start of authority name server. | |
| static ExchangerList | lookupAllMailExchanger (const std::string &host)=delete |
| resolve all host mail exchanger. | |
| static std::string | lookupMailExchanger (const std::string &host)=delete |
| resolve host mail exchanger. | |
Static Public Member Functions inherited from join::BasicDatagramResolver< Protocol > | |
| static IpAddressList | lookupAllAddress (const std::string &host, int family) |
| resolve host name using system name servers and return all IP addresses found. | |
| static IpAddressList | lookupAllAddress (const std::string &host) |
| resolve host name using system name servers and return all IP addresses found. | |
| static IpAddress | lookupAddress (const std::string &host, int family) |
| resolve host name using system name servers. | |
| static IpAddress | lookupAddress (const std::string &host) |
| resolve host name using system name servers. | |
| static AliasList | lookupAllName (const IpAddress &address) |
| resolve all host address. | |
| static std::string | lookupName (const IpAddress &address) |
| resolve host address. | |
| static ServerList | lookupAllNameServer (const std::string &host) |
| resolve all host name server. | |
| static std::string | lookupNameServer (const std::string &host) |
| resolve host name server. | |
| static std::string | lookupAuthority (const std::string &host) |
| resolve host start of authority name server. | |
| static ExchangerList | lookupAllMailExchanger (const std::string &host) |
| resolve all host mail exchanger. | |
| static std::string | lookupMailExchanger (const std::string &host) |
| resolve host mail exchanger. | |
| static IpAddressList | nameServers () noexcept |
| get IP address of the currently configured name servers. | |
| static uint16_t | resolveService (const std::string &service) noexcept |
| resolve service name. | |
Additional Inherited Members | |
Public Attributes inherited from join::BasicDatagramResolver< Protocol > | |
| DnsNotify | _onSuccess |
| callback called when a lookup sequence succeed. | |
| DnsNotify | _onFailure |
| callback called when a lookup sequence failed. | |
Protected Member Functions inherited from join::BasicDatagramResolver< Protocol > | |
| bool | needReconnection () noexcept |
| check if client must reconnect. | |
| int | query (DnsPacket &packet, std::chrono::milliseconds timeout) |
| serialize and send a DNS query, waiting for a response. | |
| void | onReceive (int fd) override final |
| method called when data are ready to be read on handle. | |
| void | onClose (int fd) override final |
| method called when handle is closed. | |
| void | notify (const DnsNotify &func, const DnsPacket &packet) const noexcept |
| safe way to notify DNS events. | |
Protected Attributes inherited from join::BasicDatagramResolver< Protocol > | |
| DnsMessage | _message |
| DNS message codec. | |
| std::string | _server |
| remote DNS server. | |
| uint16_t | _port |
| remote DNS server port. | |
| Reactor * | _reactor |
| event loop reactor. | |
| std::unique_ptr< char[]> | _buffer |
| reception buffer. | |
| std::unordered_map< uint16_t, std::unique_ptr< PendingRequest > > | _pending |
| synchronous requests indexed by sequence number. | |
| Mutex | _syncMutex |
| protection mutex. | |
Static Protected Attributes inherited from join::BasicDatagramResolver< Protocol > | |
| static constexpr size_t | _headerSize = 12 |
| DNS message header size. | |
basic DNS resolver over TLS socket (DNS over TLS).
| using join::BasicTlsResolver< Protocol >::Endpoint = typename Protocol::Endpoint |
| using join::BasicTlsResolver< Protocol >::Socket = typename Protocol::Socket |
| using join::BasicTlsResolver< Protocol >::State = typename Socket::State |
|
inlineexplicit |
construct the DoT resolver instance.
| server | remote DNS server address. |
| port | remote DNS server port. |
| reactor | reactor instance. |
|
delete |
copy constructor.
| other | other object to copy. |
|
delete |
move constructor.
| other | other object to move. |
|
virtualdefaultnoexcept |
destroy instance.
|
inlineoverridevirtualnoexcept |
close the TLS connection and reset framing state.
|
inlineoverridevirtual |
make a connection to the given endpoint.
| endpoint | endpoint to connect to. |
Reimplemented from join::BasicDatagramResolver< Protocol >.
|
inlineoverridevirtual |
make an encrypted connection to the given endpoint.
| endpoint | endpoint to connect to. |
|
staticdelete |
resolve host name using system name servers.
| host | host name to resolve. |
|
staticdelete |
resolve host name using system name servers.
| host | host name to resolve. |
| family | address family. |
|
staticdelete |
resolve host name using system name servers and return all IP addresses found.
| host | host name to resolve. |
|
staticdelete |
resolve host name using system name servers and return all IP addresses found.
| host | host name to resolve. |
| family | address family. |
|
staticdelete |
resolve all host mail exchanger.
| host | host name to resolve. |
|
staticdelete |
resolve all host address.
| address | host address to resolve. |
|
staticdelete |
resolve all host name server.
| host | host name to resolve. |
|
staticdelete |
resolve host start of authority name server.
| host | host name to resolve. |
|
staticdelete |
resolve host mail exchanger.
| host | host name to resolve. |
|
staticdelete |
resolve host address.
| address | host address to resolve. |
|
staticdelete |
resolve host name server.
| host | host name to resolve. |
|
delete |
move assignment operator.
| other | other object to move. |
|
delete |
copy assignment operator.
| other | other object to copy. |
|
inlineoverridevirtualnoexcept |
read a framed DoT message (2-byte length prefix).
| data | destination buffer. |
| maxSize | maximum number of bytes to read. |
|
inlineoverridevirtual |
block until connected.
| timeout | timeout in milliseconds. |
|
inlineoverridevirtual |
wait until TLS handshake is performed or timeout occur (non blocking socket).
| timeout | timeout in milliseconds (0: infinite). return true on success, false otherwise. |
|
inlineoverridevirtualnoexcept |
write a framed DoT message (2-byte length prefix).
| data | source buffer. |
| size | number of bytes to write. |