NeoMutt  2025-12-11-58-g09398d
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
config.c
Go to the documentation of this file.
1
24
30
31#include "config.h"
32#include <stdbool.h>
33#include <stddef.h>
34#include "config/lib.h"
35
39static struct ConfigDef ConnVars[] = {
40 // clang-format off
41 { "account_command", DT_STRING|D_STRING_COMMAND, 0, 0, NULL,
42 "Shell command to retrieve account credentials"
43 },
44 { "preconnect", DT_STRING, 0, 0, NULL,
45 "(socket) External command to run prior to opening a socket"
46 },
47 { "socket_timeout", DT_NUMBER, 30, 0, NULL,
48 "Timeout for socket connect/read/write operations (-1 to wait indefinitely)"
49 },
50 { "tunnel", DT_STRING|D_STRING_COMMAND, 0, 0, NULL,
51 "Shell command to establish a tunnel"
52 },
53 { "tunnel_is_secure", DT_BOOL, true, 0, NULL,
54 "Assume a tunneled connection is secure"
55 },
56
57 { "connect_timeout", DT_SYNONYM, IP "socket_timeout", IP "2023-02-15" },
58 { NULL },
59 // clang-format on
60};
61
62#if defined(USE_SSL)
66static struct ConfigDef ConnVarsSsl[] = {
67 // clang-format off
68 { "certificate_file", DT_PATH|D_PATH_FILE, IP "~/.mutt_certificates", 0, NULL,
69 "File containing trusted certificates"
70 },
71 { "ssl_ciphers", DT_STRING, 0, 0, NULL,
72 "Ciphers to use when using SSL"
73 },
74 { "ssl_client_cert", DT_PATH|D_PATH_FILE, 0, 0, NULL,
75 "File containing client certificates"
76 },
77 { "ssl_force_tls", DT_BOOL, true, 0, NULL,
78 "(ssl) Require TLS encryption for all connections"
79 },
80 { "ssl_starttls", DT_QUAD, MUTT_YES, 0, NULL,
81 "(ssl) Use STARTTLS on servers advertising the capability"
82 },
83 { "ssl_use_tlsv1_2", DT_BOOL, true, 0, NULL,
84 "(ssl) Use TLSv1.2 for authentication"
85 },
86 { "ssl_use_tlsv1_3", DT_BOOL, true, 0, NULL,
87 "(ssl) Use TLSv1.3 for authentication"
88 },
89 { "ssl_verify_dates", DT_BOOL, true, 0, NULL,
90 "(ssl) Verify the dates on the server certificate"
91 },
92 { "ssl_verify_host", DT_BOOL, true, 0, NULL,
93 "(ssl) Verify the server's hostname against the certificate"
94 },
95
96 { "ssl_use_sslv3", D_INTERNAL_DEPRECATED|DT_BOOL, 0, IP "2025-12-07" },
97 { "ssl_use_tlsv1", D_INTERNAL_DEPRECATED|DT_BOOL, 0, IP "2025-12-07" },
98 { "ssl_use_tlsv1_1", D_INTERNAL_DEPRECATED|DT_BOOL, 0, IP "2025-12-07" },
99 { NULL },
100 // clang-format on
101};
102#endif
103
104#if defined(USE_SSL_GNUTLS)
108static struct ConfigDef ConnVarsGnutls[] = {
109 // clang-format off
110 { "ssl_ca_certificates_file", DT_PATH|D_PATH_FILE, 0, 0, NULL,
111 "File containing trusted CA certificates"
112 },
113 { "ssl_min_dh_prime_bits", DT_NUMBER|D_INTEGER_NOT_NEGATIVE, 0, 0, NULL,
114 "Minimum keysize for Diffie-Hellman key exchange"
115 },
116 { NULL },
117 // clang-format on
118};
119#endif
120
121#if defined(USE_SSL_OPENSSL)
125static struct ConfigDef ConnVarsOpenssl[] = {
126 // clang-format off
127 { "entropy_file", DT_PATH|D_PATH_FILE, 0, 0, NULL,
128 "(ssl) File/device containing random data to initialise SSL"
129 },
130 { "ssl_use_system_certs", DT_BOOL, true, 0, NULL,
131 "(ssl) Use CA certificates in the system-wide store"
132 },
133 { "ssl_usesystemcerts", DT_SYNONYM, IP "ssl_use_system_certs", IP "2021-02-11" },
134
135 { "ssl_use_sslv2", D_INTERNAL_DEPRECATED|DT_BOOL, 0, IP "2025-12-07" },
136 { NULL },
137 // clang-format on
138};
139#endif
140
141#if defined(HAVE_SSL_PARTIAL_CHAIN)
145static struct ConfigDef ConnVarsPartial[] = {
146 // clang-format off
147 { "ssl_verify_partial_chains", DT_BOOL, false, 0, NULL,
148 "(ssl) Allow verification using partial certificate chains"
149 },
150 { NULL },
151 // clang-format on
152};
153#endif
154
155#if defined(HAVE_GETADDRINFO)
159static struct ConfigDef ConnVarsGetaddr[] = {
160 // clang-format off
161 { "use_ipv6", DT_BOOL, true, 0, NULL,
162 "Lookup IPv6 addresses when making connections"
163 },
164 { NULL },
165 // clang-format on
166};
167#endif
168
173{
174 bool rc = cs_register_variables(cs, ConnVars);
175
176#if defined(USE_SSL)
178#endif
179
180#if defined(USE_SSL_GNUTLS)
182#endif
183
184#if defined(USE_SSL_OPENSSL)
186#endif
187
188#if defined(HAVE_SSL_PARTIAL_CHAIN)
190#endif
191
192#if defined(HAVE_GETADDRINFO)
194#endif
195
196 return rc;
197}
Convenience wrapper for the config headers.
bool cs_register_variables(const struct ConfigSet *cs, struct ConfigDef vars[])
Register a set of config items.
Definition set.c:289
#define IP
Definition set.h:52
static struct ConfigDef ConnVarsSsl[]
General SSL Config definitions for the conn library.
Definition config.c:66
static struct ConfigDef ConnVars[]
Config definitions for the connection library.
Definition config.c:39
static struct ConfigDef ConnVarsOpenssl[]
OpenSSL Config definitions for the connection library.
Definition config.c:125
static struct ConfigDef ConnVarsPartial[]
SSL partial chains Config definitions for the connection library.
Definition config.c:145
static struct ConfigDef ConnVarsGetaddr[]
GetAddrInfo Config definitions for the connection library.
Definition config.c:159
static struct ConfigDef ConnVarsGnutls[]
GnuTLS Config definitions for the connection library.
Definition config.c:108
bool config_init_conn(struct ConfigSet *cs)
Register conn config variables - Implements module_init_config_t -.
Definition config.c:172
@ MUTT_YES
User answered 'Yes', or assume 'Yes'.
Definition quad.h:39
Container for lots of config items.
Definition set.h:248
#define D_INTERNAL_DEPRECATED
Config item shouldn't be used any more.
Definition types.h:87
#define D_STRING_COMMAND
A command.
Definition types.h:98
#define D_PATH_FILE
Path is a file.
Definition types.h:103
@ DT_NUMBER
a number
Definition types.h:38
@ DT_BOOL
boolean option
Definition types.h:32
@ DT_QUAD
quad-option (no/yes/ask-no/ask-yes)
Definition types.h:40
@ DT_SYNONYM
synonym for another variable
Definition types.h:45
@ DT_STRING
a string
Definition types.h:44
@ DT_PATH
a path to a file/directory
Definition types.h:39
#define D_INTEGER_NOT_NEGATIVE
Negative numbers are not allowed.
Definition types.h:100