mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-02 01:44:26 +00:00
- Supports SOCKS5 proxies as well as HTTP ones
- Allow to use Proxy for Trackers / Peers / Web seeds / DHT connections - Redesigned Proxy options a little (for new features)
This commit is contained in:
parent
2985fa921a
commit
2196fcc911
11
Changelog
11
Changelog
@ -12,13 +12,22 @@
|
|||||||
- FEATURE: Improved a lot the torrent creation module
|
- FEATURE: Improved a lot the torrent creation module
|
||||||
- FEATURE: Allow to set upload/download limit per torrent (right click)
|
- FEATURE: Allow to set upload/download limit per torrent (right click)
|
||||||
- FEATURE: Ask for exit confirmation only if download list is not empty
|
- FEATURE: Ask for exit confirmation only if download list is not empty
|
||||||
- FEATURE: Proxy is now used for tracker / web seeds / peers connections
|
- FEATURE: Allow to use a proxy for trackers / web seeds / peers / DHT connections
|
||||||
|
- FEATURE: Supports SOCKS5 proxies as well as HTTP ones
|
||||||
- FEATURE: Better systems integration (buttons, dialogs...)
|
- FEATURE: Better systems integration (buttons, dialogs...)
|
||||||
- FEATURE: Fileted files are not allocated on the hard-drive anymore (if FS is compatible)
|
- FEATURE: Fileted files are not allocated on the hard-drive anymore (if FS is compatible)
|
||||||
- COSMETIC: Redesigned torrent properties a little
|
- COSMETIC: Redesigned torrent properties a little
|
||||||
- COSMETIC: Redesigned options a little
|
- COSMETIC: Redesigned options a little
|
||||||
- COSMETIC: Display more logs messages concerning features
|
- COSMETIC: Display more logs messages concerning features
|
||||||
|
|
||||||
|
* Mon May 07 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.3
|
||||||
|
- BUGFIX: Fixed pause toggle on double-click in download list
|
||||||
|
- BUGFIX: The torrent size displayed now only takes unfiltered files into account
|
||||||
|
- BUGFIX: Fixed compiling errors with libtorrent svn (future v0.13 with UPnP enabled)
|
||||||
|
- BUGFIX: Remember sorted column in download list on restart
|
||||||
|
- BUGFIX: Small fix in the german translation
|
||||||
|
- BUGFIX: Some fixes in slovak translation
|
||||||
|
|
||||||
* Tue Apr 10 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.2
|
* Tue Apr 10 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.2
|
||||||
- BUGFIX: Window can now stay maximized on exit
|
- BUGFIX: Window can now stay maximized on exit
|
||||||
- BUGFIX: Use PKGCONFIG again for configuring libtorrent
|
- BUGFIX: Use PKGCONFIG again for configuring libtorrent
|
||||||
|
17
src/GUI.cpp
17
src/GUI.cpp
@ -1219,16 +1219,27 @@ void GUI::configureSession(bool deleteOptions){
|
|||||||
}
|
}
|
||||||
// Apply Proxy settings
|
// Apply Proxy settings
|
||||||
if(options->isProxyEnabled()){
|
if(options->isProxyEnabled()){
|
||||||
|
switch(options->getProxyType()){
|
||||||
|
case HTTP_PW:
|
||||||
|
proxySettings.type = proxy_settings::http_pw;
|
||||||
|
break;
|
||||||
|
case SOCKS5:
|
||||||
|
proxySettings.type = proxy_settings::socks5;
|
||||||
|
break;
|
||||||
|
case SOCKS5_PW:
|
||||||
|
proxySettings.type = proxy_settings::socks5_pw;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
proxySettings.type = proxy_settings::http;
|
||||||
|
}
|
||||||
proxySettings.hostname = options->getProxyIp().toStdString();
|
proxySettings.hostname = options->getProxyIp().toStdString();
|
||||||
proxySettings.port = options->getProxyPort();
|
proxySettings.port = options->getProxyPort();
|
||||||
proxySettings.type = proxy_settings::http;
|
|
||||||
if(options->isProxyAuthEnabled()){
|
if(options->isProxyAuthEnabled()){
|
||||||
proxySettings.username = options->getProxyUsername().toStdString();
|
proxySettings.username = options->getProxyUsername().toStdString();
|
||||||
proxySettings.password = options->getProxyPassword().toStdString();
|
proxySettings.password = options->getProxyPassword().toStdString();
|
||||||
proxySettings.type = proxy_settings::http_pw;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BTSession.setProxySettings(proxySettings);
|
BTSession.setProxySettings(proxySettings, options->useProxyForTrackers(), options->useProxyForPeers(), options->useProxyForWebseeds(), options->useProxyForDHT());
|
||||||
sessionSettings.user_agent = "qBittorrent "VERSION;
|
sessionSettings.user_agent = "qBittorrent "VERSION;
|
||||||
BTSession.setSessionSettings(sessionSettings);
|
BTSession.setSessionSettings(sessionSettings);
|
||||||
// Scan dir stuff
|
// Scan dir stuff
|
||||||
|
@ -681,10 +681,16 @@ void bittorrent::setSessionSettings(session_settings sessionSettings){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set Proxy
|
// Set Proxy
|
||||||
void bittorrent::setProxySettings(proxy_settings proxySettings){
|
void bittorrent::setProxySettings(proxy_settings proxySettings, bool trackers, bool peers, bool web_seeds, bool dht){
|
||||||
s->set_peer_proxy(proxySettings);
|
if(trackers)
|
||||||
s->set_web_seed_proxy(proxySettings);
|
s->set_tracker_proxy(proxySettings);
|
||||||
s->set_tracker_proxy(proxySettings);
|
if(peers)
|
||||||
|
s->set_peer_proxy(proxySettings);
|
||||||
|
if(web_seeds)
|
||||||
|
s->set_web_seed_proxy(proxySettings);
|
||||||
|
if(DHTEnabled && dht){
|
||||||
|
s->set_dht_proxy(proxySettings);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read alerts sent by the bittorrent session
|
// Read alerts sent by the bittorrent session
|
||||||
|
@ -116,7 +116,7 @@ class bittorrent : public QObject{
|
|||||||
void setUploadRateLimit(int rate);
|
void setUploadRateLimit(int rate);
|
||||||
void setGlobalRatio(float ratio);
|
void setGlobalRatio(float ratio);
|
||||||
void setDHTPort(int dht_port);
|
void setDHTPort(int dht_port);
|
||||||
void setProxySettings(proxy_settings proxySettings);
|
void setProxySettings(proxy_settings proxySettings, bool trackers=true, bool peers=true, bool web_seeds=true, bool dht=true);
|
||||||
void setSessionSettings(session_settings sessionSettings);
|
void setSessionSettings(session_settings sessionSettings);
|
||||||
void setDefaultSavePath(const QString& savepath);
|
void setDefaultSavePath(const QString& savepath);
|
||||||
#ifndef NO_UPNP
|
#ifndef NO_UPNP
|
||||||
|
123
src/options.ui
123
src/options.ui
@ -1248,7 +1248,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="lbl_ip" >
|
<widget class="QLabel" name="lbl_ip" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Server IP:</string>
|
<string>Server IP or url:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -1310,6 +1310,50 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<property name="margin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="serverType_lbl" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Proxy type:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboProxyType" >
|
||||||
|
<item>
|
||||||
|
<property name="text" >
|
||||||
|
<string>HTTP</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text" >
|
||||||
|
<string>SOCKS5</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="enableProxyAuth_checkBox" >
|
<widget class="QCheckBox" name="enableProxyAuth_checkBox" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
@ -1405,6 +1449,83 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupProxyConnec" >
|
||||||
|
<property name="minimumSize" >
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>110</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="title" >
|
||||||
|
<string>Affected connections</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox" name="checkProxyTrackers" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>341</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Use proxy for connections to trackers</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="checkProxyPeers" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>341</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Use proxy for connections to regular peers</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="checkProxyWebseeds" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>60</y>
|
||||||
|
<width>341</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Use proxy for connections to web seeds</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="checkProxyDHT" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>341</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Use proxy for DHT messages</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
|
@ -190,6 +190,11 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){
|
|||||||
connect(proxy_ip, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
connect(proxy_ip, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
||||||
connect(proxy_username, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
connect(proxy_username, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
||||||
connect(proxy_password, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
connect(proxy_password, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
||||||
|
connect(comboProxyType, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
connect(checkProxyTrackers, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
connect(checkProxyPeers, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
connect(checkProxyWebseeds, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
connect(checkProxyDHT, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
// Misc Settings
|
// Misc Settings
|
||||||
connect(checkAdditionDialog, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkAdditionDialog, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(txt_savePath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
connect(txt_savePath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
||||||
@ -299,6 +304,16 @@ void options_imp::saveOptions(){
|
|||||||
if(enabled){
|
if(enabled){
|
||||||
settings.setValue("IP", getProxyIp());
|
settings.setValue("IP", getProxyIp());
|
||||||
settings.setValue("Port", getProxyPort());
|
settings.setValue("Port", getProxyPort());
|
||||||
|
unsigned short val = getProxyType();
|
||||||
|
if(val == HTTP || val == HTTP_PW){
|
||||||
|
settings.setValue("ProxyType", HTTP);
|
||||||
|
}else{
|
||||||
|
settings.setValue("ProxyType", SOCKS5);
|
||||||
|
}
|
||||||
|
settings.setValue("UseProxyForTrackers", useProxyForTrackers());
|
||||||
|
settings.setValue("UseProxyForPeers", useProxyForPeers());
|
||||||
|
settings.setValue("UseProxyForWebseeds", useProxyForWebseeds());
|
||||||
|
settings.setValue("UseProxyForDHT", useProxyForDHT());
|
||||||
enabled = isProxyAuthEnabled();
|
enabled = isProxyAuthEnabled();
|
||||||
settings.beginGroup("Authentication");
|
settings.beginGroup("Authentication");
|
||||||
settings.setValue("Enabled", enabled);
|
settings.setValue("Enabled", enabled);
|
||||||
@ -347,6 +362,38 @@ bool options_imp::isFilteringEnabled() const{
|
|||||||
return activateFilter->isChecked();
|
return activateFilter->isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned short options_imp::getProxyType() const{
|
||||||
|
if(comboProxyType->currentIndex() == HTTP){
|
||||||
|
if(isProxyAuthEnabled()){
|
||||||
|
return HTTP_PW;
|
||||||
|
}else{
|
||||||
|
return HTTP;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(isProxyAuthEnabled()){
|
||||||
|
return SOCKS5_PW;
|
||||||
|
}else{
|
||||||
|
return SOCKS5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool options_imp::useProxyForTrackers() const{
|
||||||
|
return checkProxyTrackers->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool options_imp::useProxyForPeers() const{
|
||||||
|
return checkProxyPeers->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool options_imp::useProxyForWebseeds() const{
|
||||||
|
return checkProxyWebseeds->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool options_imp::useProxyForDHT() const{
|
||||||
|
return checkProxyDHT->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
QString options_imp::getStyle() const{
|
QString options_imp::getStyle() const{
|
||||||
if(radioPlastiqueStyle->isChecked()) return "Plastique";
|
if(radioPlastiqueStyle->isChecked()) return "Plastique";
|
||||||
if(radioCleanlooksStyle->isChecked()) return "Cleanlooks";
|
if(radioCleanlooksStyle->isChecked()) return "Cleanlooks";
|
||||||
@ -522,6 +569,11 @@ void options_imp::loadOptions(){
|
|||||||
groupProxy->setEnabled(true);
|
groupProxy->setEnabled(true);
|
||||||
proxy_ip->setText(strValue);
|
proxy_ip->setText(strValue);
|
||||||
proxy_port->setValue(settings.value("Port", 8080).toInt());
|
proxy_port->setValue(settings.value("Port", 8080).toInt());
|
||||||
|
comboProxyType->setCurrentIndex(settings.value("ProxyType", HTTP).toInt());
|
||||||
|
checkProxyTrackers->setChecked(settings.value("useProxyForTrackers", true).toBool());
|
||||||
|
checkProxyPeers->setChecked(settings.value("useProxyForPeers", true).toBool());
|
||||||
|
checkProxyWebseeds->setChecked(settings.value("useProxyForWebseeds", true).toBool());
|
||||||
|
checkProxyDHT->setChecked(settings.value("useProxyForDHT", true).toBool());
|
||||||
settings.beginGroup("Authentication");
|
settings.beginGroup("Authentication");
|
||||||
if(settings.value("Enabled", false).toBool()){
|
if(settings.value("Enabled", false).toBool()){
|
||||||
enableProxyAuth_checkBox->setChecked(true);
|
enableProxyAuth_checkBox->setChecked(true);
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
#include <libtorrent/session.hpp>
|
#include <libtorrent/session.hpp>
|
||||||
#include <libtorrent/ip_filter.hpp>
|
#include <libtorrent/ip_filter.hpp>
|
||||||
|
|
||||||
|
#define HTTP 0
|
||||||
|
#define SOCKS5 1
|
||||||
|
#define HTTP_PW 2
|
||||||
|
#define SOCKS5_PW 3
|
||||||
|
|
||||||
using namespace libtorrent;
|
using namespace libtorrent;
|
||||||
|
|
||||||
class options_imp : public QDialog, private Ui::Dialog{
|
class options_imp : public QDialog, private Ui::Dialog{
|
||||||
@ -69,6 +74,11 @@ class options_imp : public QDialog, private Ui::Dialog{
|
|||||||
unsigned short getProxyPort() const;
|
unsigned short getProxyPort() const;
|
||||||
QString getProxyUsername() const;
|
QString getProxyUsername() const;
|
||||||
QString getProxyPassword() const;
|
QString getProxyPassword() const;
|
||||||
|
unsigned short getProxyType() const;
|
||||||
|
bool useProxyForTrackers() const;
|
||||||
|
bool useProxyForPeers() const;
|
||||||
|
bool useProxyForWebseeds() const;
|
||||||
|
bool useProxyForDHT() const;
|
||||||
// Language Settings
|
// Language Settings
|
||||||
QString getLocale() const;
|
QString getLocale() const;
|
||||||
// Misc Settings
|
// Misc Settings
|
||||||
|
Loading…
x
Reference in New Issue
Block a user