mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-28 21:38:51 +03:00
- Can spoof Azureus peer id and user agent to avoid ban
This commit is contained in:
parent
711699e200
commit
56d80118b7
6 changed files with 31 additions and 4 deletions
|
@ -1,5 +1,6 @@
|
||||||
* Tuesday October 06 2007 - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
|
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
|
||||||
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
|
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
|
||||||
|
- FEATURE: Can spoof Azureus peer id to avoid ban
|
||||||
- FEATURE: Allow to hide/show some columns in download and seeding lists
|
- FEATURE: Allow to hide/show some columns in download and seeding lists
|
||||||
- FEATURE: Option to start qBittorrent minimized in systray
|
- FEATURE: Option to start qBittorrent minimized in systray
|
||||||
- FEATURE: Allow to define double-click actions in torrents lists
|
- FEATURE: Allow to define double-click actions in torrents lists
|
||||||
|
@ -19,7 +20,7 @@
|
||||||
- COSMETIC: Display tracker errors in a cleaner way
|
- COSMETIC: Display tracker errors in a cleaner way
|
||||||
- COSMETIC: Display "unpaused/total_torrent" in download/upload tabs
|
- COSMETIC: Display "unpaused/total_torrent" in download/upload tabs
|
||||||
|
|
||||||
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.0.0
|
* Fri Apr 11 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.0.0
|
||||||
- FEATURE: Based on new libtorrent v0.13
|
- FEATURE: Based on new libtorrent v0.13
|
||||||
- FEATURE: Added UPnP / NAT-PMP port forwarding support
|
- FEATURE: Added UPnP / NAT-PMP port forwarding support
|
||||||
- FEATURE: Added encryption support (compatible with Azureus)
|
- FEATURE: Added encryption support (compatible with Azureus)
|
||||||
|
|
|
@ -940,7 +940,11 @@ void GUI::configureSession(bool deleteOptions) {
|
||||||
BTSession->setProxySettings(proxySettings, options->useProxyForTrackers(), options->useProxyForPeers(), options->useProxyForWebseeds(), options->useProxyForDHT());
|
BTSession->setProxySettings(proxySettings, options->useProxyForTrackers(), options->useProxyForPeers(), options->useProxyForWebseeds(), options->useProxyForDHT());
|
||||||
// * Session settings
|
// * Session settings
|
||||||
session_settings sessionSettings;
|
session_settings sessionSettings;
|
||||||
sessionSettings.user_agent = "qBittorrent "VERSION;
|
if(options->shouldSpoofAzureus()) {
|
||||||
|
sessionSettings.user_agent = "Azureus 3.0.5.2";
|
||||||
|
} else {
|
||||||
|
sessionSettings.user_agent = "qBittorrent "VERSION;
|
||||||
|
}
|
||||||
BTSession->setSessionSettings(sessionSettings);
|
BTSession->setSessionSettings(sessionSettings);
|
||||||
// Bittorrent
|
// Bittorrent
|
||||||
// * Max connections limit
|
// * Max connections limit
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
#include "bittorrent.h"
|
#include "bittorrent.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
@ -46,7 +47,13 @@ bittorrent::bittorrent() : timerScan(0), DHTEnabled(false), preAllocateAll(false
|
||||||
// To avoid some exceptions
|
// To avoid some exceptions
|
||||||
fs::path::default_name_check(fs::no_check);
|
fs::path::default_name_check(fs::no_check);
|
||||||
// Creating bittorrent session
|
// Creating bittorrent session
|
||||||
s = new session(fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0));
|
// Check if we should spoof azureus
|
||||||
|
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||||
|
if(settings.value(QString::fromUtf8("AzureusSpoof"), false).toBool()) {
|
||||||
|
s = new session(fingerprint("AZ", 3, 0, 5, 2));
|
||||||
|
} else {
|
||||||
|
s = new session(fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0));
|
||||||
|
}
|
||||||
// Set severity level of libtorrent session
|
// Set severity level of libtorrent session
|
||||||
s->set_severity_level(alert::info);
|
s->set_severity_level(alert::info);
|
||||||
// Enabling metadata plugin
|
// Enabling metadata plugin
|
||||||
|
|
|
@ -1361,6 +1361,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkAzureusSpoof" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Spoof Azureus to avoid ban (requires restart)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QHBoxLayout" >
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -194,6 +194,7 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){
|
||||||
connect(checkDHT, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkDHT, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(checkPeX, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkPeX, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(checkLSD, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkLSD, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
connect(checkAzureusSpoof, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(comboEncryption, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton()));
|
connect(comboEncryption, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(checkRatioLimit, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkRatioLimit, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(checkRatioRemove, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkRatioRemove, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
@ -322,6 +323,7 @@ void options_imp::saveOptions(){
|
||||||
settings.setValue(QString::fromUtf8("DHT"), isDHTEnabled());
|
settings.setValue(QString::fromUtf8("DHT"), isDHTEnabled());
|
||||||
settings.setValue(QString::fromUtf8("PeX"), isPeXEnabled());
|
settings.setValue(QString::fromUtf8("PeX"), isPeXEnabled());
|
||||||
settings.setValue(QString::fromUtf8("LSD"), isLSDEnabled());
|
settings.setValue(QString::fromUtf8("LSD"), isLSDEnabled());
|
||||||
|
settings.setValue(QString::fromUtf8("AzureusSpoof"), shouldSpoofAzureus());
|
||||||
settings.setValue(QString::fromUtf8("Encryption"), getEncryptionSetting());
|
settings.setValue(QString::fromUtf8("Encryption"), getEncryptionSetting());
|
||||||
settings.setValue(QString::fromUtf8("DesiredRatio"), getDesiredRatio());
|
settings.setValue(QString::fromUtf8("DesiredRatio"), getDesiredRatio());
|
||||||
settings.setValue(QString::fromUtf8("MaxRatio"), getDeleteRatio());
|
settings.setValue(QString::fromUtf8("MaxRatio"), getDeleteRatio());
|
||||||
|
@ -357,6 +359,10 @@ void options_imp::saveOptions(){
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool options_imp::shouldSpoofAzureus() const {
|
||||||
|
return checkAzureusSpoof->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
bool options_imp::isFilteringEnabled() const{
|
bool options_imp::isFilteringEnabled() const{
|
||||||
return checkIPFilter->isChecked();
|
return checkIPFilter->isChecked();
|
||||||
}
|
}
|
||||||
|
@ -561,6 +567,7 @@ void options_imp::loadOptions(){
|
||||||
checkDHT->setChecked(settings.value(QString::fromUtf8("DHT"), true).toBool());
|
checkDHT->setChecked(settings.value(QString::fromUtf8("DHT"), true).toBool());
|
||||||
checkPeX->setChecked(settings.value(QString::fromUtf8("PeX"), true).toBool());
|
checkPeX->setChecked(settings.value(QString::fromUtf8("PeX"), true).toBool());
|
||||||
checkLSD->setChecked(settings.value(QString::fromUtf8("LSD"), true).toBool());
|
checkLSD->setChecked(settings.value(QString::fromUtf8("LSD"), true).toBool());
|
||||||
|
checkAzureusSpoof->setChecked(settings.value(QString::fromUtf8("AzureusSpoof"), false).toBool());
|
||||||
comboEncryption->setCurrentIndex(settings.value(QString::fromUtf8("Encryption"), 0).toInt());
|
comboEncryption->setCurrentIndex(settings.value(QString::fromUtf8("Encryption"), 0).toInt());
|
||||||
floatValue = settings.value(QString::fromUtf8("DesiredRatio"), -1).toDouble();
|
floatValue = settings.value(QString::fromUtf8("DesiredRatio"), -1).toDouble();
|
||||||
if(floatValue >= 1.) {
|
if(floatValue >= 1.) {
|
||||||
|
|
|
@ -99,6 +99,7 @@ class options_imp : public QDialog, private Ui::Dialog {
|
||||||
bool isDHTEnabled() const;
|
bool isDHTEnabled() const;
|
||||||
bool isPeXEnabled() const;
|
bool isPeXEnabled() const;
|
||||||
bool isLSDEnabled() const;
|
bool isLSDEnabled() const;
|
||||||
|
bool shouldSpoofAzureus() const;
|
||||||
int getEncryptionSetting() const;
|
int getEncryptionSetting() const;
|
||||||
float getDesiredRatio() const;
|
float getDesiredRatio() const;
|
||||||
float getDeleteRatio() const;
|
float getDeleteRatio() const;
|
||||||
|
|
Loading…
Reference in a new issue