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#include "net/config/ConfigTls.h"
44#include "net/config/ConfigSection.hpp"
46#ifndef DOXYGEN_SHOULD_SKIP_THIS
50namespace net::config {
56 "Certificate chain file",
62 "Certificate key file",
67 "--cert-key-password",
68 "Password for the certificate key file",
71 CLI::TypeValidator<std::string>()
);
75 "CA-certificate file",
81 "CA-certificate directory",
82 "directory:PEM-CONTAINER-DIR",
86 "--ca-cert-use-default-dir{true}",
87 "Use default CA-certificate directory",
90 CLI::IsMember({
"true",
"false"})
);
93 "--ca-cert-accept-unknown{true}",
94 "Accept unknown certificates (unsecure)",
97 CLI::IsMember({
"true",
"false"})
);
101 "Cipher list (OpenSSL syntax)",
104 CLI::TypeValidator<std::string>(
"CIPHER")
);
108 "OR combined SSL/TLS options (OpenSSL values)",
111 CLI::TypeValidator<ssl_option_t>()
);
113 initTimeoutOpt = addOption(
115 "SSL/TLS initialization timeout in seconds",
118 CLI::PositiveNumber);
120 shutdownTimeoutOpt = addOption(
121 "--shutdown-timeout",
122 "SSL/TLS shutdown timeout in seconds",
124 TLS_SHUTDOWN_TIMEOUT,
125 CLI::PositiveNumber);
128 "--no-close-notify-is-eof{true}",
129 "Do not interpret a SSL/TLS close_notify alert as EOF",
132 CLI::IsMember({
"true",
"false"})
);
144 return certOpt->as<std::string>();
149 ->default_val(certKey)
161 ->default_val(certKeyPassword)
173 ->default_val(caCert)
185 ->default_val(caCertDir)
197 ->default_val(set ?
"true" :
"false")
209 ->default_val(set ?
"true" :
"false")
221 ->default_val(cipherList)
233 ->default_val(sslOptions)
245 ->default_val(closeNotifyIsEOF ?
"true" :
"false")
256 ->default_val(newInitTimeout)
268 ->default_val(newShutdownTimeout)
ConfigSection(ConfigInstance *instance, const std::string &name, const std::string &description)
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, ValueTypeT defaultValue)
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &additionalValidator)
CLI::Option * addFlag(const std::string &name, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &additionalValidator)
ConfigTls & setCaCert(const std::string &caCert)
CLI::Option * caCertUseDefaultDirOpt
CLI::Option * shutdownTimeoutOpt
CLI::Option * caCertDirOpt
CLI::Option * caCertAcceptUnknownOpt
utils::Timeval getShutdownTimeout() const
std::string getCaCertDir() const
bool getNoCloseNotifyIsEOF() const
ConfigTls & setCert(const std::string &cert)
ConfigTls & setCaCertUseDefaultDir(bool set=true)
std::string getCaCert() const
ConfigTls & setCertKey(const std::string &certKey)
ConfigTls & setInitTimeout(const utils::Timeval &newInitTimeout)
CLI::Option * initTimeoutOpt
CLI::Option * sslOptionsOpt
std::string getCipherList() const
ssl_option_t getSslOptions() const
CLI::Option * noCloseNotifyIsEOFOpt
bool getCaCertAcceptUnknown() const
bool getCaCertUseDefaultDir() const
ConfigTls & setSslOptions(ssl_option_t sslOptions)
std::string getCertKey() const
ConfigTls & setCaCertAcceptUnknown(bool set=true)
CLI::Option * certKeyPasswordOpt
ConfigTls(ConfigInstance *instance)
ConfigTls & setNoCloseNotifyIsEOF(bool noCloseNotifyIsEOF=true)
ConfigTls & setCipherList(const std::string &cipherList)
ConfigTls & setCaCertDir(const std::string &caCertDir)
std::string getCert() const
CLI::Option * cipherListOpt
std::string getCertKeyPassword() const
ConfigTls & setShutdownTimeout(const utils::Timeval &newShutdownTimeout)
ConfigTls & setCertKeyPassword(const std::string &certKeyPassword)
utils::Timeval getInitTimeout() const