@@ -81,6 +81,22 @@ void ProgramOptions::addNetwork(std::uint16_t port)
8181 m_desc.add (opts);
8282}
8383
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+
84100void ProgramOptions::addPublish ()
85101{
86102 po::options_description opts (" Publish Options" );
@@ -143,10 +159,70 @@ bool ProgramOptions::verbose() const
143159
144160ProgramOptions::ConnectionType ProgramOptions::connectionType () const
145161{
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+
147168 return ConnectionType_Tcp;
148169}
149170
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+
150226std::string ProgramOptions::clientId () const
151227{
152228 return m_vm[" client-id" ].as <std::string>();
@@ -257,16 +333,6 @@ ProgramOptions::StringsList ProgramOptions::willUserProps() const
257333 return stringListOpts (" will-user-prop" );
258334}
259335
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-
270336std::string ProgramOptions::pubTopic () const
271337{
272338 return m_vm[" pub-topic" ].as <std::string>();
0 commit comments