SNode.C
Loading...
Searching...
No Matches
ConfigTls.hpp
Go to the documentation of this file.
1/*
2 * SNode.C - A Slim Toolkit for Network Communication
3 * Copyright (C) Volker Christian <me@vchrist.at>
4 * 2020, 2021, 2022, 2023, 2024, 2025, 2026
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published
8 * by the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20/*
21 * MIT License
22 *
23 * Permission is hereby granted, free of charge, to any person obtaining a copy
24 * of this software and associated documentation files (the "Software"), to deal
25 * in the Software without restriction, including without limitation the rights
26 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
27 * copies of the Software, and to permit persons to whom the Software is
28 * furnished to do so, subject to the following conditions:
29 *
30 * The above copyright notice and this permission notice shall be included in
31 * all copies or substantial portions of the Software.
32 *
33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
39 * THE SOFTWARE.
40 */
41
42#include "net/config/ConfigSection.hpp"
43#include "net/config/ConfigTls.h"
44
45#ifndef DOXYGEN_SHOULD_SKIP_THIS
46
47#endif /* DOXYGEN_SHOULD_SKIP_THIS */
48
49namespace net::config {
50
51 template <typename ConcretConfigTls>
52 ConfigTls::ConfigTls(ConfigInstance* instance, ConcretConfigTls section)
53 : ConfigSection(instance, section) {
55 "--cert",
56 "Certificate chain file",
57 "filename",
58 CLI::ExistingFile.description("PEM-FILE"));
59
61 "--cert-key",
62 "Certificate key file",
63 "filename",
64 CLI::ExistingFile.description("PEM-FILE"));
65
67 "--cert-key-password",
68 "Password for the certificate key file",
69 "password",
70 CLI::TypeValidator<std::string>());
71
73 "--ca-cert",
74 "CA-certificate file",
75 "filename",
76 CLI::ExistingFile.description("PEM-FILE"));
77
79 "--ca-cert-dir",
80 "CA-certificate directory",
81 "directory",
82 CLI::ExistingDirectory.description("PEM-CONTAINER-DIR"));
83
85 "--ca-cert-use-default-dir{true}",
86 "Use default CA-certificate directory",
87 "bool",
88 "false",
89 CLI::IsMember({"true", "false"}));
90
92 "--ca-cert-accept-unknown{true}",
93 "Accept unknown certificates (unsecure)",
94 "bool",
95 "false",
96 CLI::IsMember({"true", "false"}));
97
99 "--cipher-list",
100 "Cipher list (OpenSSL syntax)",
101 "cipher_list",
102 CLI::TypeValidator<std::string>("CIPHER"));
103
105 "--ssl-options",
106 "OR combined SSL/TLS options (OpenSSL values)",
107 "options",
108 0,
109 CLI::TypeValidator<ssl_option_t>());
110
112 "--init-timeout",
113 "SSL/TLS initialization timeout in seconds",
114 "timeout",
116 CLI::PositiveNumber);
117
119 "--shutdown-timeout",
120 "SSL/TLS shutdown timeout in seconds",
121 "timeout",
123 CLI::PositiveNumber);
124 }
125
126} // namespace net::config
ConfigTlsClient & setSni(const std::string &sni)
ConfigTlsClient(ConfigInstance *instance)
CLI::Option * caCertUseDefaultDirOpt
Definition ConfigTls.h:116
CLI::Option * certOpt
Definition ConfigTls.h:111
static float tlsInitTimeout
Definition ConfigTls.h:124
CLI::Option * shutdownTimeoutOpt
Definition ConfigTls.h:121
CLI::Option * caCertDirOpt
Definition ConfigTls.h:115
CLI::Option * caCertAcceptUnknownOpt
Definition ConfigTls.h:117
CLI::Option * caCertOpt
Definition ConfigTls.h:114
CLI::Option * certKeyOpt
Definition ConfigTls.h:112
static float tlsShutdownTimeout
Definition ConfigTls.h:125
CLI::Option * initTimeoutOpt
Definition ConfigTls.h:120
CLI::Option * sslOptionsOpt
Definition ConfigTls.h:119
CLI::Option * certKeyPasswordOpt
Definition ConfigTls.h:113
ConfigTls(ConfigInstance *instance, ConcretConfigTls section)
Definition ConfigTls.hpp:52
CLI::Option * cipherListOpt
Definition ConfigTls.h:118
CLI::Option * addFlag(const std::string &name, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &validator) const
Definition SubCommand.h:328
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &validator) const
Definition SubCommand.h:289
CLI::Option * setDefaultValue(CLI::Option *option, const ValueTypeT &value, bool clear=true) const
Definition SubCommand.h:337
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const