forked from blue/squawk
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;
|
||||
if (requested.count(id) == 0 && !cache->checkRecord(id)) {
|
||||
Shared::ClientInfo& info = requested.insert(std::make_pair(id, Shared::ClientInfo())).first->second;
|
||||
info.node = node;
|
||||
info.verification = ver;
|
||||
info.hash = hash;
|
||||
info.id.node = node;
|
||||
info.id.verification = ver;
|
||||
info.id.hash = hash;
|
||||
emit requestClientInfo(id);
|
||||
return false;
|
||||
}
|
||||
|
@ -1,33 +1,43 @@
|
||||
target_sources(squawk PRIVATE
|
||||
enums.h
|
||||
set(SOURCE_FILES
|
||||
global.cpp
|
||||
global.h
|
||||
exception.cpp
|
||||
exception.h
|
||||
icons.cpp
|
||||
icons.h
|
||||
message.cpp
|
||||
message.h
|
||||
messageinfo.cpp
|
||||
messageinfo.h
|
||||
order.h
|
||||
shared.h
|
||||
utils.cpp
|
||||
utils.h
|
||||
vcard.cpp
|
||||
vcard.h
|
||||
pathcheck.cpp
|
||||
pathcheck.h
|
||||
clientinfo.h
|
||||
clientinfo.cpp
|
||||
identity.h
|
||||
identity.cpp
|
||||
form.h
|
||||
form.cpp
|
||||
field.h
|
||||
field.cpp
|
||||
keyinfo.cpp
|
||||
keyinfo.h
|
||||
info.cpp
|
||||
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():
|
||||
identities(),
|
||||
extensions(),
|
||||
node(),
|
||||
verification(),
|
||||
hash(),
|
||||
id(),
|
||||
specificPresence() {}
|
||||
|
||||
QString Shared::ClientInfo::getId() const {
|
||||
return node + "/" + verification;
|
||||
return id.getId();
|
||||
}
|
||||
|
||||
|
||||
QDataStream & Shared::ClientInfo::operator >> (QDataStream& stream) const {
|
||||
stream << node;
|
||||
stream << verification;
|
||||
stream << hash;
|
||||
stream << id;
|
||||
stream << (quint8)identities.size();
|
||||
for (const Shared::Identity& identity : identities) {
|
||||
stream << identity;
|
||||
@ -59,9 +55,7 @@ QDataStream & Shared::ClientInfo::operator >> (QDataStream& stream) const {
|
||||
}
|
||||
|
||||
QDataStream & Shared::ClientInfo::operator << (QDataStream& stream) {
|
||||
stream >> node;
|
||||
stream >> verification;
|
||||
stream >> hash;
|
||||
stream >> id;
|
||||
|
||||
quint8 size;
|
||||
stream >> size;
|
||||
@ -82,7 +76,7 @@ QDataStream & Shared::ClientInfo::operator << (QDataStream& stream) {
|
||||
}
|
||||
|
||||
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()) {
|
||||
return false;
|
||||
}
|
||||
@ -98,7 +92,7 @@ bool Shared::ClientInfo::valid() const {
|
||||
|
||||
QString result = calc.result().toBase64();
|
||||
|
||||
return result == verification;
|
||||
return result == id.verification;
|
||||
}
|
||||
|
||||
QDataStream& operator << (QDataStream& stream, const Shared::ClientInfo& info) {
|
||||
|
@ -24,11 +24,11 @@
|
||||
#include <QCryptographicHash>
|
||||
|
||||
#include <shared/identity.h>
|
||||
#include <shared/clientid.h>
|
||||
|
||||
namespace Shared {
|
||||
|
||||
class ClientInfo
|
||||
{
|
||||
class ClientInfo {
|
||||
public:
|
||||
ClientInfo();
|
||||
|
||||
@ -41,9 +41,7 @@ public:
|
||||
public:
|
||||
std::set<Identity> identities;
|
||||
std::set<QString> extensions;
|
||||
QString node;
|
||||
QString verification;
|
||||
QString hash;
|
||||
ClientId id;
|
||||
QString specificPresence;
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user