diff --git a/src/eventmanager.cpp b/src/eventmanager.cpp index 95a909c59..25b27f7a8 100644 --- a/src/eventmanager.cpp +++ b/src/eventmanager.cpp @@ -189,6 +189,10 @@ void EventManager::setGlobalPreferences(QVariantMap m) const { // Bittorrent if(m.contains("dht")) Preferences::setDHTEnabled(m["dht"].toBool()); + if(m.contains("dhtSameAsBT")) + Preferences::setDHTPortSameAsBT(m["dhtSameAsBT"].toBool()); + if(m.contains("dht_port")) + Preferences::setDHTPort(m["dht_port"].toInt()); if(m.contains("pex")) Preferences::setPeXEnabled(m["pex"].toBool()); qDebug("Pex support: %d", (int)m["pex"].toBool()); @@ -274,6 +278,8 @@ QVariantMap EventManager::getGlobalPreferences() const { data["max_uploads_per_torrent"] = Preferences::getMaxUploadsPerTorrent(); // Bittorrent data["dht"] = Preferences::isDHTEnabled(); + data["dhtSameAsBT"] = Preferences::isDHTPortSameAsBT(); + data["dht_port"] = Preferences::getDHTPort(); data["pex"] = Preferences::isPeXEnabled(); data["lsd"] = Preferences::isLSDEnabled(); data["encryption"] = Preferences::getEncryptionSetting(); diff --git a/src/preferences.h b/src/preferences.h index bfea695f9..fb7085671 100644 --- a/src/preferences.h +++ b/src/preferences.h @@ -619,11 +619,21 @@ public: return settings.value(QString::fromUtf8("Preferences/Bittorrent/sameDHTPortAsBT"), true).toBool(); } + static void setDHTPortSameAsBT(bool same) { + QSettings settings("qBittorrent", "qBittorrent"); + settings.setValue(QString::fromUtf8("Preferences/Bittorrent/sameDHTPortAsBT"), same); + } + static int getDHTPort() { QSettings settings("qBittorrent", "qBittorrent"); return settings.value(QString::fromUtf8("Preferences/Bittorrent/DHTPort"), 6881).toInt(); } + static void setDHTPort(int port) { + QSettings settings("qBittorrent", "qBittorrent"); + settings.setValue(QString::fromUtf8("Preferences/Bittorrent/DHTPort"), port); + } + static bool isLSDEnabled() { QSettings settings("qBittorrent", "qBittorrent"); return settings.value(QString::fromUtf8("Preferences/Bittorrent/LSD"), true).toBool(); diff --git a/src/webui/preferences_content.html b/src/webui/preferences_content.html index 361095d5e..9852d3e6e 100644 --- a/src/webui/preferences_content.html +++ b/src/webui/preferences_content.html @@ -55,6 +55,12 @@ _(Enable DHT network (decentralized)) + _(Use a different port for DHT and Bittorrent) + + + _(DHT port:) + + _(Enable Peer Exchange / PeX (requires restart)) @@ -332,6 +338,10 @@ var dht = 0; if($defined($('dht_checkbox').get('checked')) && $('dht_checkbox').get('checked')) dht = 1; + var dhtSameAsBT = 1; + if($defined($('DHTPortDiffThanBT_checkbox').get('checked')) && $('DHTPortDiffThanBT_checkbox').get('checked')) + dhtSameAsBT = 0; + var dht_port = $("DHTPort_txt").get('value').toInt(); var pex = 0; if($defined($('pex_checkbox').get('checked')) && $('pex_checkbox').get('checked')) pex = 1; @@ -459,6 +469,8 @@ dict.set('max_uploads_per_torrent', max_uploads_per_torrent); // Bittorrent dict.set('dht', dht); + dict.set('dhtSameAsBT', dhtSameAsBT); + dict.set('dht_port', dht_port); dict.set('pex', pex); dict.set('lsd', lsd); dict.set('encryption', $('encryption_select').get('value')); @@ -636,6 +648,14 @@ updateFilterSettings = function() { } } +updateDHTPortSettings = function() { + if($defined($('DHTPortDiffThanBT_checkbox').get('checked')) && $('DHTPortDiffThanBT_checkbox').get('checked')) { + $('DHTPort_txt').removeProperty('disabled'); + } else { + $('DHTPort_txt').set('disabled', 'true'); + } +} + updateHTTPProxySettings = function() { if($('http_proxy_type_select').get('value') != "none") { $('http_proxy_host_text').removeProperty('disabled'); @@ -807,6 +827,14 @@ loadPreferences = function() { } else { $('dht_checkbox').removeProperty('checked'); } + var dhtSameAsBT = pref.dhtSameAsBT; + if(dhtSameAsBT) { + $('DHTPortDiffThanBT_checkbox').removeProperty('checked'); + } else { + $('DHTPortDiffThanBT_checkbox').set('checked', 'checked'); + } + $("DHTPort_txt").set("value", pref.dht_port); + updateDHTPortSettings(); var pex = pref.pex; //bool if(pex) { $('pex_checkbox').set('checked', 'checked');