mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-22 09:16:05 +03:00
FEATURE: IP address reported to trackers is now customizable
This commit is contained in:
parent
76d3e9033d
commit
4c7a5633da
4 changed files with 40 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v2.7.0
|
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v2.7.0
|
||||||
- FEATURE: Added auto-shutdown confirmation dialog
|
- FEATURE: Added auto-shutdown confirmation dialog
|
||||||
- FEATURE: Added option to skip torrent deletion confirmation (Ville Kiiskinen)
|
- FEATURE: Added option to skip torrent deletion confirmation (Ville Kiiskinen)
|
||||||
|
- FEATURE: IP address reported to trackers is now customizable
|
||||||
|
|
||||||
* Sun Jan 9 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.0
|
* Sun Jan 9 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.0
|
||||||
- FEATURE: Use system icons (Linux, Qt >= 4.6)
|
- FEATURE: Use system icons (Linux, Qt >= 4.6)
|
||||||
|
|
|
@ -4,14 +4,16 @@
|
||||||
#include <QTableWidget>
|
#include <QTableWidget>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
|
#include <QHostAddress>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
|
#include <QLineEdit>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QNetworkInterface>
|
#include <QNetworkInterface>
|
||||||
#include <libtorrent/version.hpp>
|
#include <libtorrent/version.hpp>
|
||||||
#include "preferences.h"
|
#include "preferences.h"
|
||||||
|
|
||||||
enum AdvSettingsCols {PROPERTY, VALUE};
|
enum AdvSettingsCols {PROPERTY, VALUE};
|
||||||
enum AdvSettingsRows {DISK_CACHE, OUTGOING_PORT_MIN, OUTGOING_PORT_MAX, IGNORE_LIMIT_LAN, COUNT_OVERHEAD, RECHECK_COMPLETED, LIST_REFRESH, RESOLVE_COUNTRIES, RESOLVE_HOSTS, MAX_HALF_OPEN, SUPER_SEEDING, NETWORK_IFACE, PROGRAM_NOTIFICATIONS, TRACKER_STATUS, TRACKER_PORT,
|
enum AdvSettingsRows {DISK_CACHE, OUTGOING_PORT_MIN, OUTGOING_PORT_MAX, IGNORE_LIMIT_LAN, COUNT_OVERHEAD, RECHECK_COMPLETED, LIST_REFRESH, RESOLVE_COUNTRIES, RESOLVE_HOSTS, MAX_HALF_OPEN, SUPER_SEEDING, NETWORK_IFACE, NETWORK_ADDRESS, PROGRAM_NOTIFICATIONS, TRACKER_STATUS, TRACKER_PORT,
|
||||||
#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
|
#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
|
||||||
UPDATE_CHECK,
|
UPDATE_CHECK,
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,6 +36,7 @@ private:
|
||||||
#if defined(Q_WS_X11) && (QT_VERSION >= QT_VERSION_CHECK(4,6,0))
|
#if defined(Q_WS_X11) && (QT_VERSION >= QT_VERSION_CHECK(4,6,0))
|
||||||
QCheckBox *cb_use_icon_theme;
|
QCheckBox *cb_use_icon_theme;
|
||||||
#endif
|
#endif
|
||||||
|
QLineEdit *txt_network_address;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AdvancedSettings(QWidget *parent=0): QTableWidget(parent) {
|
AdvancedSettings(QWidget *parent=0): QTableWidget(parent) {
|
||||||
|
@ -75,6 +78,7 @@ public:
|
||||||
#if defined(Q_WS_X11) && (QT_VERSION >= QT_VERSION_CHECK(4,6,0))
|
#if defined(Q_WS_X11) && (QT_VERSION >= QT_VERSION_CHECK(4,6,0))
|
||||||
delete cb_use_icon_theme;
|
delete cb_use_icon_theme;
|
||||||
#endif
|
#endif
|
||||||
|
delete txt_network_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -109,6 +113,12 @@ public slots:
|
||||||
} else {
|
} else {
|
||||||
pref.setNetworkInterface(combo_iface->currentText());
|
pref.setNetworkInterface(combo_iface->currentText());
|
||||||
}
|
}
|
||||||
|
// Network address
|
||||||
|
QHostAddress addr(txt_network_address->text().trimmed());
|
||||||
|
if(addr.isNull())
|
||||||
|
pref.setNetworkAddress("");
|
||||||
|
else
|
||||||
|
pref.setNetworkAddress(addr.toString());
|
||||||
// Program notification
|
// Program notification
|
||||||
pref.useProgramNotification(cb_program_notifications->isChecked());
|
pref.useProgramNotification(cb_program_notifications->isChecked());
|
||||||
// Tracker
|
// Tracker
|
||||||
|
@ -224,6 +234,12 @@ protected slots:
|
||||||
}
|
}
|
||||||
connect(combo_iface, SIGNAL(currentIndexChanged(int)), this, SLOT(emitSettingsChanged()));
|
connect(combo_iface, SIGNAL(currentIndexChanged(int)), this, SLOT(emitSettingsChanged()));
|
||||||
setCellWidget(NETWORK_IFACE, VALUE, combo_iface);
|
setCellWidget(NETWORK_IFACE, VALUE, combo_iface);
|
||||||
|
// Network address
|
||||||
|
setItem(NETWORK_ADDRESS, PROPERTY, new QTableWidgetItem(tr("IP Address to report to trackers (requires restart)")));
|
||||||
|
txt_network_address = new QLineEdit;
|
||||||
|
txt_network_address->setText(pref.getNetworkAddress());
|
||||||
|
connect(txt_network_address, SIGNAL(textChanged(QString)), this, SLOT(emitSettingsChanged()));
|
||||||
|
setCellWidget(NETWORK_ADDRESS, VALUE, txt_network_address);
|
||||||
// Program notifications
|
// Program notifications
|
||||||
setItem(PROGRAM_NOTIFICATIONS, PROPERTY, new QTableWidgetItem(tr("Display program notification balloons")));
|
setItem(PROGRAM_NOTIFICATIONS, PROPERTY, new QTableWidgetItem(tr("Display program notification balloons")));
|
||||||
cb_program_notifications = new QCheckBox();
|
cb_program_notifications = new QCheckBox();
|
||||||
|
|
|
@ -846,6 +846,14 @@ public:
|
||||||
return value(QString::fromUtf8("Preferences/Connection/Interface"), QString()).toString();
|
return value(QString::fromUtf8("Preferences/Connection/Interface"), QString()).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setNetworkAddress(const QString& addr) {
|
||||||
|
setValue(QString::fromUtf8("Preferences/Connection/InetAddress"), addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getNetworkAddress() const {
|
||||||
|
return value(QString::fromUtf8("Preferences/Connection/InetAddress"), QString()).toString();
|
||||||
|
}
|
||||||
|
|
||||||
#if LIBTORRENT_VERSION_MINOR > 14
|
#if LIBTORRENT_VERSION_MINOR > 14
|
||||||
bool isSuperSeedingEnabled() const {
|
bool isSuperSeedingEnabled() const {
|
||||||
return value(QString::fromUtf8("Preferences/Advanced/SuperSeeding"), false).toBool();
|
return value(QString::fromUtf8("Preferences/Advanced/SuperSeeding"), false).toBool();
|
||||||
|
|
|
@ -408,6 +408,16 @@ void QBtSession::configureSession() {
|
||||||
sessionSettings.ignore_limits_on_local_network = pref.ignoreLimitsOnLAN();
|
sessionSettings.ignore_limits_on_local_network = pref.ignoreLimitsOnLAN();
|
||||||
// Include overhead in transfer limits
|
// Include overhead in transfer limits
|
||||||
sessionSettings.rate_limit_ip_overhead = pref.includeOverheadInLimits();
|
sessionSettings.rate_limit_ip_overhead = pref.includeOverheadInLimits();
|
||||||
|
// IP address to announce to trackers
|
||||||
|
QString announce_ip = pref.getNetworkAddress();
|
||||||
|
if(!announce_ip.isEmpty()) {
|
||||||
|
boost::system::error_code ec;
|
||||||
|
boost::asio::ip::address addr = boost::asio::ip::address::from_string(announce_ip.toStdString(), ec);
|
||||||
|
if(!ec) {
|
||||||
|
addConsoleMessage(tr("Reporting IP address %1 to trackers...").arg(announce_ip));
|
||||||
|
sessionSettings.announce_ip = addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Super seeding
|
// Super seeding
|
||||||
#if LIBTORRENT_VERSION_MINOR > 14
|
#if LIBTORRENT_VERSION_MINOR > 14
|
||||||
sessionSettings.strict_super_seeding = pref.isSuperSeedingEnabled();
|
sessionSettings.strict_super_seeding = pref.isSuperSeedingEnabled();
|
||||||
|
@ -1683,12 +1693,14 @@ void QBtSession::setAppendqBExtension(bool append) {
|
||||||
// Set the ports range in which is chosen the port the Bittorrent
|
// Set the ports range in which is chosen the port the Bittorrent
|
||||||
// session will listen to
|
// session will listen to
|
||||||
void QBtSession::setListeningPort(int port) {
|
void QBtSession::setListeningPort(int port) {
|
||||||
|
Preferences pref;
|
||||||
std::pair<int,int> ports(port, port);
|
std::pair<int,int> ports(port, port);
|
||||||
const QString& iface_name = Preferences().getNetworkInterface();
|
const QString iface_name = pref.getNetworkInterface();
|
||||||
if(iface_name.isEmpty()) {
|
if(iface_name.isEmpty()) {
|
||||||
s->listen_on(ports);
|
s->listen_on(ports);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Attempt to listen on provided interface
|
||||||
const QNetworkInterface network_iface = QNetworkInterface::interfaceFromName(iface_name);
|
const QNetworkInterface network_iface = QNetworkInterface::interfaceFromName(iface_name);
|
||||||
if(!network_iface.isValid()) {
|
if(!network_iface.isValid()) {
|
||||||
qDebug("Invalid network interface: %s", qPrintable(iface_name));
|
qDebug("Invalid network interface: %s", qPrintable(iface_name));
|
||||||
|
@ -1701,7 +1713,7 @@ void QBtSession::setListeningPort(int port) {
|
||||||
qDebug("This network interface has %d IP addresses", network_iface.addressEntries().size());
|
qDebug("This network interface has %d IP addresses", network_iface.addressEntries().size());
|
||||||
foreach(const QNetworkAddressEntry &entry, network_iface.addressEntries()) {
|
foreach(const QNetworkAddressEntry &entry, network_iface.addressEntries()) {
|
||||||
qDebug("Trying to listen on IP %s (%s)", qPrintable(entry.ip().toString()), qPrintable(iface_name));
|
qDebug("Trying to listen on IP %s (%s)", qPrintable(entry.ip().toString()), qPrintable(iface_name));
|
||||||
if(s->listen_on(ports, qPrintable(entry.ip().toString()))) {
|
if(s->listen_on(ports, entry.ip().toString().toAscii().constData())) {
|
||||||
ip = entry.ip().toString();
|
ip = entry.ip().toString();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue