1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
qTox/src/net/toxdns.h
Zetok Zalbavar 67e9aeec63
Fix incorrect copyright headers
The qTox Project is not associated with the Tox Project in any way, with the
exception of "qTox" using the Tox Projet's "toxcore" collection of libraries.
In particular, the Tox Projet does not own copyright over the qTox Project's
"qTox" collection of software, source code, and assets.
The qTox Project's assets are under the sole copyright of the qTox
contributors, and no partiular rights are granted to the Tox Project.
2015-06-06 14:51:28 +01:00

72 lines
2.4 KiB
C++

/*
Copyright © 2014-2015 by The qTox Project
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre 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.
qTox 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 qTox. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QTOXDNS_H
#define QTOXDNS_H
#include "src/core/corestructs.h"
#include "src/core/toxid.h"
#include <QDnsLookup>
#include <QObject>
/// Tox1 is not encrypted, it's unsafe
#define TOX1_SILENT_FALLBACK 0
/// That said if the user insists ...
#define TOX1_ASK_FALLBACK 1
/// Handles tox1 and tox3 DNS queries
class ToxDNS : public QObject
{
Q_OBJECT
public:
struct tox3_server ///< Represents a tox3 server
{
tox3_server()=default;
tox3_server(const char* _name, uint8_t _pk[32]):name{_name},pubkey{_pk}{}
const char* name; ///< Hostname of the server, e.g. toxme.se
uint8_t* pubkey; ///< Public key of the tox3 server, usually 256bit long
};
public:
/// Tries to map a text string to a ToxId struct, will query Tox DNS records if necessary
static ToxId resolveToxAddress(const QString& address, bool silent=true);
static QString queryTox1(const QString& record, bool silent=true); ///< Record should look like user@domain.tld. Do *NOT* use tox1 without a good reason, it's unsafe.
static QString queryTox3(const tox3_server& server, const QString& record, bool silent=true); ///< Record should look like user@domain.tld, will *NOT* fallback on queryTox1 anymore
protected:
static void showWarning(const QString& message);
ToxDNS()=default;
private:
/// Try to fetch the first entry of the given TXT record
/// Returns an empty object on failure. May block for up to ~3s
/// May display message boxes on error if silent if false
static QByteArray fetchLastTextRecord(const QString& record, bool silent=true);
public:
static const tox3_server pinnedServers[2];
};
#endif // QTOXDNS_H