mirror of
https://github.com/g4klx/DAPNETGateway.git
synced 2026-08-26 12:32:45 -04:00
Add MQTT authentication.
This commit is contained in:
parent
3aee1f0ed8
commit
d1bd0b549a
7 changed files with 48 additions and 10 deletions
24
Conf.cpp
24
Conf.cpp
|
|
@ -51,6 +51,9 @@ m_mqttAddress("127.0.0.1"),
|
|||
m_mqttPort(1883U),
|
||||
m_mqttKeepalive(60U),
|
||||
m_mqttName("dapnet-gateway"),
|
||||
m_mqttAuthEnabled(false),
|
||||
m_mqttUsername(),
|
||||
m_mqttPassword(),
|
||||
m_dapnetAddress(),
|
||||
m_dapnetPort(0U),
|
||||
m_dapnetAuthKey(),
|
||||
|
|
@ -167,6 +170,12 @@ bool CConf::read()
|
|||
m_mqttKeepalive = (unsigned int)::atoi(value);
|
||||
else if (::strcmp(key, "Name") == 0)
|
||||
m_mqttName = value;
|
||||
else if (::strcmp(key, "Auth") == 0)
|
||||
m_mqttAuthEnabled = ::atoi(value) == 1;
|
||||
else if (::strcmp(key, "Username") == 0)
|
||||
m_mqttUsername = value;
|
||||
else if (::strcmp(key, "Password") == 0)
|
||||
m_mqttPassword = value;
|
||||
} else if (section == SECTION::DAPNET) {
|
||||
if (::strcmp(key, "Address") == 0)
|
||||
m_dapnetAddress = value;
|
||||
|
|
@ -267,6 +276,21 @@ std::string CConf::getMQTTName() const
|
|||
return m_mqttName;
|
||||
}
|
||||
|
||||
bool CConf::getMQTTAuthEnabled() const
|
||||
{
|
||||
return m_mqttAuthEnabled;
|
||||
}
|
||||
|
||||
std::string CConf::getMQTTUsername() const
|
||||
{
|
||||
return m_mqttUsername;
|
||||
}
|
||||
|
||||
std::string CConf::getMQTTPassword() const
|
||||
{
|
||||
return m_mqttPassword;
|
||||
}
|
||||
|
||||
std::string CConf::getDAPNETAddress() const
|
||||
{
|
||||
return m_dapnetAddress;
|
||||
|
|
|
|||
8
Conf.h
8
Conf.h
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018,2023 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2018,2023,2025 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -51,6 +51,9 @@ public:
|
|||
unsigned short getMQTTPort() const;
|
||||
unsigned int getMQTTKeepalive() const;
|
||||
std::string getMQTTName() const;
|
||||
bool getMQTTAuthEnabled() const;
|
||||
std::string getMQTTUsername() const;
|
||||
std::string getMQTTPassword() const;
|
||||
|
||||
// The DAPNET section
|
||||
std::string getDAPNETAddress() const;
|
||||
|
|
@ -80,6 +83,9 @@ private:
|
|||
unsigned short m_mqttPort;
|
||||
unsigned int m_mqttKeepalive;
|
||||
std::string m_mqttName;
|
||||
bool m_mqttAuthEnabled;
|
||||
std::string m_mqttUsername;
|
||||
std::string m_mqttPassword;
|
||||
|
||||
std::string m_dapnetAddress;
|
||||
unsigned short m_dapnetPort;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,5 @@
|
|||
/*
|
||||
<<<<<<< HEAD
|
||||
* Copyright (C) 2018,2020,2023,2024 by Jonathan Naylor G4KLX
|
||||
=======
|
||||
* Copyright (C) 2018,2020,2024,2025 by Jonathan Naylor G4KLX
|
||||
>>>>>>> master
|
||||
* Copyright (C) 2018,2020,2023,2024,2025 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -258,7 +254,7 @@ int CDAPNETGateway::run()
|
|||
::LogInitialise(m_conf.getLogDisplayLevel(), m_conf.getLogMQTTLevel());
|
||||
|
||||
std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>> subscriptions;
|
||||
m_mqtt = new CMQTTConnection(m_conf.getMQTTAddress(), m_conf.getMQTTPort(), m_conf.getMQTTName(), subscriptions, m_conf.getMQTTKeepalive());
|
||||
m_mqtt = new CMQTTConnection(m_conf.getMQTTAddress(), m_conf.getMQTTPort(), m_conf.getMQTTName(), m_conf.getMQTTAuthEnabled(), m_conf.getMQTTUsername(), m_conf.getMQTTPassword(), subscriptions, m_conf.getMQTTKeepalive());
|
||||
ret = m_mqtt->open();
|
||||
if (!ret) {
|
||||
delete m_mqtt;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,9 @@ MQTTLevel=1
|
|||
Address=127.0.0.1
|
||||
Port=1883
|
||||
Keepalive=60
|
||||
Auth=0
|
||||
Username=mmdvm
|
||||
Password=mmdvm
|
||||
Name=dapnet-gateway
|
||||
|
||||
[DAPNET]
|
||||
|
|
|
|||
|
|
@ -23,10 +23,13 @@
|
|||
#include <cstring>
|
||||
#include <ctime>
|
||||
|
||||
CMQTTConnection::CMQTTConnection(const std::string& host, unsigned short port, const std::string& name, 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_port(port),
|
||||
m_name(name),
|
||||
m_authEnabled(authEnabled),
|
||||
m_username(username),
|
||||
m_password(password),
|
||||
m_subs(subs),
|
||||
m_keepalive(keepalive),
|
||||
m_qos(qos),
|
||||
|
|
@ -59,6 +62,9 @@ bool CMQTTConnection::open()
|
|||
return false;
|
||||
}
|
||||
|
||||
if (m_authEnabled)
|
||||
::mosquitto_username_pw_set(m_mosq, m_username.c_str(), m_password.c_str());
|
||||
|
||||
::mosquitto_connect_callback_set(m_mosq, onConnect);
|
||||
::mosquitto_subscribe_callback_set(m_mosq, onSubscribe);
|
||||
::mosquitto_message_callback_set(m_mosq, onMessage);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ enum class MQTT_QOS : int {
|
|||
|
||||
class CMQTTConnection {
|
||||
public:
|
||||
CMQTTConnection(const std::string& host, unsigned short port, const std::string& name, 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();
|
||||
|
||||
bool open();
|
||||
|
|
@ -47,6 +47,9 @@ private:
|
|||
std::string m_host;
|
||||
unsigned short m_port;
|
||||
std::string m_name;
|
||||
bool m_authEnabled;
|
||||
std::string m_username;
|
||||
std::string m_password;
|
||||
std::vector<std::pair<std::string, void (*)(const unsigned char*, unsigned int)>> m_subs;
|
||||
unsigned int m_keepalive;
|
||||
MQTT_QOS m_qos;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,6 @@
|
|||
#if !defined(VERSION_H)
|
||||
#define VERSION_H
|
||||
|
||||
const char* VERSION = "20250318";
|
||||
const char* VERSION = "20250326";
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue