@@ -81,6 +81,22 @@ void ProgramOptions::addNetwork(std::uint16_t port)
81
81
m_desc.add (opts);
82
82
}
83
83
84
+ void ProgramOptions::addTls ()
85
+ {
86
+ #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
87
+ po::options_description opts (" TLS Options" );
88
+ opts.add_options ()
89
+ (" tls" , " Enable TLS encryption" )
90
+ (" tls-ca" , po::value<std::string>()->default_value (std::string ()), " Path to the CA certificate(s) file (PEM)" )
91
+ (" tls-key" , po::value<std::string>()->default_value (std::string ()), " Path to the private key file (PEM)" )
92
+ (" tls-key-pass" , po::value<std::string>()->default_value (std::string ()), " Private key password" )
93
+ (" tls-cert" , po::value<std::string>()->default_value (std::string ()), " Path to the certificate file (PEM)" )
94
+ ;
95
+
96
+ m_desc.add (opts);
97
+ #endif
98
+ }
99
+
84
100
void ProgramOptions::addPublish ()
85
101
{
86
102
po::options_description opts (" Publish Options" );
@@ -143,10 +159,70 @@ bool ProgramOptions::verbose() const
143
159
144
160
ProgramOptions::ConnectionType ProgramOptions::connectionType () const
145
161
{
146
- // Hardcoded for now
162
+ #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
163
+ if (isTls ()) {
164
+ return ConnectionType_Tls;
165
+ }
166
+ #endif // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
167
+
147
168
return ConnectionType_Tcp;
148
169
}
149
170
171
+ std::string ProgramOptions::networkAddress () const
172
+ {
173
+ return m_vm[" broker" ].as <std::string>();
174
+ }
175
+
176
+ std::uint16_t ProgramOptions::networkPort () const
177
+ {
178
+ return m_vm[" port" ].as <std::uint16_t >();
179
+ }
180
+
181
+ bool ProgramOptions::isTls () const
182
+ {
183
+ #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
184
+ return m_vm.count (" tls" ) > 0U ;
185
+ #else
186
+ return false ;
187
+ #endif // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
188
+ }
189
+
190
+ std::string ProgramOptions::tlsCa () const
191
+ {
192
+ #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
193
+ return m_vm[" tls-ca" ].as <std::string>();
194
+ #else // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
195
+ return std::string ();
196
+ #endif // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
197
+ }
198
+
199
+ std::string ProgramOptions::tlsPrivateKey () const
200
+ {
201
+ #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
202
+ return m_vm[" tls-key" ].as <std::string>();
203
+ #else // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
204
+ return std::string ();
205
+ #endif // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
206
+ }
207
+
208
+ std::string ProgramOptions::tlsPrivateKeyPass () const
209
+ {
210
+ #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
211
+ return m_vm[" tls-key-pass" ].as <std::string>();
212
+ #else // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
213
+ return std::string ();
214
+ #endif // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
215
+ }
216
+
217
+ std::string ProgramOptions::tlsCert () const
218
+ {
219
+ #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
220
+ return m_vm[" tls-cert" ].as <std::string>();
221
+ #else // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
222
+ return std::string ();
223
+ #endif // #ifdef CC_MQTT5_CLIENT_APP_HAS_OPENSSL
224
+ }
225
+
150
226
std::string ProgramOptions::clientId () const
151
227
{
152
228
return m_vm[" client-id" ].as <std::string>();
@@ -257,16 +333,6 @@ ProgramOptions::StringsList ProgramOptions::willUserProps() const
257
333
return stringListOpts (" will-user-prop" );
258
334
}
259
335
260
- std::string ProgramOptions::networkAddress () const
261
- {
262
- return m_vm[" broker" ].as <std::string>();
263
- }
264
-
265
- std::uint16_t ProgramOptions::networkPort () const
266
- {
267
- return m_vm[" port" ].as <std::uint16_t >();
268
- }
269
-
270
336
std::string ProgramOptions::pubTopic () const
271
337
{
272
338
return m_vm[" pub-topic" ].as <std::string>();
0 commit comments