update to use nonce
This commit is contained in:
parent
3816ade6b7
commit
699065f689
@ -468,9 +468,9 @@ void AWSConnector::onSubscriptionReceived(const QMQTT::Message &message)
|
|||||||
// silently drop our own things (should not be subscribed to that in the first place)
|
// silently drop our own things (should not be subscribed to that in the first place)
|
||||||
} else if (topic.startsWith(QString("%1/eu-west-1:").arg(m_clientId)) && topic.contains("proxy")) {
|
} else if (topic.startsWith(QString("%1/eu-west-1:").arg(m_clientId)) && topic.contains("proxy")) {
|
||||||
QString token = jsonDoc.toVariant().toMap().value("token").toString();
|
QString token = jsonDoc.toVariant().toMap().value("token").toString();
|
||||||
qlonglong timestamp = jsonDoc.toVariant().toMap().value("timestamp").toLongLong();
|
QString timestamp = jsonDoc.toVariant().toMap().value("timestamp").toString();
|
||||||
static QHash<QString, QDateTime> dupes;
|
static QHash<QString, QDateTime> dupes;
|
||||||
QString packetId = topic + token + QString::number(timestamp);
|
QString packetId = topic + token + timestamp;
|
||||||
if (dupes.contains(packetId)) {
|
if (dupes.contains(packetId)) {
|
||||||
qCDebug(dcAWS()) << "Dropping duplicate packet";
|
qCDebug(dcAWS()) << "Dropping duplicate packet";
|
||||||
return;
|
return;
|
||||||
@ -482,7 +482,7 @@ void AWSConnector::onSubscriptionReceived(const QMQTT::Message &message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
qCDebug(dcAWS) << "Proxy remote connection request received";
|
qCDebug(dcAWS) << "Proxy remote connection request received";
|
||||||
proxyConnectionRequestReceived(token);
|
proxyConnectionRequestReceived(token, timestamp);
|
||||||
} else if (topic == QString("%1/notify/response").arg(m_clientId)) {
|
} else if (topic == QString("%1/notify/response").arg(m_clientId)) {
|
||||||
int transactionId = jsonDoc.toVariant().toMap().value("id").toInt();
|
int transactionId = jsonDoc.toVariant().toMap().value("id").toInt();
|
||||||
int status = jsonDoc.toVariant().toMap().value("status").toInt();
|
int status = jsonDoc.toVariant().toMap().value("status").toInt();
|
||||||
|
|||||||
@ -64,7 +64,7 @@ signals:
|
|||||||
void pushNotificationSent(int id, int status);
|
void pushNotificationSent(int id, int status);
|
||||||
void turnCredentialsReceived(const QVariantMap &turnCredentials);
|
void turnCredentialsReceived(const QVariantMap &turnCredentials);
|
||||||
|
|
||||||
void proxyConnectionRequestReceived(const QString &token);
|
void proxyConnectionRequestReceived(const QString &token, const QString &nonce);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void doConnect();
|
void doConnect();
|
||||||
|
|||||||
@ -65,13 +65,14 @@ bool CloudTransport::stopServer()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CloudTransport::connectToCloud(const QString &token)
|
void CloudTransport::connectToCloud(const QString &token, const QString &nonce)
|
||||||
{
|
{
|
||||||
qCDebug(dcCloud()) << "Connecting to remote proxy server" << m_proxyUrl.toString();
|
qCDebug(dcCloud()) << "Connecting to remote proxy server" << m_proxyUrl.toString();
|
||||||
|
|
||||||
ConnectionContext context;
|
ConnectionContext context;
|
||||||
context.clientId = QUuid::createUuid();
|
context.clientId = QUuid::createUuid();
|
||||||
context.token = token;
|
context.token = token;
|
||||||
|
context.nonce = nonce;
|
||||||
QString identifier = QString("nymea:core (%1)").arg(NymeaCore::instance()->configuration()->serverName());
|
QString identifier = QString("nymea:core (%1)").arg(NymeaCore::instance()->configuration()->serverName());
|
||||||
context.proxyConnection = new RemoteProxyConnection(NymeaCore::instance()->configuration()->serverUuid().toString(), identifier, this);
|
context.proxyConnection = new RemoteProxyConnection(NymeaCore::instance()->configuration()->serverUuid().toString(), identifier, this);
|
||||||
m_connections.insert(context.proxyConnection, context);
|
m_connections.insert(context.proxyConnection, context);
|
||||||
@ -110,7 +111,7 @@ void CloudTransport::transportReady()
|
|||||||
proxyConnection->proxyServerVersion() << "API version:" << proxyConnection->proxyServerApiVersion();
|
proxyConnection->proxyServerVersion() << "API version:" << proxyConnection->proxyServerApiVersion();
|
||||||
|
|
||||||
ConnectionContext context = m_connections.value(proxyConnection);
|
ConnectionContext context = m_connections.value(proxyConnection);
|
||||||
context.proxyConnection->authenticate(context.token);
|
context.proxyConnection->authenticate(context.token, context.nonce);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CloudTransport::transportDataReady(const QByteArray &data)
|
void CloudTransport::transportDataReady(const QByteArray &data)
|
||||||
|
|||||||
@ -42,7 +42,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void connectToCloud(const QString &token);
|
void connectToCloud(const QString &token, const QString &nonce);
|
||||||
void remoteConnectionStateChanged(remoteproxyclient::RemoteProxyConnection::State state);
|
void remoteConnectionStateChanged(remoteproxyclient::RemoteProxyConnection::State state);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
@ -56,6 +56,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
QUuid clientId;
|
QUuid clientId;
|
||||||
QString token;
|
QString token;
|
||||||
|
QString nonce;
|
||||||
remoteproxyclient::RemoteProxyConnection* proxyConnection;
|
remoteproxyclient::RemoteProxyConnection* proxyConnection;
|
||||||
};
|
};
|
||||||
QHash<remoteproxyclient::RemoteProxyConnection*, ConnectionContext> m_connections;
|
QHash<remoteproxyclient::RemoteProxyConnection*, ConnectionContext> m_connections;
|
||||||
|
|||||||
Reference in New Issue
Block a user