extracted clientId from clientInfo to use it in the presence information later
This commit is contained in:
parent
8ec0af3205
commit
76a9c5da0c
@ -42,9 +42,9 @@ bool Core::ClientCache::checkClient(const QString& node, const QString& ver, con
|
|||||||
QString id = node + "/" + ver;
|
QString id = node + "/" + ver;
|
||||||
if (requested.count(id) == 0 && !cache->checkRecord(id)) {
|
if (requested.count(id) == 0 && !cache->checkRecord(id)) {
|
||||||
Shared::ClientInfo& info = requested.insert(std::make_pair(id, Shared::ClientInfo())).first->second;
|
Shared::ClientInfo& info = requested.insert(std::make_pair(id, Shared::ClientInfo())).first->second;
|
||||||
info.node = node;
|
info.id.node = node;
|
||||||
info.verification = ver;
|
info.id.verification = ver;
|
||||||
info.hash = hash;
|
info.id.hash = hash;
|
||||||
emit requestClientInfo(id);
|
emit requestClientInfo(id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1,33 +1,43 @@
|
|||||||
target_sources(squawk PRIVATE
|
set(SOURCE_FILES
|
||||||
enums.h
|
|
||||||
global.cpp
|
global.cpp
|
||||||
global.h
|
|
||||||
exception.cpp
|
exception.cpp
|
||||||
exception.h
|
|
||||||
icons.cpp
|
icons.cpp
|
||||||
icons.h
|
|
||||||
message.cpp
|
message.cpp
|
||||||
message.h
|
|
||||||
messageinfo.cpp
|
messageinfo.cpp
|
||||||
messageinfo.h
|
|
||||||
order.h
|
|
||||||
shared.h
|
|
||||||
utils.cpp
|
utils.cpp
|
||||||
utils.h
|
|
||||||
vcard.cpp
|
vcard.cpp
|
||||||
vcard.h
|
|
||||||
pathcheck.cpp
|
pathcheck.cpp
|
||||||
pathcheck.h
|
|
||||||
clientinfo.h
|
|
||||||
clientinfo.cpp
|
clientinfo.cpp
|
||||||
identity.h
|
|
||||||
identity.cpp
|
identity.cpp
|
||||||
form.h
|
|
||||||
form.cpp
|
form.cpp
|
||||||
field.h
|
|
||||||
field.cpp
|
field.cpp
|
||||||
keyinfo.cpp
|
keyinfo.cpp
|
||||||
keyinfo.h
|
|
||||||
info.cpp
|
info.cpp
|
||||||
info.h
|
clientid.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set(HEADER_FILES
|
||||||
|
order.h
|
||||||
|
shared.h
|
||||||
|
enums.h
|
||||||
|
global.h
|
||||||
|
exception.h
|
||||||
|
icons.h
|
||||||
|
message.h
|
||||||
|
messageinfo.h
|
||||||
|
utils.h
|
||||||
|
vcard.h
|
||||||
|
pathcheck.h
|
||||||
|
clientinfo.h
|
||||||
|
identity.h
|
||||||
|
form.h
|
||||||
|
field.h
|
||||||
|
keyinfo.h
|
||||||
|
info.h
|
||||||
|
clientid.h
|
||||||
|
)
|
||||||
|
|
||||||
|
target_sources(squawk PRIVATE
|
||||||
|
${SOURCE_FILES}
|
||||||
|
${HEADER_FILES}
|
||||||
)
|
)
|
||||||
|
52
shared/clientid.cpp
Normal file
52
shared/clientid.cpp
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Squawk messenger.
|
||||||
|
// Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "clientid.h"
|
||||||
|
|
||||||
|
Shared::ClientId::ClientId():
|
||||||
|
node(),
|
||||||
|
verification(),
|
||||||
|
hash()
|
||||||
|
{}
|
||||||
|
|
||||||
|
QString Shared::ClientId::getId() const {
|
||||||
|
return node + "/" + verification;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDataStream & Shared::ClientId::operator<<(QDataStream& stream) {
|
||||||
|
stream >> node;
|
||||||
|
stream >> verification;
|
||||||
|
stream >> hash;
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDataStream & Shared::ClientId::operator>>(QDataStream& stream) const {
|
||||||
|
stream << node;
|
||||||
|
stream << verification;
|
||||||
|
stream << hash;
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDataStream & operator<<(QDataStream& stream, const Shared::ClientId& info) {
|
||||||
|
info >> stream;
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDataStream & operator>>(QDataStream& stream, Shared::ClientId& info) {
|
||||||
|
info << stream;
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
45
shared/clientid.h
Normal file
45
shared/clientid.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Squawk messenger.
|
||||||
|
// Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef SHARED_CLIENTID_H
|
||||||
|
#define SHARED_CLIENTID_H
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QDataStream>
|
||||||
|
|
||||||
|
namespace Shared {
|
||||||
|
|
||||||
|
class ClientId {
|
||||||
|
public:
|
||||||
|
ClientId();
|
||||||
|
|
||||||
|
QString getId() const;
|
||||||
|
|
||||||
|
QDataStream& operator << (QDataStream& stream);
|
||||||
|
QDataStream& operator >> (QDataStream& stream) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
QString node;
|
||||||
|
QString verification;
|
||||||
|
QString hash;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QDataStream& operator << (QDataStream& stream, const Shared::ClientId& info);
|
||||||
|
QDataStream& operator >> (QDataStream& stream, Shared::ClientId& info);
|
||||||
|
|
||||||
|
#endif // SHARED_CLIENTID_H
|
@ -32,20 +32,16 @@ const std::map<QString, QCryptographicHash::Algorithm> Shared::ClientInfo::hashe
|
|||||||
Shared::ClientInfo::ClientInfo():
|
Shared::ClientInfo::ClientInfo():
|
||||||
identities(),
|
identities(),
|
||||||
extensions(),
|
extensions(),
|
||||||
node(),
|
id(),
|
||||||
verification(),
|
|
||||||
hash(),
|
|
||||||
specificPresence() {}
|
specificPresence() {}
|
||||||
|
|
||||||
QString Shared::ClientInfo::getId() const {
|
QString Shared::ClientInfo::getId() const {
|
||||||
return node + "/" + verification;
|
return id.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QDataStream & Shared::ClientInfo::operator >> (QDataStream& stream) const {
|
QDataStream & Shared::ClientInfo::operator >> (QDataStream& stream) const {
|
||||||
stream << node;
|
stream << id;
|
||||||
stream << verification;
|
|
||||||
stream << hash;
|
|
||||||
stream << (quint8)identities.size();
|
stream << (quint8)identities.size();
|
||||||
for (const Shared::Identity& identity : identities) {
|
for (const Shared::Identity& identity : identities) {
|
||||||
stream << identity;
|
stream << identity;
|
||||||
@ -59,9 +55,7 @@ QDataStream & Shared::ClientInfo::operator >> (QDataStream& stream) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
QDataStream & Shared::ClientInfo::operator << (QDataStream& stream) {
|
QDataStream & Shared::ClientInfo::operator << (QDataStream& stream) {
|
||||||
stream >> node;
|
stream >> id;
|
||||||
stream >> verification;
|
|
||||||
stream >> hash;
|
|
||||||
|
|
||||||
quint8 size;
|
quint8 size;
|
||||||
stream >> size;
|
stream >> size;
|
||||||
@ -82,7 +76,7 @@ QDataStream & Shared::ClientInfo::operator << (QDataStream& stream) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Shared::ClientInfo::valid() const {
|
bool Shared::ClientInfo::valid() const {
|
||||||
std::map<QString, QCryptographicHash::Algorithm>::const_iterator itr = hashes.find(hash);
|
std::map<QString, QCryptographicHash::Algorithm>::const_iterator itr = hashes.find(id.hash);
|
||||||
if (itr == hashes.end()) {
|
if (itr == hashes.end()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -98,7 +92,7 @@ bool Shared::ClientInfo::valid() const {
|
|||||||
|
|
||||||
QString result = calc.result().toBase64();
|
QString result = calc.result().toBase64();
|
||||||
|
|
||||||
return result == verification;
|
return result == id.verification;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDataStream& operator << (QDataStream& stream, const Shared::ClientInfo& info) {
|
QDataStream& operator << (QDataStream& stream, const Shared::ClientInfo& info) {
|
||||||
|
@ -24,11 +24,11 @@
|
|||||||
#include <QCryptographicHash>
|
#include <QCryptographicHash>
|
||||||
|
|
||||||
#include <shared/identity.h>
|
#include <shared/identity.h>
|
||||||
|
#include <shared/clientid.h>
|
||||||
|
|
||||||
namespace Shared {
|
namespace Shared {
|
||||||
|
|
||||||
class ClientInfo
|
class ClientInfo {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
ClientInfo();
|
ClientInfo();
|
||||||
|
|
||||||
@ -41,9 +41,7 @@ public:
|
|||||||
public:
|
public:
|
||||||
std::set<Identity> identities;
|
std::set<Identity> identities;
|
||||||
std::set<QString> extensions;
|
std::set<QString> extensions;
|
||||||
QString node;
|
ClientId id;
|
||||||
QString verification;
|
|
||||||
QString hash;
|
|
||||||
QString specificPresence;
|
QString specificPresence;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
Reference in New Issue
Block a user