Browse Source

Move network related code to core/net.

adaptive-webui-19844
Vladimir Golovnev (Glassez) 10 years ago
parent
commit
4b5e7e6168
  1. 14
      src/core/core.pri
  2. 2
      src/core/net/dnsupdater.cpp
  3. 5
      src/core/net/dnsupdater.h
  4. 69
      src/core/net/reverseresolution.cpp
  5. 67
      src/core/net/reverseresolution.h
  6. 4
      src/core/net/smtp.cpp
  7. 8
      src/core/net/smtp.h
  8. 4
      src/core/qtlibtorrent/qbtsession.cpp
  9. 1
      src/gui/gui.pri
  10. 4
      src/gui/options_imp.cpp
  11. 6
      src/gui/properties/peerlistwidget.cpp
  12. 8
      src/gui/properties/peerlistwidget.h
  13. 4
      src/webui/webui.cpp
  14. 14
      src/webui/webui.h

14
src/core/core.pri

@ -10,8 +10,6 @@ HEADERS += \
$$PWD/filesystemwatcher.h \ $$PWD/filesystemwatcher.h \
$$PWD/scannedfoldersmodel.h \ $$PWD/scannedfoldersmodel.h \
$$PWD/qinisettings.h \ $$PWD/qinisettings.h \
$$PWD/smtp.h \
$$PWD/dnsupdater.h \
$$PWD/logger.h \ $$PWD/logger.h \
$$PWD/preferences.h \ $$PWD/preferences.h \
$$PWD/qtracker.h \ $$PWD/qtracker.h \
@ -21,7 +19,10 @@ HEADERS += \
$$PWD/http/responsegenerator.h \ $$PWD/http/responsegenerator.h \
$$PWD/http/server.h \ $$PWD/http/server.h \
$$PWD/http/types.h \ $$PWD/http/types.h \
$$PWD/http/responsebuilder.h $$PWD/http/responsebuilder.h \
$$PWD/net/dnsupdater.h \
$$PWD/net/reverseresolution.h \
$$PWD/net/smtp.h
SOURCES += \ SOURCES += \
$$PWD/downloadthread.cpp \ $$PWD/downloadthread.cpp \
@ -29,8 +30,6 @@ SOURCES += \
$$PWD/torrentpersistentdata.cpp \ $$PWD/torrentpersistentdata.cpp \
$$PWD/misc.cpp \ $$PWD/misc.cpp \
$$PWD/fs_utils.cpp \ $$PWD/fs_utils.cpp \
$$PWD/smtp.cpp \
$$PWD/dnsupdater.cpp \
$$PWD/logger.cpp \ $$PWD/logger.cpp \
$$PWD/preferences.cpp \ $$PWD/preferences.cpp \
$$PWD/qtracker.cpp \ $$PWD/qtracker.cpp \
@ -38,4 +37,7 @@ SOURCES += \
$$PWD/http/requestparser.cpp \ $$PWD/http/requestparser.cpp \
$$PWD/http/responsegenerator.cpp \ $$PWD/http/responsegenerator.cpp \
$$PWD/http/server.cpp \ $$PWD/http/server.cpp \
$$PWD/http/responsebuilder.cpp $$PWD/http/responsebuilder.cpp \
$$PWD/net/dnsupdater.cpp \
$$PWD/net/reverseresolution.cpp \
$$PWD/net/smtp.cpp

2
src/core/dnsupdater.cpp → src/core/net/dnsupdater.cpp

@ -38,6 +38,8 @@
#include "dnsupdater.h" #include "dnsupdater.h"
#include "logger.h" #include "logger.h"
using namespace Net;
DNSUpdater::DNSUpdater(QObject *parent) : DNSUpdater::DNSUpdater(QObject *parent) :
QObject(parent), m_state(OK), m_service(DNS::NONE) QObject(parent), m_state(OK), m_service(DNS::NONE)
{ {

5
src/core/dnsupdater.h → src/core/net/dnsupdater.h

@ -38,6 +38,9 @@
#include <QTimer> #include <QTimer>
#include "preferences.h" #include "preferences.h"
namespace Net
{
/*! /*!
* Based on http://www.dyndns.com/developers/specs/ * Based on http://www.dyndns.com/developers/specs/
*/ */
@ -78,4 +81,6 @@ private:
enum State { OK, INVALID_CREDS, FATAL }; enum State { OK, INVALID_CREDS, FATAL };
}; };
}
#endif // DNSUPDATER_H #endif // DNSUPDATER_H

