2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#ifndef NET_CONFIG_CONFIGTLSSERVER_H
43#define NET_CONFIG_CONFIGTLSSERVER_H
45#include "net/config/ConfigTls.h"
47namespace net::config {
51#ifndef DOXYGEN_SHOULD_SKIP_THIS
63namespace net::config {
80 addSniCerts(
const std::map<std::string, std::map<std::string, std::variant<std::string,
bool, ssl_option_t>>>& sniCerts);
82 const std::map<std::string, std::variant<std::string,
bool, ssl_option_t>>& sniCert);
83 const std::map<std::string, std::map<std::string, std::variant<std::string,
bool, ssl_option_t>>>&
getSniCerts();
86 std::map<std::string, std::map<std::string, std::variant<std::string,
bool, ssl_option_t>>>
defaultSniCerts;
87 std::map<std::string, std::map<std::string, std::variant<std::string,
bool, ssl_option_t>>>
configuredSniCerts;
#define APPLICATION(req, res)
Config & getConfig() const
static constexpr int DISABLED
static constexpr int ERROR
static constexpr int FATAL
static int clientHelloCallback(SSL *ssl, int *al, void *arg)
SocketAcceptor(const std::shared_ptr< core::socket::stream::SocketContextFactory > &socketContextFactory, const std::function< void(SocketConnection *)> &onConnect, const std::function< void(SocketConnection *)> &onConnected, const std::function< void(SocketConnection *)> &onDisconnect, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus, const std::shared_ptr< Config > &config)
SocketAcceptor(const SocketAcceptor &socketAcceptor)
void useNextSocketAddress() override
void send(const std::string &chunk)
Response & status(int status)
WebAppT(const std::string &name)
static void init(int argc, char *argv[])
static int start(const utils::Timeval &timeOut={LONG_MAX, 0})
friend class BasicAuthentication & BasicAuthentication(const std::string &userName, const std::string &password, const std::string &realm)
BasicAuthentication(const std::string &userName, const std::string &password, const std::string &realm)
static class BasicAuthentication & instance(const std::string &userName, const std::string &password, const std::string &realm)
VHost(const std::string &host)
static class VHost & instance(const std::string &host)
const std::string & getInstanceName() const
std::map< std::string, std::map< std::string, std::variant< std::string, bool, ssl_option_t > > > configuredSniCerts
ConfigTlsServer & addSniCerts(const std::map< std::string, std::map< std::string, std::variant< std::string, bool, ssl_option_t > > > &sniCerts)
ConfigTlsServer(ConfigInstance *instance)
ConfigTlsServer & setForceSni(bool forceSni=true)
std::map< std::string, std::map< std::string, std::variant< std::string, bool, ssl_option_t > > > defaultSniCerts
CLI::Option * sniCertsOpt
CLI::Option * forceSniOpt
ConfigTlsServer & addSniCert(const std::string &domain, const std::map< std::string, std::variant< std::string, bool, ssl_option_t > > &sniCert)
const std::map< std::string, std::map< std::string, std::variant< std::string, bool, ssl_option_t > > > & getSniCerts()
ConfigSocketServer(const std::string &name)
std::list< SSL_CTX * > sniCtxs
SSL_CTX * getSniCtx(const std::string &serverNameIndication)
std::map< std::string, SSL_CTX * > sniCtxMap
static int clientHelloCallback(SSL *ssl, int *al, void *arg)
~ConfigSocketServer() override
SocketAddress(uint16_t port)
SocketAddress & setHost(const std::string &ipOrHostname)
SocketAddress & setPort(uint16_t port)
void init(const Hints &hints={.aiFlags=0,.aiSockType=0,.aiProtocol=0})
std::string getCanonName() const
SocketAddress(const std::string &ipOrHostname)
std::string getHost() const
std::string toString(bool expanded=true) const override
std::shared_ptr< SocketAddrInfo > socketAddrInfo
SocketAddress(const std::string &ipOrHostname, uint16_t port)
SocketAddress(const SockAddr &sockAddr, SockLen sockAddrLen, bool numeric=true)
ConfigAddressReverse(net::config::ConfigInstance *instance, const std::string &addressOptionName, const std::string &addressOptionDescription)
CLI::Option * numericReverseOpt
ConfigAddressReverse & setNumericReverse(bool numeric=true)
SocketAddress getSocketAddress(const SocketAddress::SockAddr &sockAddr, SocketAddress::SockLen sockAddrLen)
bool getNumericReverse() const
ConfigAddress & setIpv4Mapped(bool ipv4Mapped=true)
ConfigAddress & setNumericReverse(bool numeric=true)
bool getIpv4Mapped() const
ConfigAddress & setAiFlags(int aiFlags)
CLI::Option * numericReverseOpt
ConfigAddress & setPortRequired(bool required=true)
SocketAddress getSocketAddress(const SocketAddress::SockAddr &sockAddr, SocketAddress::SockLen sockAddrLen)
ConfigAddress(net::config::ConfigInstance *instance, const std::string &addressOptionName, const std::string &addressOptionDescription)
ConfigAddress & setNumeric(bool numeric=true)
ConfigAddress & setPort(uint16_t port)
ConfigAddress & setSocketAddress(const SocketAddress &socketAddress)
int getAiProtocol() const
SocketAddress * init() final
ConfigAddress & setHost(const std::string &ipOrHostname)
ConfigAddress & setAiSockType(int aiSocktype)
ConfigAddress & setHostRequired(bool required=true)
bool getNumericReverse() const
std::string getHost() const
ConfigAddress & setAiProtocol(int aiProtocol)
CLI::Option * ipv4MappedOpt
int getAiSockType() const
PhysicalSocket(int type, int protocol)
PhysicalSocket(PhysicalSocket &&) noexcept=default
~PhysicalSocket() override
PhysicalSocketServer(PhysicalSocketServer &&) noexcept=default
~PhysicalSocketServer() override
PhysicalSocket(PhysicalSocket &&) noexcept=default
~PhysicalSocket() override
void listen(const std::string &ipOrHostname, uint16_t port, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
void listen(uint16_t port, int backlog, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
void listen(uint16_t port, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
void listen(const std::string &ipOrHostname, uint16_t port, int backlog, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
~ConfigSocketServer() override
bool getReuseAddress() const
bool getDisableNagleAlgorithm() const
CLI::Option * reuseAddressOpt
CLI::Option * disableNagleAlgorithmOpt
CLI::Option * iPv6OnlyOpt
ConfigSocketServer & setDisableNagleAlgorithm(bool disableNagleAlgorithm=true)
ConfigSocketServer & setIPv6Only(bool iPv6Only=true)
ConfigSocketServer(net::config::ConfigInstance *instance)
bool getReusePort() const
CLI::Option * reusePortOpt
ConfigSocketServer & setReusePort(bool reusePort=true)
ConfigSocketServer & setReuseAddress(bool reuseAddress=true)
ConfigSocketServer(const std::string &name)
~ConfigSocketServer() override
ConfigSocketServer(const std::string &name)
~ConfigSocketServer() override
int main(int argc, char *argv[])
Router getRouter(const std::string &webRoot)