Clean up the MQTT connection authentication configuration.

This commit is contained in:
Jonathan Naylor
2025-03-03 15:02:47 +00:00
parent dcee575722
commit f9a5a169cb
6 changed files with 29 additions and 30 deletions

View File

@@ -123,8 +123,8 @@ m_mqttPort(1883),
m_mqttKeepalive(60U), m_mqttKeepalive(60U),
m_mqttName("mmdvm"), m_mqttName("mmdvm"),
m_mqttAuthEnabled(false), m_mqttAuthEnabled(false),
m_mqttUser("mqttuser"), m_mqttUsername(),
m_mqttPass("mqttpass"), m_mqttPassword(),
m_cwIdEnabled(false), m_cwIdEnabled(false),
m_cwIdTime(10U), m_cwIdTime(10U),
m_cwIdCallsign(), m_cwIdCallsign(),
@@ -612,13 +612,12 @@ bool CConf::read()
m_mqttKeepalive = (unsigned int)::atoi(value); m_mqttKeepalive = (unsigned int)::atoi(value);
else if (::strcmp(key, "Name") == 0) else if (::strcmp(key, "Name") == 0)
m_mqttName = value; m_mqttName = value;
else if (::strcmp(key, "Auth") == 0) else if (::strcmp(key, "Auth") == 0)
m_mqttAuthEnabled = ::atoi(value) == 1; m_mqttAuthEnabled = ::atoi(value) == 1;
else if (::strcmp(key, "User") == 0) else if (::strcmp(key, "Username") == 0)
m_mqttUser = value; m_mqttUsername = value;
else if (::strcmp(key, "Pass") == 0) else if (::strcmp(key, "Password") == 0)
m_mqttPass = value; m_mqttPassword = value;
} else if (section == SECTION_CWID) { } else if (section == SECTION_CWID) {
if (::strcmp(key, "Enable") == 0) if (::strcmp(key, "Enable") == 0)
m_cwIdEnabled = ::atoi(value) == 1; m_cwIdEnabled = ::atoi(value) == 1;
@@ -1337,14 +1336,14 @@ bool CConf::getMQTTAuthEnabled() const
return m_mqttAuthEnabled; return m_mqttAuthEnabled;
} }
std::string CConf::getMQTTUser() const std::string CConf::getMQTTUsername() const
{ {
return m_mqttUser; return m_mqttUsername;
} }
std::string CConf::getMQTTPass() const std::string CConf::getMQTTPassword() const
{ {
return m_mqttPass; return m_mqttPassword;
} }
bool CConf::getCWIdEnabled() const bool CConf::getCWIdEnabled() const

8
Conf.h
View File

@@ -58,8 +58,8 @@ public:
unsigned int getMQTTKeepalive() const; unsigned int getMQTTKeepalive() const;
std::string getMQTTName() const; std::string getMQTTName() const;
bool getMQTTAuthEnabled() const; bool getMQTTAuthEnabled() const;
std::string getMQTTUser() const; std::string getMQTTUsername() const;
std::string getMQTTPass() const; std::string getMQTTPassword() const;
// The CW ID section // The CW ID section
bool getCWIdEnabled() const; bool getCWIdEnabled() const;
@@ -412,8 +412,8 @@ private:
unsigned int m_mqttKeepalive; unsigned int m_mqttKeepalive;
std::string m_mqttName; std::string m_mqttName;
bool m_mqttAuthEnabled; bool m_mqttAuthEnabled;
std::string m_mqttUser; std::string m_mqttUsername;
std::string m_mqttPass; std::string m_mqttPassword;
bool m_cwIdEnabled; bool m_cwIdEnabled;
unsigned int m_cwIdTime; unsigned int m_cwIdTime;

View File

@@ -29,8 +29,8 @@ DisplayLevel=1
Host=127.0.0.1 Host=127.0.0.1
Port=1883 Port=1883
Auth=0 Auth=0
User=mmdvm Username=mmdvm
Pass=mmdvm Password=mmdvm
Keepalive=60 Keepalive=60
Name=mmdvm Name=mmdvm

View File

