Start implementing backup configurations
parent
6a84144d66
commit
aff27767c1
|
|
@ -24,28 +24,28 @@
|
|||
|
||||
#include "nymeaconfiguration.h"
|
||||
|
||||
#include "mqttpolicies.h"
|
||||
#include "mqttpolicy.h"
|
||||
#include "serverconfiguration.h"
|
||||
#include "serverconfigurations.h"
|
||||
#include "mqttpolicy.h"
|
||||
#include "mqttpolicies.h"
|
||||
|
||||
#include "jsonrpc/jsonrpcclient.h"
|
||||
|
||||
#include <QUuid>
|
||||
#include <QJsonDocument>
|
||||
#include <QUuid>
|
||||
|
||||
#include "logging.h"
|
||||
NYMEA_LOGGING_CATEGORY(dcNymeaConfiguration, "NymeaConfiguration")
|
||||
|
||||
NymeaConfiguration::NymeaConfiguration(JsonRpcClient *client, QObject *parent):
|
||||
QObject(parent),
|
||||
m_client(client),
|
||||
m_tcpServerConfigurations(new ServerConfigurations(this)),
|
||||
m_webSocketServerConfigurations(new ServerConfigurations(this)),
|
||||
m_webServerConfigurations(new WebServerConfigurations(this)),
|
||||
m_tunnelProxyServerConfigurations(new TunnelProxyServerConfigurations(this)),
|
||||
m_mqttServerConfigurations(new ServerConfigurations(this)),
|
||||
m_mqttPolicies(new MqttPolicies(this))
|
||||
NymeaConfiguration::NymeaConfiguration(JsonRpcClient *client, QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_client(client)
|
||||
, m_tcpServerConfigurations(new ServerConfigurations(this))
|
||||
, m_webSocketServerConfigurations(new ServerConfigurations(this))
|
||||
, m_webServerConfigurations(new WebServerConfigurations(this))
|
||||
, m_tunnelProxyServerConfigurations(new TunnelProxyServerConfigurations(this))
|
||||
, m_mqttServerConfigurations(new ServerConfigurations(this))
|
||||
, m_mqttPolicies(new MqttPolicies(this))
|
||||
{
|
||||
client->registerNotificationHandler(this, "Configuration", "notificationReceived");
|
||||
}
|
||||
|
|
@ -100,6 +100,28 @@ void NymeaConfiguration::setDebugServerEnabled(bool debugServerEnabled)
|
|||
m_client->sendCommand("Configuration.SetDebugServerEnabled", params, this, "setDebugServerEnabledResponse");
|
||||
}
|
||||
|
||||
QString NymeaConfiguration::backupDestinationDirectory() const
|
||||
{
|
||||
return m_backupDestinationDirectory;
|
||||
}
|
||||
|
||||
void NymeaConfiguration::setBackupDestinationDirectory(const QString &backupDestinationDirectory)
|
||||
{
|
||||
m_backupDestinationDirectory = backupDestinationDirectory;
|
||||
emit backupDestinationDirectoryChanged();
|
||||
}
|
||||
|
||||
int NymeaConfiguration::backupMaxCount() const
|
||||
{
|
||||
return m_backupMaxCount;
|
||||
}
|
||||
|
||||
void NymeaConfiguration::setBackupMaxCount(int backupMaxCount)
|
||||
{
|
||||
m_backupMaxCount = backupMaxCount;
|
||||
emit backupMaxCountChanged();
|
||||
}
|
||||
|
||||
ServerConfigurations *NymeaConfiguration::tcpServerConfigurations() const
|
||||
{
|
||||
return m_tcpServerConfigurations;
|
||||
|
|
@ -285,35 +307,59 @@ void NymeaConfiguration::getConfigurationsResponse(int commandId, const QVariant
|
|||
emit serverNameChanged();
|
||||
QVariantMap cloudConfig = params.value("cloud").toMap();
|
||||
|
||||
QVariantMap backupConifgurations = params.value("backupConfigurations").toMap();
|
||||
setBackupDestinationDirectory(backupConifgurations.value("destinationDirectory").toString());
|
||||
setBackupMaxCount(backupConifgurations.value("maxCount").toInt());
|
||||
|
||||
tcpServerConfigurations()->clear();
|
||||
foreach (const QVariant &tcpServerVariant, params.value("tcpServerConfigurations").toList()) {
|
||||
QVariantMap tcpConfigMap = tcpServerVariant.toMap();
|
||||
ServerConfiguration *config = new ServerConfiguration(tcpConfigMap.value("id").toString(), tcpConfigMap.value("address").toString(), tcpConfigMap.value("port").toInt(), tcpConfigMap.value("authenticationEnabled").toBool(), tcpConfigMap.value("sslEnabled").toBool());
|
||||
ServerConfiguration *config = new ServerConfiguration(tcpConfigMap.value("id").toString(),
|
||||
tcpConfigMap.value("address").toString(),
|
||||
tcpConfigMap.value("port").toInt(),
|
||||
tcpConfigMap.value("authenticationEnabled").toBool(),
|
||||
tcpConfigMap.value("sslEnabled").toBool());
|
||||
qCInfo(dcNymeaConfiguration) << "TCP server config:" << config->id() << config->address() << config->port() << config->authenticationEnabled() << config->sslEnabled();
|
||||
m_tcpServerConfigurations->addConfiguration(config);
|
||||
}
|
||||
webSocketServerConfigurations()->clear();
|
||||
foreach (const QVariant &websocketServerVariant, params.value("webSocketServerConfigurations").toList()) {
|
||||
QVariantMap websocketConfigMap = websocketServerVariant.toMap();
|
||||
ServerConfiguration *config = new ServerConfiguration(websocketConfigMap.value("id").toString(), websocketConfigMap.value("address").toString(), websocketConfigMap.value("port").toInt(), websocketConfigMap.value("authenticationEnabled").toBool(), websocketConfigMap.value("sslEnabled").toBool());
|
||||
qCInfo(dcNymeaConfiguration) << "WebSocket server config:" << config->id() << config->address() << config->port() << config->authenticationEnabled() << config->sslEnabled();
|
||||
ServerConfiguration *config = new ServerConfiguration(websocketConfigMap.value("id").toString(),
|
||||
websocketConfigMap.value("address").toString(),
|
||||
websocketConfigMap.value("port").toInt(),
|
||||
websocketConfigMap.value("authenticationEnabled").toBool(),
|
||||
websocketConfigMap.value("sslEnabled").toBool());
|
||||
qCInfo(dcNymeaConfiguration) << "WebSocket server config:" << config->id() << config->address() << config->port() << config->authenticationEnabled()
|
||||
<< config->sslEnabled();
|
||||
m_webSocketServerConfigurations->addConfiguration(config);
|
||||
}
|
||||
|
||||
webServerConfigurations()->clear();
|
||||
foreach (const QVariant &webServerVariant, params.value("webServerConfigurations").toList()) {
|
||||
QVariantMap webServerConfigMap = webServerVariant.toMap();
|
||||
WebServerConfiguration* config = new WebServerConfiguration(webServerConfigMap.value("id").toString(), webServerConfigMap.value("address").toString(), webServerConfigMap.value("port").toInt(), webServerConfigMap.value("authenticationEnabled").toBool(), webServerConfigMap.value("sslEnabled").toBool());
|
||||
WebServerConfiguration *config = new WebServerConfiguration(webServerConfigMap.value("id").toString(),
|
||||
webServerConfigMap.value("address").toString(),
|
||||
webServerConfigMap.value("port").toInt(),
|
||||
webServerConfigMap.value("authenticationEnabled").toBool(),
|
||||
webServerConfigMap.value("sslEnabled").toBool());
|
||||
config->setPublicFolder(webServerConfigMap.value("publicFolder").toString());
|
||||
qCInfo(dcNymeaConfiguration) << "WebServer server config:" << config->id() << config->address() << config->port() << config->authenticationEnabled() << config->sslEnabled() << config->publicFolder();
|
||||
qCInfo(dcNymeaConfiguration) << "WebServer server config:" << config->id() << config->address() << config->port() << config->authenticationEnabled() << config->sslEnabled()
|
||||
<< config->publicFolder();
|
||||
m_webServerConfigurations->addConfiguration(config);
|
||||
}
|
||||
|
||||
tunnelProxyServerConfigurations()->clear();
|
||||
foreach (const QVariant &tunnelProxyServerVariant, params.value("tunnelProxyServerConfigurations").toList()) {
|
||||
QVariantMap tunnelProxyServerConfigMap = tunnelProxyServerVariant.toMap();
|
||||
TunnelProxyServerConfiguration *config = new TunnelProxyServerConfiguration(tunnelProxyServerConfigMap.value("id").toString(), tunnelProxyServerConfigMap.value("address").toString(), tunnelProxyServerConfigMap.value("port").toInt(), tunnelProxyServerConfigMap.value("authenticationEnabled").toBool(), tunnelProxyServerConfigMap.value("sslEnabled").toBool(), tunnelProxyServerConfigMap.value("ignoreSslErrors").toBool());
|
||||
qCInfo(dcNymeaConfiguration) << "Tunnel server config:" << config->id() << config->address() << config->port() << config->authenticationEnabled() << config->sslEnabled() << config->ignoreSslErrors();
|
||||
TunnelProxyServerConfiguration *config = new TunnelProxyServerConfiguration(tunnelProxyServerConfigMap.value("id").toString(),
|
||||
tunnelProxyServerConfigMap.value("address").toString(),
|
||||
tunnelProxyServerConfigMap.value("port").toInt(),
|
||||
tunnelProxyServerConfigMap.value("authenticationEnabled").toBool(),
|
||||
tunnelProxyServerConfigMap.value("sslEnabled").toBool(),
|
||||
tunnelProxyServerConfigMap.value("ignoreSslErrors").toBool());
|
||||
qCInfo(dcNymeaConfiguration) << "Tunnel server config:" << config->id() << config->address() << config->port() << config->authenticationEnabled() << config->sslEnabled()
|
||||
<< config->ignoreSslErrors();
|
||||
m_tunnelProxyServerConfigurations->addConfiguration(config);
|
||||
}
|
||||
|
||||
|
|
@ -387,7 +433,11 @@ void NymeaConfiguration::getMqttServerConfigsReply(int commandId, const QVariant
|
|||
m_mqttServerConfigurations->clear();
|
||||
foreach (const QVariant &mqttServerVariant, params.value("mqttServerConfigurations").toList()) {
|
||||
QVariantMap mqttConfigMap = mqttServerVariant.toMap();
|
||||
ServerConfiguration *config = new ServerConfiguration(mqttConfigMap.value("id").toString(), mqttConfigMap.value("address").toString(), mqttConfigMap.value("port").toInt(), mqttConfigMap.value("authenticationEnabled").toBool(), mqttConfigMap.value("sslEnabled").toBool());
|
||||
ServerConfiguration *config = new ServerConfiguration(mqttConfigMap.value("id").toString(),
|
||||
mqttConfigMap.value("address").toString(),
|
||||
mqttConfigMap.value("port").toInt(),
|
||||
mqttConfigMap.value("authenticationEnabled").toBool(),
|
||||
mqttConfigMap.value("sslEnabled").toBool());
|
||||
m_mqttServerConfigurations->addConfiguration(config);
|
||||
}
|
||||
}
|
||||
|
|
@ -405,16 +455,15 @@ void NymeaConfiguration::deleteMqttConfigReply(int commandId, const QVariantMap
|
|||
void NymeaConfiguration::getMqttPoliciesReply(int commandId, const QVariantMap ¶ms)
|
||||
{
|
||||
Q_UNUSED(commandId)
|
||||
// qCDebug(dcNymeaConfiguration) << "Mqtt polices:" << params;
|
||||
// qCDebug(dcNymeaConfiguration) << "Mqtt polices:" << params;
|
||||
m_mqttPolicies->clear();
|
||||
foreach (const QVariant &policyVariant, params.value("mqttPolicies").toList()) {
|
||||
QVariantMap policyMap = policyVariant.toMap();
|
||||
MqttPolicy *policy = new MqttPolicy(
|
||||
policyMap.value("clientId").toString(),
|
||||
policyMap.value("username").toString(),
|
||||
policyMap.value("password").toString(),
|
||||
policyMap.value("allowedPublishTopicFilters").toStringList(),
|
||||
policyMap.value("allowedSubscribeTopicFilters").toStringList());
|
||||
MqttPolicy *policy = new MqttPolicy(policyMap.value("clientId").toString(),
|
||||
policyMap.value("username").toString(),
|
||||
policyMap.value("password").toString(),
|
||||
policyMap.value("allowedPublishTopicFilters").toStringList(),
|
||||
policyMap.value("allowedSubscribeTopicFilters").toStringList());
|
||||
m_mqttPolicies->addPolicy(policy);
|
||||
}
|
||||
}
|
||||
|
|
@ -437,10 +486,21 @@ void NymeaConfiguration::notificationReceived(const QVariantMap ¬ification)
|
|||
|
||||
if (notif == "Configuration.BasicConfigurationChanged") {
|
||||
QVariantMap configMap = params.value("basicConfiguration").toMap();
|
||||
|
||||
m_debugServerEnabled = configMap.value("debugServerEnabled").toBool();
|
||||
emit debugServerEnabledChanged();
|
||||
|
||||
m_serverName = configMap.value("serverName").toString();
|
||||
emit serverNameChanged();
|
||||
|
||||
QVariantMap backupConfigMap = params.value("backupConfiguration").toMap();
|
||||
|
||||
m_backupDestinationDirectory = backupConfigMap.value("destinationDirectory").toString();
|
||||
emit backupDestinationDirectoryChanged();
|
||||
|
||||
m_backupMaxCount = backupConfigMap.value("maxCount").toInt();
|
||||
emit backupMaxCountChanged();
|
||||
|
||||
qCDebug(dcNymeaConfiguration()) << "Basic configuration changed. Server name:" << m_serverName << "Debug server enabled:" << m_debugServerEnabled;
|
||||
} else if (notif == "Configuration.TcpServerConfigurationChanged") {
|
||||
QVariantMap configMap = params.value("tcpServerConfiguration").toMap();
|
||||
|
|
@ -493,7 +553,7 @@ void NymeaConfiguration::notificationReceived(const QVariantMap ¬ification)
|
|||
bool sslEnabled = configMap.value("sslEnabled").toBool();
|
||||
bool ignoreSslErrors = configMap.value("ignoreSslErrors").toBool();
|
||||
|
||||
TunnelProxyServerConfiguration *config = qobject_cast<TunnelProxyServerConfiguration*>(m_tunnelProxyServerConfigurations->getConfiguration(id));
|
||||
TunnelProxyServerConfiguration *config = qobject_cast<TunnelProxyServerConfiguration *>(m_tunnelProxyServerConfigurations->getConfiguration(id));
|
||||
bool existing = true;
|
||||
if (!config) {
|
||||
existing = false;
|
||||
|
|
@ -505,7 +565,8 @@ void NymeaConfiguration::notificationReceived(const QVariantMap ¬ification)
|
|||
config->setSslEnabled(sslEnabled);
|
||||
config->setIgnoreSslErrors(ignoreSslErrors);
|
||||
if (!existing) {
|
||||
qCInfo(dcNymeaConfiguration()) << "Adding tunnel proxy connection:" << config->id() << config->address() << config->port() << config->sslEnabled() << config->authenticationEnabled() << config->ignoreSslErrors();
|
||||
qCInfo(dcNymeaConfiguration()) << "Adding tunnel proxy connection:" << config->id() << config->address() << config->port() << config->sslEnabled()
|
||||
<< config->authenticationEnabled() << config->ignoreSslErrors();
|
||||
m_tunnelProxyServerConfigurations->addConfiguration(config);
|
||||
}
|
||||
} else if (notif == "Configuration.WebServerConfigurationChanged") {
|
||||
|
|
@ -515,9 +576,9 @@ void NymeaConfiguration::notificationReceived(const QVariantMap ¬ification)
|
|||
int port = configMap.value("port").toInt();
|
||||
bool authEnabled = configMap.value("authenticationEnabled").toBool();
|
||||
bool sslEnabled = configMap.value("sslEnabled").toBool();
|
||||
QString publicFolder = configMap.value("publicFolder").toString();
|
||||
QString publicFolder = configMap.value("publicFolder").toString();
|
||||
|
||||
WebServerConfiguration *config = qobject_cast<WebServerConfiguration*>(m_webServerConfigurations->getConfiguration(id));
|
||||
WebServerConfiguration *config = qobject_cast<WebServerConfiguration *>(m_webServerConfigurations->getConfiguration(id));
|
||||
bool existing = true;
|
||||
if (!config) {
|
||||
existing = false;
|
||||
|
|
@ -581,7 +642,7 @@ void NymeaConfiguration::notificationReceived(const QVariantMap ¬ification)
|
|||
policy->setAllowedSubscribeTopicFilters(policyMap.value("allowedSubscribeTopicFilters").toStringList());
|
||||
qCInfo(dcNymeaConfiguration()) << "MQTT policy changed" << policy->clientId() << policy->username() << policy->password();
|
||||
} else if (notif == "Configuration.MqttPolicyRemoved") {
|
||||
MqttPolicy* policy = m_mqttPolicies->getPolicy(params.value("clientId").toString());
|
||||
MqttPolicy *policy = m_mqttPolicies->getPolicy(params.value("clientId").toString());
|
||||
if (!policy) {
|
||||
qCWarning(dcNymeaConfiguration()) << "Reveived a policy removed notification for apolicy we don't know";
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@
|
|||
|
||||
#include <QObject>
|
||||
|
||||
#include "serverconfigurations.h"
|
||||
#include "mqttpolicies.h"
|
||||
#include "serverconfigurations.h"
|
||||
|
||||
class JsonRpcClient;
|
||||
class ServerConfiguration;
|
||||
|
|
@ -49,16 +49,19 @@ class NymeaConfiguration : public QObject
|
|||
|
||||
Q_PROPERTY(bool debugServerEnabled READ debugServerEnabled WRITE setDebugServerEnabled NOTIFY debugServerEnabledChanged)
|
||||
|
||||
Q_PROPERTY(ServerConfigurations* tcpServerConfigurations READ tcpServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(ServerConfigurations* webSocketServerConfigurations READ webSocketServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(WebServerConfigurations* webServerConfigurations READ webServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(TunnelProxyServerConfigurations* tunnelProxyServerConfigurations READ tunnelProxyServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(ServerConfigurations* mqttServerConfigurations READ mqttServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(QString backupDestinationDirectory READ backupDestinationDirectory WRITE setBackupDestinationDirectory NOTIFY backupDestinationDirectoryChanged FINAL)
|
||||
Q_PROPERTY(int backupMaxCount READ backupMaxCount NOTIFY backupMaxCountChanged FINAL)
|
||||
|
||||
Q_PROPERTY(MqttPolicies* mqttPolicies READ mqttPolicies CONSTANT)
|
||||
Q_PROPERTY(ServerConfigurations *tcpServerConfigurations READ tcpServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(ServerConfigurations *webSocketServerConfigurations READ webSocketServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(WebServerConfigurations *webServerConfigurations READ webServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(TunnelProxyServerConfigurations *tunnelProxyServerConfigurations READ tunnelProxyServerConfigurations CONSTANT)
|
||||
Q_PROPERTY(ServerConfigurations *mqttServerConfigurations READ mqttServerConfigurations CONSTANT)
|
||||
|
||||
Q_PROPERTY(MqttPolicies *mqttPolicies READ mqttPolicies CONSTANT)
|
||||
|
||||
public:
|
||||
explicit NymeaConfiguration(JsonRpcClient* client, QObject *parent = nullptr);
|
||||
explicit NymeaConfiguration(JsonRpcClient *client, QObject *parent = nullptr);
|
||||
|
||||
bool fetchingData() const;
|
||||
|
||||
|
|
@ -76,6 +79,12 @@ public:
|
|||
bool debugServerEnabled() const;
|
||||
void setDebugServerEnabled(bool debugServerEnabled);
|
||||
|
||||
QString backupDestinationDirectory() const;
|
||||
void setBackupDestinationDirectory(const QString &backupDestinationDirectory);
|
||||
|
||||
int backupMaxCount() const;
|
||||
void setBackupMaxCount(int backupMaxCount);
|
||||
|
||||
ServerConfigurations *tcpServerConfigurations() const;
|
||||
ServerConfigurations *webSocketServerConfigurations() const;
|
||||
WebServerConfigurations *webServerConfigurations() const;
|
||||
|
|
@ -83,10 +92,12 @@ public:
|
|||
ServerConfigurations *mqttServerConfigurations() const;
|
||||
MqttPolicies *mqttPolicies() const;
|
||||
|
||||
Q_INVOKABLE ServerConfiguration* createServerConfiguration(const QString &address = "0.0.0.0", int port = 0, bool authEnabled = false, bool sslEnabled = false);
|
||||
Q_INVOKABLE WebServerConfiguration* createWebServerConfiguration(const QString &address = "0.0.0.0", int port = 0, bool authEnabled = false, bool sslEnabled = false, const QString &publicFolder = QString());
|
||||
Q_INVOKABLE TunnelProxyServerConfiguration* createTunnelProxyServerConfiguration(const QString &address, int port, bool authEnabled = true, bool sslEnabled = true, bool ignoreSslErrors = false);
|
||||
Q_INVOKABLE MqttPolicy* createMqttPolicy() const;
|
||||
Q_INVOKABLE ServerConfiguration *createServerConfiguration(const QString &address = "0.0.0.0", int port = 0, bool authEnabled = false, bool sslEnabled = false);
|
||||
Q_INVOKABLE WebServerConfiguration *createWebServerConfiguration(
|
||||
const QString &address = "0.0.0.0", int port = 0, bool authEnabled = false, bool sslEnabled = false, const QString &publicFolder = QString());
|
||||
Q_INVOKABLE TunnelProxyServerConfiguration *createTunnelProxyServerConfiguration(
|
||||
const QString &address, int port, bool authEnabled = true, bool sslEnabled = true, bool ignoreSslErrors = false);
|
||||
Q_INVOKABLE MqttPolicy *createMqttPolicy() const;
|
||||
|
||||
Q_INVOKABLE void setTcpServerConfiguration(ServerConfiguration *configuration);
|
||||
Q_INVOKABLE void setWebSocketServerConfiguration(ServerConfiguration *configuration);
|
||||
|
|
@ -100,7 +111,7 @@ public:
|
|||
Q_INVOKABLE void deleteTunnelProxyServerConfiguration(const QString &id);
|
||||
Q_INVOKABLE void deleteMqttServerConfiguration(const QString &id);
|
||||
|
||||
Q_INVOKABLE void updateMqttPolicy(MqttPolicy* policy);
|
||||
Q_INVOKABLE void updateMqttPolicy(MqttPolicy *policy);
|
||||
Q_INVOKABLE void deleteMqttPolicy(const QString &clientId);
|
||||
void init();
|
||||
|
||||
|
|
@ -131,6 +142,8 @@ signals:
|
|||
void fetchingDataChanged();
|
||||
void debugServerEnabledChanged();
|
||||
void serverNameChanged();
|
||||
void backupDestinationDirectoryChanged();
|
||||
void backupMaxCountChanged();
|
||||
|
||||
private:
|
||||
JsonRpcClient *m_client = nullptr;
|
||||
|
|
@ -139,13 +152,15 @@ private:
|
|||
bool m_debugServerEnabled = false;
|
||||
QString m_serverName;
|
||||
|
||||
QString m_backupDestinationDirectory;
|
||||
int m_backupMaxCount = 1;
|
||||
|
||||
ServerConfigurations *m_tcpServerConfigurations = nullptr;
|
||||
ServerConfigurations *m_webSocketServerConfigurations = nullptr;
|
||||
WebServerConfigurations* m_webServerConfigurations = nullptr;
|
||||
WebServerConfigurations *m_webServerConfigurations = nullptr;
|
||||
TunnelProxyServerConfigurations *m_tunnelProxyServerConfigurations = nullptr;
|
||||
ServerConfigurations *m_mqttServerConfigurations = nullptr;
|
||||
MqttPolicies *m_mqttPolicies = nullptr;
|
||||
|
||||
};
|
||||
|
||||
#endif // NYMEACONFIGURATION_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue