mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-02 18:04:32 +00:00
Move network related code to core/net.
This commit is contained in:
parent
3eeed813d6
commit
4b5e7e6168
@ -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
|
||||||
|
@ -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)
|
||||||
{
|
{
|
@ -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
|
@ -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,62 +39,56 @@
|
|||||||
#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)
|
|
||||||
|
|
||||||
public:
|
static inline bool isUsefulHostName(const QString &hostname, const QString &ip)
|
||||||
explicit ReverseResolution(QObject* parent): QObject(parent) {
|
{
|
||||||
|
return (!hostname.isEmpty() && hostname != ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReverseResolution::ReverseResolution(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;
|
|
||||||
}
|
}
|
||||||
// Actually resolve the ip
|
else {
|
||||||
m_lookups.insert(QHostInfo::lookupHost(ip, this, SLOT(hostResolved(QHostInfo))), ip);
|
// Actually resolve the 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) {
|
||||||
qDebug() << "DNS Reverse resolution error: " << host.errorString();
|
qDebug() << "DNS Reverse resolution error: " << host.errorString();
|
||||||
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
Normal file
67
src/core/net/reverseresolution.h
Normal file
@ -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
|
@ -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
|
@ -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
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 \
|
||||||
|
@ -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() {
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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…
x
Reference in New Issue
Block a user