@@ -368,7 +368,7 @@ int CMMDVMHost::run()
subscriptions.push_back(std::make_pair("ax25-in", CMMDVMHost::onAX25)); subscriptions.push_back(std::make_pair("ax25-in", CMMDVMHost::onAX25));
#endif #endif
m_mqtt = new CMQTTConnection(m_conf.getMQTTHost(), m_conf.getMQTTPort(), m_conf.getMQTTName(), m_conf.getMQTTAuthEnabled(), m_conf.getMQTTUser(), m_conf.getMQTTPass(), subscriptions, m_conf.getMQTTKeepalive()); m_mqtt = new CMQTTConnection(m_conf.getMQTTHost(), m_conf.getMQTTPort(), m_conf.getMQTTName(), m_conf.getMQTTAuthEnabled(), m_conf.getMQTTUsername(), m_conf.getMQTTPassword(), subscriptions, m_conf.getMQTTKeepalive());
ret = m_mqtt->open(); ret = m_mqtt->open();
if (!ret) { if (!ret) {
::fprintf(stderr, "MMDVMHost: unable to start the MQTT Publisher\n"); ::fprintf(stderr, "MMDVMHost: unable to start the MQTT Publisher\n");

View File

@@ -23,13 +23,13 @@
#include <cstring> #include <cstring>
CMQTTConnection::CMQTTConnection(const std::string& host, unsigned short port, const std::string& name, const bool authEnabled, const std::string& user, const std::string& pass, const std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>>& subs, unsigned int keepalive, MQTT_QOS qos) : CMQTTConnection::CMQTTConnection(const std::string& host, unsigned short port, const std::string& name, const bool authEnabled, const std::string& username, const std::string& password, const std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>>& subs, unsigned int keepalive, MQTT_QOS qos) :
m_host(host), m_host(host),
m_port(port), m_port(port),
m_name(name), m_name(name),
m_authEnabled(authEnabled), m_authEnabled(authEnabled),
m_user(user), m_username(username),
m_pass(pass), m_password(password),
m_subs(subs), m_subs(subs),
m_keepalive(keepalive), m_keepalive(keepalive),
m_qos(qos), m_qos(qos),
@@ -52,14 +52,14 @@ CMQTTConnection::~CMQTTConnection()
bool CMQTTConnection::open() bool CMQTTConnection::open()
{ {
m_mosq = ::mosquitto_new(m_name.c_str(), true, this); m_mosq = ::mosquitto_new(m_name.c_str(), true, this);
if (m_mosq == NULL){ if (m_mosq == NULL) {
::fprintf(stderr, "MQTT Error newing: Out of memory.\n"); ::fprintf(stderr, "MQTT Error newing: Out of memory.\n");
return false; return false;
} }
if (m_authEnabled) { if (m_authEnabled)
::mosquitto_username_pw_set(m_mosq, m_user.c_str(), m_pass.c_str()); ::mosquitto_username_pw_set(m_mosq, m_username.c_str(), m_password.c_str());
}
::mosquitto_connect_callback_set(m_mosq, onConnect); ::mosquitto_connect_callback_set(m_mosq, onConnect);
::mosquitto_subscribe_callback_set(m_mosq, onSubscribe); ::mosquitto_subscribe_callback_set(m_mosq, onSubscribe);
::mosquitto_message_callback_set(m_mosq, onMessage); ::mosquitto_message_callback_set(m_mosq, onMessage);

View File

@@ -32,7 +32,7 @@ enum MQTT_QOS {
class CMQTTConnection { class CMQTTConnection {
public: public:
CMQTTConnection(const std::string& host, unsigned short port, const std::string& name, const bool authEnabled, const std::string& user, const std::string& pass, const std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>>& subs, unsigned int keepalive, MQTT_QOS qos = MQTT_QOS_EXACTLY_ONCE); CMQTTConnection(const std::string& host, unsigned short port, const std::string& name, const bool authEnabled, const std::string& username, const std::string& password, const std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>>& subs, unsigned int keepalive, MQTT_QOS qos = MQTT_QOS_EXACTLY_ONCE);
~CMQTTConnection(); ~CMQTTConnection();
bool open(); bool open();
@@ -48,8 +48,8 @@ private:
unsigned short m_port; unsigned short m_port;
std::string m_name; std::string m_name;
bool m_authEnabled; bool m_authEnabled;
std::string m_user; std::string m_username;
std::string m_pass; std::string m_password;
std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>> m_subs; std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>> m_subs;
unsigned int m_keepalive; unsigned int m_keepalive;
MQTT_QOS m_qos; MQTT_QOS m_qos;