Add two new external libraries. SimpleCrypt is used to encrypt passwords, QMQTT is an MQTT

library that I was able to integrate into the codebase so there aren't any external
dependencies. Both external projects have their own open source licenses. Those licenses
are included. Also in this commit is some preliminary work to start adding MQTT support to SavvyCAN.
This commit is contained in:
Collin Kidder
2020-08-05 20:24:02 -04:00
parent fbfc1f8c64
commit ee287eac4b
47 changed files with 5482 additions and 20 deletions
+103
View File
@@ -0,0 +1,103 @@
#ifdef QT_WEBSOCKETS_LIB
#include "qmqtt_websocket_p.h"
#include <QNetworkRequest>
#include <QUrl>
#include <QSslError>
#ifndef QT_NO_SSL
QMQTT::WebSocket::WebSocket(const QString& origin,
QWebSocketProtocol::Version version,
const QSslConfiguration* sslConfig,
QObject* parent)
: SocketInterface(parent)
, _socket(new QWebSocket(origin, version, this))
, _ioDevice(new WebSocketIODevice(_socket, this))
{
initialize();
if (sslConfig != NULL)
_socket->setSslConfiguration(*sslConfig);
connect(_socket, &QWebSocket::sslErrors, this, &WebSocket::sslErrors);
}
#endif // QT_NO_SSL
QMQTT::WebSocket::WebSocket(const QString& origin,
QWebSocketProtocol::Version version,
QObject* parent)
: SocketInterface(parent)
, _socket(new QWebSocket(origin, version, this))
, _ioDevice(new WebSocketIODevice(_socket, this))
{
initialize();
}
void QMQTT::WebSocket::initialize()
{
connect(_socket, &QWebSocket::connected, this, &WebSocket::connected);
connect(_socket, &QWebSocket::disconnected, this, &WebSocket::disconnected);
connect(_socket,
static_cast<void (QWebSocket::*)(QAbstractSocket::SocketError)>(&QWebSocket::error),
this,
static_cast<void (SocketInterface::*)(QAbstractSocket::SocketError)>(&SocketInterface::error));
}
QMQTT::WebSocket::~WebSocket()
{
}
void QMQTT::WebSocket::connectToHost(const QHostAddress& address, quint16 port)
{
Q_UNUSED(address)
Q_UNUSED(port)
qFatal("No supported");
}
void QMQTT::WebSocket::connectToHost(const QString& hostName, quint16 port)
{
Q_UNUSED(port)
QUrl url(hostName);
QNetworkRequest request(url);
request.setRawHeader("Sec-WebSocket-Protocol", "mqtt");
_ioDevice->connectToHost(request);
}
void QMQTT::WebSocket::disconnectFromHost()
{
_socket->close();
}
QAbstractSocket::SocketState QMQTT::WebSocket::state() const
{
return _socket->state();
}
QAbstractSocket::SocketError QMQTT::WebSocket::error() const
{
return _socket->error();
}
#ifndef QT_NO_SSL
void QMQTT::WebSocket::ignoreSslErrors(const QList<QSslError>& errors)
{
_socket->ignoreSslErrors(errors);
}
void QMQTT::WebSocket::ignoreSslErrors()
{
_socket->ignoreSslErrors();
}
QSslConfiguration QMQTT::WebSocket::sslConfiguration() const
{
return _socket->sslConfiguration();
}
void QMQTT::WebSocket::setSslConfiguration(const QSslConfiguration& config)
{
_socket->setSslConfiguration(config);
}
#endif // QT_NO_SSL
#endif // QT_WEBSOCKETS_LIB