You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-23 22:32:16 +02:00
Compare commits
73 Commits
release-2.
...
release-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b496cf600b | ||
|
|
797a4608bf | ||
|
|
abb8554c51 | ||
|
|
258a3ea3b0 | ||
|
|
6d1ad28d8c | ||
|
|
38aca6af6f | ||
|
|
0fd8ecd9ee | ||
|
|
f24224649d | ||
|
|
b41aa38f39 | ||
|
|
b267ac169d | ||
|
|
1c0f1b91e7 | ||
|
|
9bf673210f | ||
|
|
42f5cbf2a6 | ||
|
|
45f0383ee2 | ||
|
|
a39c7f52cf | ||
|
|
f1ca4f40af | ||
|
|
62503fb663 | ||
|
|
0853ae4691 | ||
|
|
bb19cfce1f | ||
|
|
287cdc43c1 | ||
|
|
79e595c195 | ||
|
|
d198451bb0 | ||
|
|
ebf252ce86 | ||
|
|
f9ece8b447 | ||
|
|
efe5ca6242 | ||
|
|
0dbcf5653d | ||
|
|
20a201703c | ||
|
|
bfaa6c69fd | ||
|
|
6744ee8a4d | ||
|
|
20630e91ec | ||
|
|
cec74eb080 | ||
|
|
4e51393dd2 | ||
|
|
5d86930c80 | ||
|
|
cc1b812232 | ||
|
|
0fcbcd0dcd | ||
|
|
dd9e290a60 | ||
|
|
61a05c7e5b | ||
|
|
1c27e2bd35 | ||
|
|
68f66579ea | ||
|
|
e5eaea8949 | ||
|
|
ed491cf7cb | ||
|
|
3b3642bbba | ||
|
|
28eddb74ed | ||
|
|
401693dccd | ||
|
|
826e137aa5 | ||
|
|
7d4805988e | ||
|
|
bc2694bb88 | ||
|
|
19db0d471f | ||
|
|
2f337f9191 | ||
|
|
e05536a115 | ||
|
|
7364815ef3 | ||
|
|
bcc6597e93 | ||
|
|
661e2cb6fc | ||
|
|
8a5dc1f239 | ||
|
|
61208fce13 | ||
|
|
71c4f6e7e3 | ||
|
|
b169083fe2 | ||
|
|
efe5e7b068 | ||
|
|
ee3d4ce8f1 | ||
|
|
2707bf6349 | ||
|
|
a4b6228542 | ||
|
|
d49164b362 | ||
|
|
906b0755eb | ||
|
|
52f81a8066 | ||
|
|
d8af5d681c | ||
|
|
d05c725253 | ||
|
|
5fc3aa17b9 | ||
|
|
e15ac643de | ||
|
|
0b9f9aa0d7 | ||
|
|
549fcf8b4c | ||
|
|
19b11b8fa8 | ||
|
|
ba83354f32 | ||
|
|
a63eecc86a |
2
AUTHORS
2
AUTHORS
@@ -76,7 +76,7 @@ Translations authors:
|
||||
- Croatian: Oliver Mucafir (oliver.untwist@gmail.com)
|
||||
- Czech: Jirka Vilim (web@tets.cz)
|
||||
- Danish: Mathias Nielsen (comoneo@gmail.com)
|
||||
- Dutch: Joost Schipper (heavyjoost@users.sourceforge.net)
|
||||
- Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
|
||||
- English: Christophe Dumez (chris@qbittorrent.org)
|
||||
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
||||
- French: Christophe Dumez (chris@qbittorrent.org)
|
||||
|
||||
13
Changelog
13
Changelog
@@ -1,4 +1,4 @@
|
||||
* Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
|
||||
* Sun Dec 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
|
||||
- FEATURE: qBittorrent can now act as a tracker
|
||||
- FEATURE: New and improved RSS feed automated downloader
|
||||
- FEATURE: Added feature to shutdown qbittorrent on torrents completion
|
||||
@@ -12,9 +12,20 @@
|
||||
- FEATURE: Added "Amount downloaded/left" columns to transfer list
|
||||
- FEATURE: Simplified proxy settings
|
||||
- FEATURE: Optimized and improved the peer country resolution code
|
||||
- FEATURE: Download first/last pieces first when sequential download is
|
||||
enabled (Thanks Ahmad)
|
||||
- FEATURE: Download first/last pieces first now applies to all media files
|
||||
in the torrent (Thanks Ahmad)
|
||||
- BUGFIX: Fix SOCKS5 proxy authentication in search engine(closes #680072)
|
||||
- BUGFIX: Fix two advanced settings (ignore limits on LAN and protocol
|
||||
overhead inclusion in rate limiter)
|
||||
- BUGFIX: Fix strict super seeding (was not working)
|
||||
- BUGFIX: Improve magnet save path handling (closes #683395)
|
||||
- BUGFIX: Disable overwrite confirmation in torrent addition dialog (closes # 685269)
|
||||
- COSMETIC: Replaced message box by on-screen notification for download errors
|
||||
- COSMETIC: Improved the torrent creation tool appearance
|
||||
- COSMETIC: Use country flags by Mark James (Thanks to Dmytro Pukha)
|
||||
- COSMETIC: Use bigger alternative speed icon
|
||||
- OTHERS: Dropped support for Qt <= 4.4
|
||||
|
||||
* Tue Aug 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.0
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 439 B After Width: | Height: | Size: 423 B |
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
@@ -68,7 +68,7 @@ class about : public QDialog, private Ui::AboutDlg{
|
||||
<li><u>Croatian:</u> Oliver Mucafir (oliver.untwist@gmail.com)</li>\
|
||||
<li><u>Czech:</u> Jirka Vilim (web@tets.cz)</li>\
|
||||
<li><u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)</li>\
|
||||
<li><u>Dutch:</u> Joost Schipper (heavyjoost@users.sourceforge.net) and Peter Koeleman (peter@peerweb.nl)</li>\
|
||||
<li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\
|
||||
<li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net) and Pekka Niemi (pekka.niemi@iki.fi)</li>\
|
||||
<li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
|
||||
<li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\
|
||||
|
||||
@@ -34,8 +34,6 @@
|
||||
#include "qbtsession.h"
|
||||
#include "ui_console.h"
|
||||
|
||||
using namespace libtorrent;
|
||||
|
||||
class consoleDlg : public QDialog, private Ui_ConsoleDlg{
|
||||
Q_OBJECT
|
||||
|
||||
|
||||
@@ -1,57 +1,55 @@
|
||||
<ui version="4.0" >
|
||||
<author></author>
|
||||
<comment></comment>
|
||||
<exportmacro></exportmacro>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>downloadFromURL</class>
|
||||
<widget class="QDialog" name="downloadFromURL" >
|
||||
<property name="geometry" >
|
||||
<widget class="QDialog" name="downloadFromURL">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>360</width>
|
||||
<width>482</width>
|
||||
<height>220</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<property name="windowTitle">
|
||||
<string>Download from urls</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<layout class="QVBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="icon_lbl" >
|
||||
<property name="minimumSize" >
|
||||
<widget class="QLabel" name="icon_lbl">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize" >
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="downloadURL_lbl" >
|
||||
<property name="font" >
|
||||
<widget class="QLabel" name="downloadURL_lbl">
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Sans Serif</family>
|
||||
<pointsize>12</pointsize>
|
||||
@@ -62,7 +60,7 @@
|
||||
<strikeout>false</strikeout>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string>Download Torrents from URLs</string>
|
||||
</property>
|
||||
</widget>
|
||||
@@ -70,21 +68,21 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTextEdit" name="textUrls" >
|
||||
<property name="acceptRichText" >
|
||||
<widget class="QTextEdit" name="textUrls">
|
||||
<property name="acceptRichText">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_infos" >
|
||||
<property name="maximumSize" >
|
||||
<widget class="QLabel" name="label_infos">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>17</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font" >
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Sans Serif</family>
|
||||
<pointsize>9</pointsize>
|
||||
@@ -95,25 +93,25 @@
|
||||
<strikeout>false</strikeout>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string>Only one URL per line</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
@@ -122,25 +120,25 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="downloadButton" >
|
||||
<property name="text" >
|
||||
<widget class="QPushButton" name="downloadButton">
|
||||
<property name="text">
|
||||
<string>Download</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="cancelButton" >
|
||||
<property name="text" >
|
||||
<widget class="QPushButton" name="cancelButton">
|
||||
<property name="text">
|
||||
<string>Cancel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
@@ -152,7 +150,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<pixmapfunction></pixmapfunction>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
@@ -45,14 +45,14 @@
|
||||
/** Download Thread **/
|
||||
|
||||
downloadThread::downloadThread(QObject* parent) : QObject(parent) {
|
||||
connect(&networkManager, SIGNAL(finished (QNetworkReply*)), this, SLOT(processDlFinished(QNetworkReply*)));
|
||||
connect(&m_networkManager, SIGNAL(finished (QNetworkReply*)), this, SLOT(processDlFinished(QNetworkReply*)));
|
||||
#ifndef QT_NO_OPENSSL
|
||||
connect(&networkManager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(ignoreSslErrors(QNetworkReply*,QList<QSslError>)));
|
||||
connect(&m_networkManager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(ignoreSslErrors(QNetworkReply*,QList<QSslError>)));
|
||||
#endif
|
||||
}
|
||||
|
||||
void downloadThread::processDlFinished(QNetworkReply* reply) {
|
||||
QString url = reply->url().toEncoded().data();
|
||||
QString url = reply->url().toString();
|
||||
qDebug("Download finished: %s", qPrintable(url));
|
||||
if(reply->error() != QNetworkReply::NoError) {
|
||||
// Failure
|
||||
@@ -63,13 +63,13 @@ void downloadThread::processDlFinished(QNetworkReply* reply) {
|
||||
if(redirection.isValid()) {
|
||||
// We should redirect
|
||||
qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(redirection.toUrl().toString()));
|
||||
redirect_mapping.insert(redirection.toUrl().toString(), url);
|
||||
m_redirectMapping.insert(redirection.toUrl().toString(), url);
|
||||
downloadUrl(redirection.toUrl().toString());
|
||||
return;
|
||||
}
|
||||
// Checking if it was redirecting, restoring initial URL
|
||||
if(redirect_mapping.contains(url)) {
|
||||
url = redirect_mapping.take(url);
|
||||
if(m_redirectMapping.contains(url)) {
|
||||
url = m_redirectMapping.take(url);
|
||||
}
|
||||
// Success
|
||||
QString filePath;
|
||||
@@ -104,7 +104,7 @@ void downloadThread::processDlFinished(QNetworkReply* reply) {
|
||||
#ifndef DISABLE_GUI
|
||||
void downloadThread::loadCookies(const QString &host_name, QString url) {
|
||||
const QList<QByteArray> raw_cookies = RssSettings().getHostNameCookies(host_name);
|
||||
QNetworkCookieJar *cookie_jar = networkManager.cookieJar();
|
||||
QNetworkCookieJar *cookie_jar = m_networkManager.cookieJar();
|
||||
QList<QNetworkCookie> cookies;
|
||||
qDebug("Loading cookies for host name: %s", qPrintable(host_name));
|
||||
foreach(const QByteArray& raw_cookie, raw_cookies) {
|
||||
@@ -115,7 +115,7 @@ void downloadThread::loadCookies(const QString &host_name, QString url) {
|
||||
}
|
||||
}
|
||||
cookie_jar->setCookiesFromUrl(cookies, url);
|
||||
networkManager.setCookieJar(cookie_jar);
|
||||
m_networkManager.setCookieJar(cookie_jar);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -148,12 +148,12 @@ QNetworkReply* downloadThread::downloadUrl(QString url){
|
||||
// Web server banning
|
||||
request.setRawHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
|
||||
qDebug("Downloading %s...", request.url().toEncoded().data());
|
||||
qDebug("%d cookies for this URL", networkManager.cookieJar()->cookiesForUrl(url).size());
|
||||
for(int i=0; i<networkManager.cookieJar()->cookiesForUrl(url).size(); ++i) {
|
||||
qDebug("%s=%s", networkManager.cookieJar()->cookiesForUrl(url).at(i).name().data(), networkManager.cookieJar()->cookiesForUrl(url).at(i).value().data());
|
||||
qDebug("Domain: %s, Path: %s", qPrintable(networkManager.cookieJar()->cookiesForUrl(url).at(i).domain()), qPrintable(networkManager.cookieJar()->cookiesForUrl(url).at(i).path()));
|
||||
qDebug("%d cookies for this URL", m_networkManager.cookieJar()->cookiesForUrl(url).size());
|
||||
for(int i=0; i<m_networkManager.cookieJar()->cookiesForUrl(url).size(); ++i) {
|
||||
qDebug("%s=%s", m_networkManager.cookieJar()->cookiesForUrl(url).at(i).name().data(), m_networkManager.cookieJar()->cookiesForUrl(url).at(i).value().data());
|
||||
qDebug("Domain: %s, Path: %s", qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).domain()), qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).path()));
|
||||
}
|
||||
return networkManager.get(request);
|
||||
return m_networkManager.get(request);
|
||||
}
|
||||
|
||||
void downloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) {
|
||||
@@ -200,7 +200,7 @@ void downloadThread::applyProxySettings() {
|
||||
} else {
|
||||
proxy.setType(QNetworkProxy::NoProxy);
|
||||
}
|
||||
networkManager.setProxy(proxy);
|
||||
m_networkManager.setProxy(proxy);
|
||||
}
|
||||
|
||||
QString downloadThread::errorCodeToString(QNetworkReply::NetworkError status) {
|
||||
|
||||
@@ -41,34 +41,34 @@ class QNetworkAccessManager;
|
||||
class downloadThread : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
QNetworkAccessManager networkManager;
|
||||
QHash<QString, QString> redirect_mapping;
|
||||
public:
|
||||
downloadThread(QObject* parent = 0);
|
||||
QNetworkReply* downloadUrl(QString url);
|
||||
void downloadTorrentUrl(QString url);
|
||||
//void setProxy(QString IP, int port, QString username, QString password);
|
||||
|
||||
signals:
|
||||
void downloadFinished(QString url, QString file_path);
|
||||
void downloadFailure(QString url, QString reason);
|
||||
|
||||
public:
|
||||
downloadThread(QObject* parent);
|
||||
QNetworkReply* downloadUrl(QString url);
|
||||
void downloadTorrentUrl(QString url);
|
||||
//void setProxy(QString IP, int port, QString username, QString password);
|
||||
|
||||
protected:
|
||||
QString errorCodeToString(QNetworkReply::NetworkError status);
|
||||
void applyProxySettings();
|
||||
#ifndef DISABLE_GUI
|
||||
void loadCookies(const QString &host_name, QString url);
|
||||
#endif
|
||||
|
||||
protected slots:
|
||||
private slots:
|
||||
void processDlFinished(QNetworkReply* reply);
|
||||
void checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal);
|
||||
#ifndef QT_NO_OPENSSL
|
||||
void ignoreSslErrors(QNetworkReply*,QList<QSslError>);
|
||||
#endif
|
||||
|
||||
private:
|
||||
QString errorCodeToString(QNetworkReply::NetworkError status);
|
||||
void applyProxySettings();
|
||||
#ifndef DISABLE_GUI
|
||||
void loadCookies(const QString &host_name, QString url);
|
||||
#endif
|
||||
|
||||
private:
|
||||
QNetworkAccessManager m_networkManager;
|
||||
QHash<QString, QString> m_redirectMapping;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
#include <libtorrent/session.hpp>
|
||||
#include <libtorrent/ip_filter.hpp>
|
||||
|
||||
using namespace libtorrent;
|
||||
using namespace std;
|
||||
|
||||
// P2B Stuff
|
||||
@@ -56,8 +55,8 @@ class FilterParserThread : public QThread {
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
session *s;
|
||||
ip_filter filter;
|
||||
libtorrent::session *s;
|
||||
libtorrent::ip_filter filter;
|
||||
bool abort;
|
||||
QString filePath;
|
||||
|
||||
@@ -94,7 +93,7 @@ protected:
|
||||
}
|
||||
|
||||
public:
|
||||
FilterParserThread(QObject* parent, session *s) : QThread(parent), s(s), abort(false) {
|
||||
FilterParserThread(QObject* parent, libtorrent::session *s) : QThread(parent), s(s), abort(false) {
|
||||
|
||||
}
|
||||
|
||||
@@ -177,7 +176,7 @@ public:
|
||||
}
|
||||
// Now Add to the filter
|
||||
try {
|
||||
filter.add_rule(startAddr, endAddr, ip_filter::blocked);
|
||||
filter.add_rule(startAddr, endAddr, libtorrent::ip_filter::blocked);
|
||||
}catch(exception){
|
||||
qDebug("Bad line in filter file, avoided crash...");
|
||||
}
|
||||
@@ -246,7 +245,7 @@ public:
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
filter.add_rule(startAddr, endAddr, ip_filter::blocked);
|
||||
filter.add_rule(startAddr, endAddr, libtorrent::ip_filter::blocked);
|
||||
} catch(std::exception&) {
|
||||
qDebug("p2p file: line %d is malformed.", nbLine);
|
||||
qDebug("Line was: %s", line.constData());
|
||||
@@ -313,10 +312,10 @@ public:
|
||||
// Network byte order to Host byte order
|
||||
// asio address_v4 contructor expects it
|
||||
// that way
|
||||
address_v4 first(ntohl(start));
|
||||
address_v4 last(ntohl(end));
|
||||
libtorrent::address_v4 first(ntohl(start));
|
||||
libtorrent::address_v4 last(ntohl(end));
|
||||
// Apply to bittorrent session
|
||||
filter.add_rule(first, last, ip_filter::blocked);
|
||||
filter.add_rule(first, last, libtorrent::ip_filter::blocked);
|
||||
}
|
||||
}
|
||||
else if(version==3) {
|
||||
@@ -358,10 +357,10 @@ public:
|
||||
// Network byte order to Host byte order
|
||||
// asio address_v4 contructor expects it
|
||||
// that way
|
||||
address_v4 first(ntohl(start));
|
||||
address_v4 last(ntohl(end));
|
||||
libtorrent::address_v4 first(ntohl(start));
|
||||
libtorrent::address_v4 last(ntohl(end));
|
||||
// Apply to bittorrent session
|
||||
filter.add_rule(first, last, ip_filter::blocked);
|
||||
filter.add_rule(first, last, libtorrent::ip_filter::blocked);
|
||||
if(abort) return;
|
||||
}
|
||||
} else {
|
||||
@@ -391,16 +390,16 @@ public:
|
||||
start();
|
||||
}
|
||||
|
||||
static void processFilterList(session *s, QStringList IPs) {
|
||||
static void processFilterList(libtorrent::session *s, QStringList IPs) {
|
||||
// First, import current filter
|
||||
ip_filter filter = s->get_ip_filter();
|
||||
libtorrent::ip_filter filter = s->get_ip_filter();
|
||||
foreach(const QString &ip, IPs) {
|
||||
qDebug("Manual ban of peer %s", ip.toLocal8Bit().constData());
|
||||
boost::system::error_code ec;
|
||||
address_v4 addr = address_v4::from_string(ip.toLocal8Bit().constData(), ec);
|
||||
libtorrent::address_v4 addr = libtorrent::address_v4::from_string(ip.toLocal8Bit().constData(), ec);
|
||||
Q_ASSERT(!ec);
|
||||
if(!ec)
|
||||
filter.add_rule(addr, addr, ip_filter::blocked);
|
||||
filter.add_rule(addr, addr, libtorrent::ip_filter::blocked);
|
||||
}
|
||||
s->set_ip_filter(filter);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ SOURCES += $$PWD/geoipmanager.cpp
|
||||
# Add GeoIP resource file if the GeoIP database
|
||||
# should be embedded in qBittorrent executable
|
||||
contains(DEFINES, WITH_GEOIP_EMBEDDED) {
|
||||
exists("geoip/GeoIP.dat") {
|
||||
exists("GeoIP.dat") {
|
||||
message("GeoIP.dat was found in src/geoip/.")
|
||||
RESOURCES += $$PWD/geoip.qrc
|
||||
} else {
|
||||
|
||||
@@ -118,9 +118,7 @@ void GeoIPManager::loadDatabase(session *s) {
|
||||
#endif
|
||||
if(QFile::exists(geoipDBpath(false))) {
|
||||
qDebug("Loading GeoIP database from %s...", qPrintable(geoipDBpath(false)));
|
||||
if(!s->load_country_db(geoipDBpath(false).toLocal8Bit().constData())) {
|
||||
std::cerr << "Failed to load Geoip Database at " << qPrintable(geoipDBpath(false)) << std::endl;
|
||||
}
|
||||
s->load_country_db(geoipDBpath(false).toLocal8Bit().constData());
|
||||
} else {
|
||||
qDebug("ERROR: Impossible to find local Geoip Database");
|
||||
}
|
||||
|
||||
@@ -40,15 +40,14 @@ class HeadlessLoader: public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
HeadlessLoader(QStringList torrentCmdLine) {
|
||||
HeadlessLoader(const QStringList &torrentCmdLine) {
|
||||
Preferences pref;
|
||||
// Enable Web UI
|
||||
pref.setWebUiEnabled(true);
|
||||
// Instanciate Bittorrent Object
|
||||
BTSession = QBtSession::instance();
|
||||
connect(BTSession, SIGNAL(newConsoleMessage(QString)), this, SLOT(displayConsoleMessage(QString)));
|
||||
connect(QBtSession::instance(), SIGNAL(newConsoleMessage(QString)), this, SLOT(displayConsoleMessage(QString)));
|
||||
// Resume unfinished torrents
|
||||
BTSession->startUpTorrents();
|
||||
QBtSession::instance()->startUpTorrents();
|
||||
// Process command line parameters
|
||||
processParams(torrentCmdLine);
|
||||
// Display some information to the user
|
||||
@@ -72,7 +71,7 @@ public slots:
|
||||
qApp->quit();
|
||||
}
|
||||
|
||||
void displayConsoleMessage(QString msg) {
|
||||
void displayConsoleMessage(const QString &msg) {
|
||||
std::cout << qPrintable(msg) << std::endl;
|
||||
}
|
||||
|
||||
@@ -88,24 +87,21 @@ public slots:
|
||||
foreach(QString param, params) {
|
||||
param = param.trimmed();
|
||||
if(param.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) {
|
||||
BTSession->downloadFromUrl(param);
|
||||
QBtSession::instance()->downloadFromUrl(param);
|
||||
}else{
|
||||
if(param.startsWith("bc://bt/", Qt::CaseInsensitive)) {
|
||||
qDebug("Converting bc link to magnet link");
|
||||
param = misc::bcLinkToMagnet(param);
|
||||
}
|
||||
if(param.startsWith("magnet:", Qt::CaseInsensitive)) {
|
||||
BTSession->addMagnetUri(param);
|
||||
QBtSession::instance()->addMagnetUri(param);
|
||||
} else {
|
||||
BTSession->addTorrent(param);
|
||||
QBtSession::instance()->addTorrent(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
QBtSession *BTSession;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user