mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-22 16:37:21 -06:00
Move network related code to core/net.
This commit is contained in:
@@ -22,7 +22,6 @@ HEADERS += \
|
||||
$$PWD/torrentcontenttreeview.h \
|
||||
$$PWD/deletionconfirmationdlg.h \
|
||||
$$PWD/statusbar.h \
|
||||
$$PWD/reverseresolution.h \
|
||||
$$PWD/ico.h \
|
||||
$$PWD/speedlimitdlg.h \
|
||||
$$PWD/about_imp.h \
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
#include "scannedfoldersmodel.h"
|
||||
#include "qbtsession.h"
|
||||
#include "iconprovider.h"
|
||||
#include "dnsupdater.h"
|
||||
#include "core/net/dnsupdater.h"
|
||||
|
||||
#ifndef QT_NO_OPENSSL
|
||||
#include <QSslKey>
|
||||
@@ -1239,7 +1239,7 @@ void options_imp::on_btnWebUiKey_clicked() {
|
||||
}
|
||||
|
||||
void options_imp::on_registerDNSBtn_clicked() {
|
||||
QDesktopServices::openUrl(DNSUpdater::getRegistrationUrl(comboDNSService->currentIndex()));
|
||||
QDesktopServices::openUrl(Net::DNSUpdater::getRegistrationUrl(comboDNSService->currentIndex()));
|
||||
}
|
||||
|
||||
void options_imp::on_IpFilterRefreshBtn_clicked() {
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
#include "peerlistwidget.h"
|
||||
#include "peerlistdelegate.h"
|
||||
#include "peerlistsortmodel.h"
|
||||
#include "reverseresolution.h"
|
||||
#include "core/net/reverseresolution.h"
|
||||
#include "preferences.h"
|
||||
#include "propertieswidget.h"
|
||||
#include "geoipmanager.h"
|
||||
@@ -126,8 +126,8 @@ void PeerListWidget::updatePeerHostNameResolutionState()
|
||||
{
|
||||
if (Preferences::instance()->resolvePeerHostNames()) {
|
||||
if (!m_resolver) {
|
||||
m_resolver = new ReverseResolution(this);
|
||||
connect(m_resolver, SIGNAL(ip_resolved(QString,QString)), SLOT(handleResolved(QString,QString)));
|
||||
m_resolver = new Net::ReverseResolution(this);
|
||||
connect(m_resolver, SIGNAL(ipResolved(QString,QString)), SLOT(handleResolved(QString,QString)));
|
||||
loadPeers(m_properties->getCurrentTorrent(), true);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -37,9 +37,13 @@
|
||||
#include <QSet>
|
||||
#include <libtorrent/version.hpp>
|
||||
|
||||
namespace Net
|
||||
{
|
||||
class ReverseResolution;
|
||||
}
|
||||
|
||||
class PeerListDelegate;
|
||||
class PeerListSortModel;
|
||||
class ReverseResolution;
|
||||
class PropertiesWidget;
|
||||
class QTorrentHandle;
|
||||
|
||||
@@ -103,7 +107,7 @@ private:
|
||||
QHash<QString, QStandardItem*> m_peerItems;
|
||||
QHash<QString, boost::asio::ip::tcp::endpoint> m_peerEndpoints;
|
||||
QSet<QString> m_missingFlags;
|
||||
QPointer<ReverseResolution> m_resolver;
|
||||
QPointer<Net::ReverseResolution> m_resolver;
|
||||
PropertiesWidget *m_properties;
|
||||
bool m_displayFlags;
|
||||
};
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt4 and libtorrent.
|
||||
* Copyright (C) 2006 Christophe Dumez
|
||||
*
|
||||
* 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 2
|
||||
* 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give permission to
|
||||
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||
* modified versions of it that use the same license as the "OpenSSL" library),
|
||||
* and distribute the linked executables. You must obey the GNU General Public
|
||||
* License in all respects for all of the code used other than "OpenSSL". If you
|
||||
* modify file(s), you may extend this exception to your version of the file(s),
|
||||
* but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
* exception statement from your version.
|
||||
*
|
||||
* Contact : chris@qbittorrent.org
|
||||
*/
|
||||
|
||||
#ifndef REVERSERESOLUTION_H
|
||||
#define REVERSERESOLUTION_H
|
||||
|
||||
#include <QList>
|
||||
#include <QCache>
|
||||
#include <QDebug>
|
||||
#include <QHostInfo>
|
||||
#include "misc.h"
|
||||
|
||||
#include <boost/version.hpp>
|
||||
#if BOOST_VERSION < 103500
|
||||
#include <libtorrent/asio/ip/tcp.hpp>
|
||||
#else
|
||||
#include <boost/asio/ip/tcp.hpp>
|
||||
#endif
|
||||
|
||||
const int CACHE_SIZE = 500;
|
||||
|
||||
class ReverseResolution: public QObject {
|
||||
Q_OBJECT
|
||||
Q_DISABLE_COPY(ReverseResolution)
|
||||
|
||||
public:
|
||||
explicit ReverseResolution(QObject* parent): QObject(parent) {
|
||||
m_cache.setMaxCost(CACHE_SIZE);
|
||||
}
|
||||
|
||||
~ReverseResolution() {
|
||||
qDebug("Deleting host name resolver...");
|
||||
}
|
||||
|
||||
void resolve(const QString &ip) {
|
||||
if (m_cache.contains(ip)) {
|
||||
const QString& hostname = *m_cache.object(ip);
|
||||
qDebug() << "Resolved host name using cache: " << ip << " -> " << hostname;
|
||||
if (isUsefulHostName(hostname, ip))
|
||||
emit ip_resolved(ip, hostname);
|
||||
return;
|
||||
}
|
||||
// Actually resolve the ip
|
||||
m_lookups.insert(QHostInfo::lookupHost(ip, this, SLOT(hostResolved(QHostInfo))), ip);
|
||||
}
|
||||
|
||||
signals:
|
||||
void ip_resolved(const QString &ip, const QString &hostname);
|
||||
|
||||
private slots:
|
||||
void hostResolved(const QHostInfo& host) {
|
||||
const QString& ip = m_lookups.take(host.lookupId());
|
||||
Q_ASSERT(!ip.isNull());
|
||||
|
||||
if (host.error() != QHostInfo::NoError) {
|
||||
qDebug() << "DNS Reverse resolution error: " << host.errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
const QString& hostname = host.hostName();
|
||||
|
||||
qDebug() << Q_FUNC_INFO << ip << QString("->") << hostname;
|
||||
m_cache.insert(ip, new QString(hostname));
|
||||
if (isUsefulHostName(hostname, ip))
|
||||
emit ip_resolved(ip, hostname);
|
||||
}
|
||||
|
||||
private:
|
||||
static inline bool isUsefulHostName(const QString& hostname, const QString& ip) {
|
||||
return (!hostname.isEmpty() && hostname != ip);
|
||||
}
|
||||
|
||||
QHash<int /* LookupID */, QString /* IP */> m_lookups;
|
||||
QCache<QString /* IP */, QString /* HostName */> m_cache;
|
||||
};
|
||||
|
||||
|
||||
#endif // REVERSERESOLUTION_H
|
||||
Reference in New Issue
Block a user