Browse Source

FEATURE: IP address reported to trackers is now customizable

adaptive-webui-19844
Christophe Dumez 14 years ago
parent
commit
4c7a5633da
  1. 1
      Changelog
  2. 18
      src/preferences/advancedsettings.h
  3. 8
      src/preferences/preferences.h
  4. 16
      src/qtlibtorrent/qbtsession.cpp

1
Changelog

@ -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)

18
src/preferences/advancedsettings.h

@ -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();

8
src/preferences/preferences.h

@ -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();

16
src/qtlibtorrent/qbtsession.cpp

@ -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…
Cancel
Save