Switch to demo server with authentication

This commit is contained in:
Michael Zanetti 2023-02-27 00:47:17 +01:00
parent 2c96671886
commit b04ca3efe0
3 changed files with 19 additions and 4 deletions

View File

@ -172,6 +172,14 @@ bool JsonRpcClient::tokenExists(const QString &serverUuid) const
return settings.contains(QUuid(serverUuid).toString()); return settings.contains(QUuid(serverUuid).toString());
} }
void JsonRpcClient::addToken(const QString &serverUuid, const QByteArray &token)
{
QSettings settings;
settings.beginGroup("jsonTokens");
settings.setValue(QUuid(serverUuid).toString(), token);
settings.endGroup();
}
void JsonRpcClient::setNotificationsEnabledResponse(int commandId, const QVariantMap &params) void JsonRpcClient::setNotificationsEnabledResponse(int commandId, const QVariantMap &params)
{ {
qCDebug(dcJsonRpc()) << "Notification configuration response:" << commandId << qUtf8Printable(QJsonDocument::fromVariant(params).toJson()); qCDebug(dcJsonRpc()) << "Notification configuration response:" << commandId << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
@ -381,7 +389,7 @@ bool JsonRpcClient::ensureServerVersion(const QString &jsonRpcVersion)
void JsonRpcClient::processAuthenticate(int /*commandId*/, const QVariantMap &data) void JsonRpcClient::processAuthenticate(int /*commandId*/, const QVariantMap &data)
{ {
if (data.value("success").toBool()) { if (data.value("success").toBool()) {
qDebug() << "authentication successful"; qCInfo(dcJsonRpc()) << "authentication successful";
m_token = data.value("token").toByteArray(); m_token = data.value("token").toByteArray();
m_username = data.value("username").toString(); m_username = data.value("username").toString();
if (m_jsonRpcVersion.majorVersion() >= 6) { if (m_jsonRpcVersion.majorVersion() >= 6) {
@ -401,7 +409,7 @@ void JsonRpcClient::processAuthenticate(int /*commandId*/, const QVariantMap &da
setNotificationsEnabled(); setNotificationsEnabled();
} else { } else {
qWarning() << "Authentication failed" << data; qCWarning(dcJsonRpc()) << "Authentication failed" << data;
emit authenticationFailed(); emit authenticationFailed();
} }
} }
@ -433,7 +441,7 @@ JsonRpcReply *JsonRpcClient::createReply(const QString &method, const QVariantMa
{ {
QStringList callParts = method.split('.'); QStringList callParts = method.split('.');
if (callParts.count() != 2) { if (callParts.count() != 2) {
qWarning() << "Invalid method. Must be Namespace.Method"; qCWarning(dcJsonRpc()) << "Invalid method. Must be Namespace.Method";
return nullptr; return nullptr;
} }
m_id++; m_id++;
@ -669,6 +677,11 @@ void JsonRpcClient::helloReply(int /*commandId*/, const QVariantMap &params)
if (m_connection->currentHost()->uuid().isNull()) { if (m_connection->currentHost()->uuid().isNull()) {
qCDebug(dcJsonRpc()) << "Updating Server UUID in connection:" << m_connection->currentHost()->uuid().toString() << "->" << serverUuid; qCDebug(dcJsonRpc()) << "Updating Server UUID in connection:" << m_connection->currentHost()->uuid().toString() << "->" << serverUuid;
m_connection->currentHost()->setUuid(serverUuid); m_connection->currentHost()->setUuid(serverUuid);
// Now that we know the server uuid, if we have a token for this host, let's try again.
if (tokenExists(serverUuid.toString())){
onInterfaceConnectedChanged(true);
return;
}
} else if (m_connection->currentHost()->uuid() != serverUuid) { } else if (m_connection->currentHost()->uuid() != serverUuid) {
qCWarning(dcJsonRpc()) << "Unexpected server UUID" << serverUuid.toString() << "expected:" << m_connection->currentHost()->uuid(); qCWarning(dcJsonRpc()) << "Unexpected server UUID" << serverUuid.toString() << "expected:" << m_connection->currentHost()->uuid();
emit invalidServerUuid(serverUuid); emit invalidServerUuid(serverUuid);

View File

@ -102,6 +102,7 @@ public:
Q_INVOKABLE void disconnectFromHost(); Q_INVOKABLE void disconnectFromHost();
Q_INVOKABLE void acceptCertificate(const QString &serverUuid, const QByteArray &pem); Q_INVOKABLE void acceptCertificate(const QString &serverUuid, const QByteArray &pem);
Q_INVOKABLE bool tokenExists(const QString &serverUuid) const; Q_INVOKABLE bool tokenExists(const QString &serverUuid) const;
Q_INVOKABLE void addToken(const QString &serverUuid, const QByteArray &token);
Q_INVOKABLE bool ensureServerVersion(const QString &jsonRpcVersion); Q_INVOKABLE bool ensureServerVersion(const QString &jsonRpcVersion);

View File

@ -19,7 +19,8 @@ WizardPageBase {
pageStack.push(connectionSelectionComponent) pageStack.push(connectionSelectionComponent)
} }
onExtraButtonPressed: { onExtraButtonPressed: {
var host = nymeaDiscovery.nymeaHosts.createWanHost("Demo server", "nymea://nymea.nymea.io:2222") var host = nymeaDiscovery.nymeaHosts.createWanHost("Demo server", "nymea://nymea.nymea.io:2223")
engine.jsonRpcClient.addToken("{6c047fec-78da-46af-990a-8f687216ae1b}", "demousertoken");
engine.jsonRpcClient.connectToHost(host) engine.jsonRpcClient.connectToHost(host)
} }