update to use nonce

This commit is contained in:
Michael Zanetti 2018-09-01 01:20:30 +02:00
parent 3816ade6b7
commit 699065f689
4 changed files with 9 additions and 7 deletions

View File

@ -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();

View File

@ -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();

View File

@ -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)

View File

@ -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;