69
src/gui/reverseresolution.h → src/core/net/reverseresolution.cpp

@ -1,5 +1,5 @@
/* /*
* Bittorrent Client using Qt4 and libtorrent. * Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2006 Christophe Dumez * Copyright (C) 2006 Christophe Dumez
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
@ -28,14 +28,9 @@
* Contact : chris@qbittorrent.org * Contact : chris@qbittorrent.org
*/ */
#ifndef REVERSERESOLUTION_H
#define REVERSERESOLUTION_H
#include <QList>
#include <QCache>
#include <QDebug> #include <QDebug>
#include <QHostInfo> #include <QHostInfo>
#include "misc.h" #include <QString>
#include <boost/version.hpp> #include <boost/version.hpp>
#if BOOST_VERSION < 103500 #if BOOST_VERSION < 103500
@ -44,39 +39,45 @@
#include <boost/asio/ip/tcp.hpp> #include <boost/asio/ip/tcp.hpp>
#endif #endif
#include "reverseresolution.h"
const int CACHE_SIZE = 500; const int CACHE_SIZE = 500;
class ReverseResolution: public QObject { using namespace Net;
Q_OBJECT
Q_DISABLE_COPY(ReverseResolution) static inline bool isUsefulHostName(const QString &hostname, const QString &ip)
{
return (!hostname.isEmpty() && hostname != ip);
}
public: ReverseResolution::ReverseResolution(QObject *parent)
explicit ReverseResolution(QObject* parent): QObject(parent) { : QObject(parent)
{
m_cache.setMaxCost(CACHE_SIZE); m_cache.setMaxCost(CACHE_SIZE);
} }
~ReverseResolution() { ReverseResolution::~ReverseResolution()
{
qDebug("Deleting host name resolver..."); qDebug("Deleting host name resolver...");
} }
void resolve(const QString &ip) { void ReverseResolution::resolve(const QString &ip)
{
if (m_cache.contains(ip)) { if (m_cache.contains(ip)) {
const QString& hostname = *m_cache.object(ip); const QString &hostname = *m_cache.object(ip);
qDebug() << "Resolved host name using cache: " << ip << " -> " << hostname; qDebug() << "Resolved host name using cache: " << ip << " -> " << hostname;
if (isUsefulHostName(hostname, ip)) if (isUsefulHostName(hostname, ip))
emit ip_resolved(ip, hostname); emit ipResolved(ip, hostname);
return;
} }
else {
// Actually resolve the ip // Actually resolve the ip
m_lookups.insert(QHostInfo::lookupHost(ip, this, SLOT(hostResolved(QHostInfo))), ip); m_lookups.insert(QHostInfo::lookupHost(ip, this, SLOT(hostResolved(QHostInfo))), ip);
} }
}
signals: void ReverseResolution::hostResolved(const QHostInfo &host)
void ip_resolved(const QString &ip, const QString &hostname); {
const QString &ip = m_lookups.take(host.lookupId());
private slots:
void hostResolved(const QHostInfo& host) {
const QString& ip = m_lookups.take(host.lookupId());
Q_ASSERT(!ip.isNull()); Q_ASSERT(!ip.isNull());
if (host.error() != QHostInfo::NoError) { if (host.error() != QHostInfo::NoError) {
@ -84,22 +85,10 @@ private slots:
return; return;
} }
const QString& hostname = host.hostName(); const QString &hostname = host.hostName();
qDebug() << Q_FUNC_INFO << ip << QString("->") << hostname; qDebug() << Q_FUNC_INFO << ip << QString("->") << hostname;
m_cache.insert(ip, new QString(hostname)); m_cache.insert(ip, new QString(hostname));
if (isUsefulHostName(hostname, ip)) if (isUsefulHostName(hostname, ip))
emit ip_resolved(ip, hostname); emit ipResolved(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

67
src/core/net/reverseresolution.h

@ -0,0 +1,67 @@
/*
* Bittorrent Client using Qt 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 NET_REVERSERESOLUTION_H
#define NET_REVERSERESOLUTION_H
#include <QCache>
#include <QObject>
QT_BEGIN_NAMESPACE
class QHostInfo;
class QString;
QT_END_NAMESPACE
namespace Net
{
class ReverseResolution : public QObject
{
Q_OBJECT
Q_DISABLE_COPY(ReverseResolution)
public:
explicit ReverseResolution(QObject *parent = 0);
~ReverseResolution();
void resolve(const QString &ip);
signals:
void ipResolved(const QString &ip, const QString &hostname);
private slots:
void hostResolved(const QHostInfo &host);
private:
QHash<int /* LookupID */, QString /* IP */> m_lookups;
QCache<QString /* IP */, QString /* HostName */> m_cache;
};
}
#endif // NET_REVERSERESOLUTION_H

4
src/core/smtp.cpp → src/core/net/smtp.cpp

@ -1,5 +1,5 @@
/* /*
* Bittorrent Client using Qt4 and libtorrent. * Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2011 Christophe Dumez * Copyright (C) 2011 Christophe Dumez
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
@ -89,6 +89,8 @@ QByteArray determineFQDN()
} }
} // namespace } // namespace
using namespace Net;
Smtp::Smtp(QObject *parent): QObject(parent), Smtp::Smtp(QObject *parent): QObject(parent),
state(Init), use_ssl(false) { state(Init), use_ssl(false) {
#ifndef QT_NO_OPENSSL #ifndef QT_NO_OPENSSL

8
src/core/smtp.h → src/core/net/smtp.h

@ -1,5 +1,5 @@
/* /*
* Bittorrent Client using Qt4 and libtorrent. * Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2011 Christophe Dumez * Copyright (C) 2011 Christophe Dumez
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
@ -50,6 +50,9 @@ class QTcpSocket;
class QTextCodec; class QTextCodec;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace Net
{
class Smtp : public QObject { class Smtp : public QObject {
Q_OBJECT Q_OBJECT
@ -96,4 +99,7 @@ private:
QString username; QString username;
QString password; QString password;
}; };
}
#endif #endif

4
src/core/qtlibtorrent/qbtsession.cpp

@ -38,7 +38,7 @@
#include <QProcess> #include <QProcess>
#include <QCoreApplication> #include <QCoreApplication>
#include "smtp.h" #include "core/net/smtp.h"
#include "filesystemwatcher.h" #include "filesystemwatcher.h"
#include "torrentspeedmonitor.h" #include "torrentspeedmonitor.h"
#include "torrentstatistics.h" #include "torrentstatistics.h"
@ -2046,7 +2046,7 @@ void QBtSession::sendNotificationEmail(const QTorrentHandle &h) {
content += tr("The torrent was downloaded in %1.", "The torrent was downloaded in 1 hour and 20 seconds").arg(misc::userFriendlyDuration(status.active_time)) + "\n\n\n"; content += tr("The torrent was downloaded in %1.", "The torrent was downloaded in 1 hour and 20 seconds").arg(misc::userFriendlyDuration(status.active_time)) + "\n\n\n";
content += tr("Thank you for using qBittorrent.") + "\n"; content += tr("Thank you for using qBittorrent.") + "\n";
// Send the notification email // Send the notification email
Smtp *sender = new Smtp(this); Net::Smtp *sender = new Net::Smtp(this);
sender->sendMail("notification@qbittorrent.org", Preferences::instance()->getMailNotificationEmail(), tr("[qBittorrent] %1 has finished downloading").arg(h.name()), content); sender->sendMail("notification@qbittorrent.org", Preferences::instance()->getMailNotificationEmail(), tr("[qBittorrent] %1 has finished downloading").arg(h.name()), content);
} }

1
src/gui/gui.pri

@ -22,7 +22,6 @@ HEADERS += \
$$PWD/torrentcontenttreeview.h \ $$PWD/torrentcontenttreeview.h \
$$PWD/deletionconfirmationdlg.h \ $$PWD/deletionconfirmationdlg.h \
$$PWD/statusbar.h \ $$PWD/statusbar.h \
$$PWD/reverseresolution.h \
$$PWD/ico.h \ $$PWD/ico.h \
$$PWD/speedlimitdlg.h \ $$PWD/speedlimitdlg.h \
$$PWD/about_imp.h \ $$PWD/about_imp.h \

4
src/gui/options_imp.cpp

@ -48,7 +48,7 @@
#include "scannedfoldersmodel.h" #include "scannedfoldersmodel.h"
#include "qbtsession.h" #include "qbtsession.h"
#include "iconprovider.h" #include "iconprovider.h"
#include "dnsupdater.h" #include "core/net/dnsupdater.h"
#ifndef QT_NO_OPENSSL #ifndef QT_NO_OPENSSL
#include <QSslKey> #include <QSslKey>
@ -1239,7 +1239,7 @@ void options_imp::on_btnWebUiKey_clicked() {
} }
void options_imp::on_registerDNSBtn_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() { void options_imp::on_IpFilterRefreshBtn_clicked() {

6
src/gui/properties/peerlistwidget.cpp

@ -31,7 +31,7 @@
#include "peerlistwidget.h" #include "peerlistwidget.h"
#include "peerlistdelegate.h" #include "peerlistdelegate.h"
#include "peerlistsortmodel.h" #include "peerlistsortmodel.h"
#include "reverseresolution.h" #include "core/net/reverseresolution.h"
#include "preferences.h" #include "preferences.h"
#include "propertieswidget.h" #include "propertieswidget.h"
#include "geoipmanager.h" #include "geoipmanager.h"
@ -126,8 +126,8 @@ void PeerListWidget::updatePeerHostNameResolutionState()
{ {
if (Preferences::instance()->resolvePeerHostNames()) { if (Preferences::instance()->resolvePeerHostNames()) {
if (!m_resolver) { if (!m_resolver) {
m_resolver = new ReverseResolution(this); m_resolver = new Net::ReverseResolution(this);
connect(m_resolver, SIGNAL(ip_resolved(QString,QString)), SLOT(handleResolved(QString,QString))); connect(m_resolver, SIGNAL(ipResolved(QString,QString)), SLOT(handleResolved(QString,QString)));
loadPeers(m_properties->getCurrentTorrent(), true); loadPeers(m_properties->getCurrentTorrent(), true);
} }
} else { } else {

8
src/gui/properties/peerlistwidget.h

@ -37,9 +37,13 @@
#include <QSet> #include <QSet>
#include <libtorrent/version.hpp> #include <libtorrent/version.hpp>
namespace Net
{
class ReverseResolution;
}
class PeerListDelegate; class PeerListDelegate;
class PeerListSortModel; class PeerListSortModel;
class ReverseResolution;
class PropertiesWidget; class PropertiesWidget;
class QTorrentHandle; class QTorrentHandle;
@ -103,7 +107,7 @@ private:
QHash<QString, QStandardItem*> m_peerItems; QHash<QString, QStandardItem*> m_peerItems;
QHash<QString, boost::asio::ip::tcp::endpoint> m_peerEndpoints; QHash<QString, boost::asio::ip::tcp::endpoint> m_peerEndpoints;
QSet<QString> m_missingFlags; QSet<QString> m_missingFlags;
QPointer<ReverseResolution> m_resolver; QPointer<Net::ReverseResolution> m_resolver;
PropertiesWidget *m_properties; PropertiesWidget *m_properties;
bool m_displayFlags; bool m_displayFlags;
}; };

4
src/webui/webui.cpp

@ -29,7 +29,7 @@
#include "webui.h" #include "webui.h"
#include "http/server.h" #include "http/server.h"
#include "webapplication.h" #include "webapplication.h"
#include "dnsupdater.h" #include "core/net/dnsupdater.h"
#include "preferences.h" #include "preferences.h"
#include "logger.h" #include "logger.h"
@ -82,7 +82,7 @@ void WebUI::init()
// DynDNS // DynDNS
if (pref->isDynDNSEnabled()) { if (pref->isDynDNSEnabled()) {
if (!dynDNSUpdater_) if (!dynDNSUpdater_)
dynDNSUpdater_ = new DNSUpdater(this); dynDNSUpdater_ = new Net::DNSUpdater(this);
else else
dynDNSUpdater_->updateCredentials(); dynDNSUpdater_->updateCredentials();
} }

14
src/webui/webui.h

@ -32,8 +32,16 @@
#include <QObject> #include <QObject>
#include <QPointer> #include <QPointer>
namespace Http { class Server; } namespace Http
class DNSUpdater; {
class Server;
}
namespace Net
{
class DNSUpdater;
}
class AbstractWebApplication; class AbstractWebApplication;
class WebUI : public QObject class WebUI : public QObject
@ -48,7 +56,7 @@ private slots:
private: private:
QPointer<Http::Server> httpServer_; QPointer<Http::Server> httpServer_;
QPointer<DNSUpdater> dynDNSUpdater_; QPointer<Net::DNSUpdater> dynDNSUpdater_;
QPointer<AbstractWebApplication> webapp_; QPointer<AbstractWebApplication> webapp_;
}; };

Loading…
Cancel
Save