You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-11-09 10:02:39 +01:00
Compare commits
116 Commits
release-2.
...
release-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5ea96fec2 | ||
|
|
c571ae900c | ||
|
|
b9f6bbf09b | ||
|
|
916e01f9f8 | ||
|
|
7bd5b0d3b5 | ||
|
|
44574498ad | ||
|
|
ec3d45fc99 | ||
|
|
7908de917a | ||
|
|
0e53a6ab8b | ||
|
|
ba2f8af012 | ||
|
|
a8bc3f6d4d | ||
|
|
0211f42df9 | ||
|
|
0180f46dc9 | ||
|
|
6e4d15e72d | ||
|
|
3e1e992fa8 | ||
|
|
6051aa57cf | ||
|
|
55b0cac61b | ||
|
|
28409b83c3 | ||
|
|
eed0b6ca12 | ||
|
|
4b0fae88bc | ||
|
|
6ff3de7686 | ||
|
|
f08d792e67 | ||
|
|
e2edf62834 | ||
|
|
eb4c449620 | ||
|
|
c06386126b | ||
|
|
8c854b8a0e | ||
|
|
749c3a429a | ||
|
|
a6edea2222 | ||
|
|
d66c88d59e | ||
|
|
b92c152d30 | ||
|
|
148ec32825 | ||
|
|
8298b62f56 | ||
|
|
53f46875d8 | ||
|
|
a67caf1730 | ||
|
|
6a38f69fad | ||
|
|
d5bf2b2e1f | ||
|
|
f6df1c7fed | ||
|
|
fa88bce77d | ||
|
|
571465ff7e | ||
|
|
09a3f78a28 | ||
|
|
f98520e6c2 | ||
|
|
0211f3aee3 | ||
|
|
7c580a87e2 | ||
|
|
0dcd33fb6d | ||
|
|
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)
|
- Croatian: Oliver Mucafir (oliver.untwist@gmail.com)
|
||||||
- Czech: Jirka Vilim (web@tets.cz)
|
- Czech: Jirka Vilim (web@tets.cz)
|
||||||
- Danish: Mathias Nielsen (comoneo@gmail.com)
|
- 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)
|
- English: Christophe Dumez (chris@qbittorrent.org)
|
||||||
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
||||||
- French: Christophe Dumez (chris@qbittorrent.org)
|
- French: Christophe Dumez (chris@qbittorrent.org)
|
||||||
|
|||||||
43
Changelog
43
Changelog
@@ -1,4 +1,34 @@
|
|||||||
* Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
|
* Thu Jan 6 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.5.5
|
||||||
|
- BUGFIX: Added --enable-debug parameter to the configure script
|
||||||
|
- BUGFIX: Prioritize first and last pieces when sequential download is enabled
|
||||||
|
- BUGFIX: Some encoding fixes (Windows)
|
||||||
|
- BUGFIX: Display default password on stdout when using nox
|
||||||
|
- BUGFIX: Fix issues when search engines results contain a '|'
|
||||||
|
- BUGFIX: Avoid possible crash on exit when the IP filter is enabled (closes #695945)
|
||||||
|
|
||||||
|
* Sat Jan 1 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.5.3
|
||||||
|
- BUGFIX: Fix priority up/down for multiple torrents at the same time (closes #692184)
|
||||||
|
- BUGFIX: Make sure the number of torrents is properly set on startup (closes #694135)
|
||||||
|
- BUGFIX: Fix scan directories saving (closes #694768)
|
||||||
|
- BUGFIX: Remove empty folders on torrent soft deletion (closes #695174)
|
||||||
|
- BUGFIX: Make sure the main window has focus on startup
|
||||||
|
- BUGFIX: Fix ampersand display in search tabs (closes #695715)
|
||||||
|
|
||||||
|
* Sun Dec 19 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.2
|
||||||
|
- BUGFIX: Fix alternative speed icon staying pressed when disabled
|
||||||
|
- BUGFIX: Fix slot warning on startup
|
||||||
|
- BUGFIX: Fix alignment issues in program preferences
|
||||||
|
- BUGFIX: Make sure we don't move completed torrent to the temp directory
|
||||||
|
for checking (closes #602938)
|
||||||
|
- BUGFIX: Fix some 'File Not found' warning in the Web UI
|
||||||
|
- BUGFIX: Fix dangerous usage of vector iterator
|
||||||
|
- BUGFIX: No longer expand the first folder in the torrent content list
|
||||||
|
- BUGFIX: Fixes possible crash in the RSS Downloader dialog (closes #691426)
|
||||||
|
|
||||||
|
* Sun Dec 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.1
|
||||||
|
- BUGFIX: Fix possible crash when right-clicking on a torrent
|
||||||
|
|
||||||
|
* Sun Dec 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
|
||||||
- FEATURE: qBittorrent can now act as a tracker
|
- FEATURE: qBittorrent can now act as a tracker
|
||||||
- FEATURE: New and improved RSS feed automated downloader
|
- FEATURE: New and improved RSS feed automated downloader
|
||||||
- FEATURE: Added feature to shutdown qbittorrent on torrents completion
|
- FEATURE: Added feature to shutdown qbittorrent on torrents completion
|
||||||
@@ -12,9 +42,20 @@
|
|||||||
- FEATURE: Added "Amount downloaded/left" columns to transfer list
|
- FEATURE: Added "Amount downloaded/left" columns to transfer list
|
||||||
- FEATURE: Simplified proxy settings
|
- FEATURE: Simplified proxy settings
|
||||||
- FEATURE: Optimized and improved the peer country resolution code
|
- 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: Replaced message box by on-screen notification for download errors
|
||||||
- COSMETIC: Improved the torrent creation tool appearance
|
- COSMETIC: Improved the torrent creation tool appearance
|
||||||
- COSMETIC: Use country flags by Mark James (Thanks to Dmytro Pukha)
|
- COSMETIC: Use country flags by Mark James (Thanks to Dmytro Pukha)
|
||||||
|
- COSMETIC: Use bigger alternative speed icon
|
||||||
- OTHERS: Dropped support for Qt <= 4.4
|
- OTHERS: Dropped support for Qt <= 4.4
|
||||||
|
|
||||||
* Tue Aug 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.0
|
* Tue Aug 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.0
|
||||||
|
|||||||
35
configure
vendored
35
configure
vendored
@@ -18,9 +18,11 @@ Main options:
|
|||||||
--help This help text.
|
--help This help text.
|
||||||
|
|
||||||
Dependency options:
|
Dependency options:
|
||||||
|
--enable-debug Enable debug mode
|
||||||
--disable-gui Disable qBittorrent
|
--disable-gui Disable qBittorrent
|
||||||
Graphical user interface for
|
Graphical user interface for
|
||||||
headless running
|
headless running
|
||||||
|
--enable-debug Enable debug mode
|
||||||
--with-libboost-inc=[path] Path to libboost include
|
--with-libboost-inc=[path] Path to libboost include
|
||||||
files
|
files
|
||||||
--with-libboost-lib=[path] Path to libboost library
|
--with-libboost-lib=[path] Path to libboost library
|
||||||
@@ -32,7 +34,6 @@ Dependency options:
|
|||||||
executable (please follow
|
executable (please follow
|
||||||
instructions in
|
instructions in
|
||||||
src/geoip/README)
|
src/geoip/README)
|
||||||
--disable-qtsingleapplication Disable use of libboost
|
|
||||||
--with-qtsingleapplication=[system|shipped] Use the shipped
|
--with-qtsingleapplication=[system|shipped] Use the shipped
|
||||||
qtsingleapplication library
|
qtsingleapplication library
|
||||||
or the system one
|
or the system one
|
||||||
@@ -152,11 +153,21 @@ while [ $# -gt 0 ]; do
|
|||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
--enable-debug)
|
||||||
|
QC_ENABLE_DEBUG="Y"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
--disable-gui)
|
--disable-gui)
|
||||||
QC_DISABLE_GUI="Y"
|
QC_DISABLE_GUI="Y"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
--enable-debug)
|
||||||
|
QC_ENABLE_DEBUG="Y"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
--with-libboost-inc=*)
|
--with-libboost-inc=*)
|
||||||
QC_WITH_LIBBOOST_INC=$optarg
|
QC_WITH_LIBBOOST_INC=$optarg
|
||||||
shift
|
shift
|
||||||
@@ -182,11 +193,6 @@ while [ $# -gt 0 ]; do
|
|||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--disable-qtsingleapplication)
|
|
||||||
QC_DISABLE_qtsingleapplication="Y"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-qtsingleapplication=*)
|
--with-qtsingleapplication=*)
|
||||||
QC_WITH_QTSINGLEAPPLICATION=$optarg
|
QC_WITH_QTSINGLEAPPLICATION=$optarg
|
||||||
shift
|
shift
|
||||||
@@ -213,13 +219,14 @@ echo PREFIX=$PREFIX
|
|||||||
echo BINDIR=$BINDIR
|
echo BINDIR=$BINDIR
|
||||||
echo DATADIR=$DATADIR
|
echo DATADIR=$DATADIR
|
||||||
echo EX_QTDIR=$EX_QTDIR
|
echo EX_QTDIR=$EX_QTDIR
|
||||||
|
echo QC_ENABLE_DEBUG=$QC_ENABLE_DEBUG
|
||||||
echo QC_DISABLE_GUI=$QC_DISABLE_GUI
|
echo QC_DISABLE_GUI=$QC_DISABLE_GUI
|
||||||
|
echo QC_ENABLE_DEBUG=$QC_ENABLE_DEBUG
|
||||||
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
|
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
|
||||||
echo QC_WITH_LIBBOOST_LIB=$QC_WITH_LIBBOOST_LIB
|
echo QC_WITH_LIBBOOST_LIB=$QC_WITH_LIBBOOST_LIB
|
||||||
echo QC_DISABLE_libnotify=$QC_DISABLE_libnotify
|
echo QC_DISABLE_libnotify=$QC_DISABLE_libnotify
|
||||||
echo QC_DISABLE_geoip_database=$QC_DISABLE_geoip_database
|
echo QC_DISABLE_geoip_database=$QC_DISABLE_geoip_database
|
||||||
echo QC_WITH_GEOIP_DATABASE_EMBEDDED=$QC_WITH_GEOIP_DATABASE_EMBEDDED
|
echo QC_WITH_GEOIP_DATABASE_EMBEDDED=$QC_WITH_GEOIP_DATABASE_EMBEDDED
|
||||||
echo QC_DISABLE_qtsingleapplication=$QC_DISABLE_qtsingleapplication
|
|
||||||
echo QC_WITH_QTSINGLEAPPLICATION=$QC_WITH_QTSINGLEAPPLICATION
|
echo QC_WITH_QTSINGLEAPPLICATION=$QC_WITH_QTSINGLEAPPLICATION
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
@@ -326,7 +333,9 @@ cat >$1/modules.cpp <<EOT
|
|||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: Qt >= 4.5
|
name: Qt >= 4.5
|
||||||
|
arg: enable-debug, Enable debug mode
|
||||||
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
||||||
|
arg: enable-debug, Enable debug mode
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
class qc_qt4 : public ConfObj
|
class qc_qt4 : public ConfObj
|
||||||
@@ -337,9 +346,14 @@ public:
|
|||||||
QString shortname() const { return "Qt 4.5"; }
|
QString shortname() const { return "Qt 4.5"; }
|
||||||
bool exec()
|
bool exec()
|
||||||
{
|
{
|
||||||
|
// NOX mode
|
||||||
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
||||||
conf->addExtra("CONFIG += nox");
|
conf->addExtra("CONFIG += nox");
|
||||||
}
|
}
|
||||||
|
// Debug mode
|
||||||
|
if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) {
|
||||||
|
conf->addExtra("CONFIG += debug");
|
||||||
|
}
|
||||||
return(QT_VERSION >= 0x040500);
|
return(QT_VERSION >= 0x040500);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -609,7 +623,7 @@ public:
|
|||||||
#line 1 "qtsingleapplication.qcm"
|
#line 1 "qtsingleapplication.qcm"
|
||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: libboost
|
name: qtsingleapplication
|
||||||
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
@@ -655,7 +669,7 @@ cat >$1/modules_new.cpp <<EOT
|
|||||||
o->required = false;
|
o->required = false;
|
||||||
o->disabled = false;
|
o->disabled = false;
|
||||||
o = new qc_qtsingleapplication(conf);
|
o = new qc_qtsingleapplication(conf);
|
||||||
o->required = false;
|
o->required = true;
|
||||||
o->disabled = false;
|
o->disabled = false;
|
||||||
|
|
||||||
EOT
|
EOT
|
||||||
@@ -1602,13 +1616,14 @@ export PREFIX
|
|||||||
export BINDIR
|
export BINDIR
|
||||||
export DATADIR
|
export DATADIR
|
||||||
export EX_QTDIR
|
export EX_QTDIR
|
||||||
|
export QC_ENABLE_DEBUG
|
||||||
export QC_DISABLE_GUI
|
export QC_DISABLE_GUI
|
||||||
|
export QC_ENABLE_DEBUG
|
||||||
export QC_WITH_LIBBOOST_INC
|
export QC_WITH_LIBBOOST_INC
|
||||||
export QC_WITH_LIBBOOST_LIB
|
export QC_WITH_LIBBOOST_LIB
|
||||||
export QC_DISABLE_libnotify
|
export QC_DISABLE_libnotify
|
||||||
export QC_DISABLE_geoip_database
|
export QC_DISABLE_geoip_database
|
||||||
export QC_WITH_GEOIP_DATABASE_EMBEDDED
|
export QC_WITH_GEOIP_DATABASE_EMBEDDED
|
||||||
export QC_DISABLE_qtsingleapplication
|
|
||||||
export QC_WITH_QTSINGLEAPPLICATION
|
export QC_WITH_QTSINGLEAPPLICATION
|
||||||
export QC_VERBOSE
|
export QC_VERBOSE
|
||||||
rm -rf .qconftemp
|
rm -rf .qconftemp
|
||||||
|
|||||||
136
install.os2
Normal file
136
install.os2
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
QBittorrent installation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
0. CONTENTS OF THIS FILE
|
||||||
|
========================
|
||||||
|
|
||||||
|
1. INTRODUCTION
|
||||||
|
|
||||||
|
2. REQUIREMENTS
|
||||||
|
|
||||||
|
3. INSTALLATION
|
||||||
|
|
||||||
|
4. CONTACT
|
||||||
|
|
||||||
|
5. CREDITS
|
||||||
|
|
||||||
|
6. SUPPORT AND DONATIONS
|
||||||
|
|
||||||
|
7. HISTORY
|
||||||
|
|
||||||
|
|
||||||
|
1. INTRODUCTION
|
||||||
|
===============
|
||||||
|
|
||||||
|
Welcome to QBittorrent port for OS/2 and eComStation.
|
||||||
|
|
||||||
|
|
||||||
|
2. REQUIREMENTS
|
||||||
|
===============
|
||||||
|
|
||||||
|
* klibc 0.6.3 or later
|
||||||
|
|
||||||
|
ftp://ftp.netlabs.org/pub/gcc/libc-0_6_3-csd3.wpi
|
||||||
|
|
||||||
|
* openssl 1.0
|
||||||
|
|
||||||
|
ftp://ftp.netlabs.org/pub/unixos2/ssl10.zip
|
||||||
|
|
||||||
|
* Qt4 dll
|
||||||
|
|
||||||
|
see http://svn.netlabs.org/qt4 for more information whats needed and where to get the latest
|
||||||
|
|
||||||
|
|
||||||
|
3. INSTALLATION
|
||||||
|
===============
|
||||||
|
|
||||||
|
To install QBittorrent, do the following:
|
||||||
|
|
||||||
|
klibc
|
||||||
|
-----
|
||||||
|
|
||||||
|
1. Download klibc 0.6.3 csd3 or later.
|
||||||
|
2. Install the package by double-clicking on the WPI file.
|
||||||
|
|
||||||
|
|
||||||
|
openssl 1.0
|
||||||
|
-----------
|
||||||
|
|
||||||
|
1. Download the zip file
|
||||||
|
2. Install the files to your libpath eg. x:\ecs\dll
|
||||||
|
|
||||||
|
Qt4 dll
|
||||||
|
-------
|
||||||
|
|
||||||
|
1. Download the package
|
||||||
|
2. Install the package by double-clicking on the wpi file.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
QBittorrent
|
||||||
|
-----------
|
||||||
|
|
||||||
|
1. Create a directory for QBittorrent.
|
||||||
|
2. Extract the QBittorrent package to the new directory.
|
||||||
|
3. Create a WPS object for QBittorrent.exe.
|
||||||
|
4. Start QBittorrent
|
||||||
|
5. Happy torrenting
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
4. CONTACT
|
||||||
|
==========
|
||||||
|
|
||||||
|
Please send bugreports to:
|
||||||
|
|
||||||
|
ecs@aroa.ch
|
||||||
|
|
||||||
|
Only bug reports with a reproducable bug are accepted. :-)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5. CREDITS
|
||||||
|
==========
|
||||||
|
|
||||||
|
The port was done by:
|
||||||
|
|
||||||
|
Silvan Scherrer aka _diver
|
||||||
|
|
||||||
|
Thanks go to:
|
||||||
|
|
||||||
|
* Dmitry A. Kuminov
|
||||||
|
|
||||||
|
They either helped me when I had some nasty questions or did some testing for
|
||||||
|
me.
|
||||||
|
|
||||||
|
|
||||||
|
6. SUPPORT AND DONATIONS
|
||||||
|
========================
|
||||||
|
|
||||||
|
QBittorrent port is based on volunteer work. If you would like to support further
|
||||||
|
development, you can do so in one of the following ways:
|
||||||
|
|
||||||
|
|
||||||
|
* Donate to the Qt4 project: see qt.netlabs.org for more information
|
||||||
|
|
||||||
|
* Contribute to the project: Besides actual development, this also includes
|
||||||
|
maintaining the documentation and the project web site as well as help
|
||||||
|
for users.
|
||||||
|
|
||||||
|
|
||||||
|
7. HISTORY
|
||||||
|
==========
|
||||||
|
|
||||||
|
2010-12-23
|
||||||
|
|
||||||
|
* updated to 2.5.2 code level of QBittorrent
|
||||||
|
|
||||||
|
2010-11-22
|
||||||
|
|
||||||
|
* updated to 2.4.11 code level of QBittorrent
|
||||||
|
|
||||||
|
2010-xx-xx
|
||||||
|
|
||||||
|
* initial port
|
||||||
|
|
||||||
@@ -1,3 +1,10 @@
|
|||||||
|
INCLUDEPATH += $$PWD
|
||||||
|
|
||||||
|
exists(conf.pri) {
|
||||||
|
# to the conf.pri goes all system dependent stuff
|
||||||
|
include(conf.pri)
|
||||||
|
}
|
||||||
|
|
||||||
LIBS += -ltorrent-rasterbar \
|
LIBS += -ltorrent-rasterbar \
|
||||||
-lboost_thread \
|
-lboost_thread \
|
||||||
-lboost_system \
|
-lboost_system \
|
||||||
|
|||||||
@@ -20,5 +20,6 @@
|
|||||||
<dep type='geoip-database'>
|
<dep type='geoip-database'>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='qtsingleapplication'>
|
<dep type='qtsingleapplication'>
|
||||||
|
<required/>
|
||||||
</dep>
|
</dep>
|
||||||
</qconf>
|
</qconf>
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: Qt >= 4.5
|
name: Qt >= 4.5
|
||||||
|
arg: enable-debug, Enable debug mode
|
||||||
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
||||||
|
arg: enable-debug, Enable debug mode
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
class qc_qt4 : public ConfObj
|
class qc_qt4 : public ConfObj
|
||||||
@@ -12,9 +14,14 @@ public:
|
|||||||
QString shortname() const { return "Qt 4.5"; }
|
QString shortname() const { return "Qt 4.5"; }
|
||||||
bool exec()
|
bool exec()
|
||||||
{
|
{
|
||||||
|
// NOX mode
|
||||||
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
||||||
conf->addExtra("CONFIG += nox");
|
conf->addExtra("CONFIG += nox");
|
||||||
}
|
}
|
||||||
|
// Debug mode
|
||||||
|
if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) {
|
||||||
|
conf->addExtra("CONFIG += debug");
|
||||||
|
}
|
||||||
return(QT_VERSION >= 0x040500);
|
return(QT_VERSION >= 0x040500);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: libboost
|
name: qtsingleapplication
|
||||||
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 439 B After Width: | Height: | Size: 423 B |
@@ -1,6 +1,6 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Categories=Qt;Network;P2P;
|
Categories=Qt;Network;P2P;
|
||||||
Comment=V2.5.0
|
Comment=V2.5.5
|
||||||
Exec=qbittorrent %f
|
Exec=qbittorrent %f
|
||||||
GenericName=Bittorrent client
|
GenericName=Bittorrent client
|
||||||
GenericName[ar]=العميل Bittorrent
|
GenericName[ar]=العميل Bittorrent
|
||||||
|
|||||||
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 |
@@ -47,7 +47,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>2.5.0</string>
|
<string>2.5.5</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class about : public QDialog, private Ui::AboutDlg{
|
|||||||
<li><u>Croatian:</u> Oliver Mucafir (oliver.untwist@gmail.com)</li>\
|
<li><u>Croatian:</u> Oliver Mucafir (oliver.untwist@gmail.com)</li>\
|
||||||
<li><u>Czech:</u> Jirka Vilim (web@tets.cz)</li>\
|
<li><u>Czech:</u> Jirka Vilim (web@tets.cz)</li>\
|
||||||
<li><u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)</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>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>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
|
||||||
<li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\
|
<li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\
|
||||||
|
|||||||
@@ -34,8 +34,6 @@
|
|||||||
#include "qbtsession.h"
|
#include "qbtsession.h"
|
||||||
#include "ui_console.h"
|
#include "ui_console.h"
|
||||||
|
|
||||||
using namespace libtorrent;
|
|
||||||
|
|
||||||
class consoleDlg : public QDialog, private Ui_ConsoleDlg{
|
class consoleDlg : public QDialog, private Ui_ConsoleDlg{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<author></author>
|
|
||||||
<comment></comment>
|
|
||||||
<exportmacro></exportmacro>
|
|
||||||
<class>downloadFromURL</class>
|
<class>downloadFromURL</class>
|
||||||
<widget class="QDialog" name="downloadFromURL">
|
<widget class="QDialog" name="downloadFromURL">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>360</width>
|
<width>482</width>
|
||||||
<height>220</height>
|
<height>220</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -16,20 +14,20 @@
|
|||||||
<string>Download from urls</string>
|
<string>Download from urls</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout">
|
<layout class="QVBoxLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
<property name="margin">
|
<property name="margin">
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<property name="margin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="icon_lbl">
|
<widget class="QLabel" name="icon_lbl">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@@ -102,18 +100,18 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<property name="margin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" >
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
@@ -140,7 +138,7 @@
|
|||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" >
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
@@ -152,7 +150,6 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<pixmapfunction></pixmapfunction>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -45,14 +45,14 @@
|
|||||||
/** Download Thread **/
|
/** Download Thread **/
|
||||||
|
|
||||||
downloadThread::downloadThread(QObject* parent) : QObject(parent) {
|
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
|
#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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void downloadThread::processDlFinished(QNetworkReply* reply) {
|
void downloadThread::processDlFinished(QNetworkReply* reply) {
|
||||||
QString url = reply->url().toEncoded().data();
|
QString url = reply->url().toString();
|
||||||
qDebug("Download finished: %s", qPrintable(url));
|
qDebug("Download finished: %s", qPrintable(url));
|
||||||
if(reply->error() != QNetworkReply::NoError) {
|
if(reply->error() != QNetworkReply::NoError) {
|
||||||
// Failure
|
// Failure
|
||||||
@@ -63,13 +63,13 @@ void downloadThread::processDlFinished(QNetworkReply* reply) {
|
|||||||
if(redirection.isValid()) {
|
if(redirection.isValid()) {
|
||||||
// We should redirect
|
// We should redirect
|
||||||
qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(redirection.toUrl().toString()));
|
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());
|
downloadUrl(redirection.toUrl().toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Checking if it was redirecting, restoring initial URL
|
// Checking if it was redirecting, restoring initial URL
|
||||||
if(redirect_mapping.contains(url)) {
|
if(m_redirectMapping.contains(url)) {
|
||||||
url = redirect_mapping.take(url);
|
url = m_redirectMapping.take(url);
|
||||||
}
|
}
|
||||||
// Success
|
// Success
|
||||||
QString filePath;
|
QString filePath;
|
||||||
@@ -104,7 +104,7 @@ void downloadThread::processDlFinished(QNetworkReply* reply) {
|
|||||||
#ifndef DISABLE_GUI
|
#ifndef DISABLE_GUI
|
||||||
void downloadThread::loadCookies(const QString &host_name, QString url) {
|
void downloadThread::loadCookies(const QString &host_name, QString url) {
|
||||||
const QList<QByteArray> raw_cookies = RssSettings().getHostNameCookies(host_name);
|
const QList<QByteArray> raw_cookies = RssSettings().getHostNameCookies(host_name);
|
||||||
QNetworkCookieJar *cookie_jar = networkManager.cookieJar();
|
QNetworkCookieJar *cookie_jar = m_networkManager.cookieJar();
|
||||||
QList<QNetworkCookie> cookies;
|
QList<QNetworkCookie> cookies;
|
||||||
qDebug("Loading cookies for host name: %s", qPrintable(host_name));
|
qDebug("Loading cookies for host name: %s", qPrintable(host_name));
|
||||||
foreach(const QByteArray& raw_cookie, raw_cookies) {
|
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);
|
cookie_jar->setCookiesFromUrl(cookies, url);
|
||||||
networkManager.setCookieJar(cookie_jar);
|
m_networkManager.setCookieJar(cookie_jar);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -148,12 +148,12 @@ QNetworkReply* downloadThread::downloadUrl(QString url){
|
|||||||
// Web server banning
|
// 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");
|
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("Downloading %s...", request.url().toEncoded().data());
|
||||||
qDebug("%d cookies for this URL", networkManager.cookieJar()->cookiesForUrl(url).size());
|
qDebug("%d cookies for this URL", m_networkManager.cookieJar()->cookiesForUrl(url).size());
|
||||||
for(int i=0; i<networkManager.cookieJar()->cookiesForUrl(url).size(); ++i) {
|
for(int i=0; i<m_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("%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(networkManager.cookieJar()->cookiesForUrl(url).at(i).domain()), qPrintable(networkManager.cookieJar()->cookiesForUrl(url).at(i).path()));
|
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) {
|
void downloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) {
|
||||||
@@ -200,7 +200,7 @@ void downloadThread::applyProxySettings() {
|
|||||||
} else {
|
} else {
|
||||||
proxy.setType(QNetworkProxy::NoProxy);
|
proxy.setType(QNetworkProxy::NoProxy);
|
||||||
}
|
}
|
||||||
networkManager.setProxy(proxy);
|
m_networkManager.setProxy(proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString downloadThread::errorCodeToString(QNetworkReply::NetworkError status) {
|
QString downloadThread::errorCodeToString(QNetworkReply::NetworkError status) {
|
||||||
|
|||||||
@@ -41,34 +41,34 @@ class QNetworkAccessManager;
|
|||||||
class downloadThread : public QObject {
|
class downloadThread : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
public:
|
||||||
QNetworkAccessManager networkManager;
|
downloadThread(QObject* parent = 0);
|
||||||
QHash<QString, QString> redirect_mapping;
|
QNetworkReply* downloadUrl(QString url);
|
||||||
|
void downloadTorrentUrl(QString url);
|
||||||
|
//void setProxy(QString IP, int port, QString username, QString password);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void downloadFinished(QString url, QString file_path);
|
void downloadFinished(QString url, QString file_path);
|
||||||
void downloadFailure(QString url, QString reason);
|
void downloadFailure(QString url, QString reason);
|
||||||
|
|
||||||
public:
|
private slots:
|
||||||
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:
|
|
||||||
void processDlFinished(QNetworkReply* reply);
|
void processDlFinished(QNetworkReply* reply);
|
||||||
void checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal);
|
void checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal);
|
||||||
#ifndef QT_NO_OPENSSL
|
#ifndef QT_NO_OPENSSL
|
||||||
void ignoreSslErrors(QNetworkReply*,QList<QSslError>);
|
void ignoreSslErrors(QNetworkReply*,QList<QSslError>);
|
||||||
#endif
|
#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
|
#endif
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
#include <libtorrent/session.hpp>
|
#include <libtorrent/session.hpp>
|
||||||
#include <libtorrent/ip_filter.hpp>
|
#include <libtorrent/ip_filter.hpp>
|
||||||
|
|
||||||
using namespace libtorrent;
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
// P2B Stuff
|
// P2B Stuff
|
||||||
@@ -56,8 +55,8 @@ class FilterParserThread : public QThread {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
private:
|
||||||
session *s;
|
libtorrent::session *s;
|
||||||
ip_filter filter;
|
libtorrent::ip_filter filter;
|
||||||
bool abort;
|
bool abort;
|
||||||
QString filePath;
|
QString filePath;
|
||||||
|
|
||||||
@@ -89,12 +88,13 @@ protected:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(abort) return;
|
||||||
s->set_ip_filter(filter);
|
s->set_ip_filter(filter);
|
||||||
qDebug("IP Filter thread: finished parsing, filter applied");
|
qDebug("IP Filter thread: finished parsing, filter applied");
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
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 +177,7 @@ public:
|
|||||||
}
|
}
|
||||||
// Now Add to the filter
|
// Now Add to the filter
|
||||||
try {
|
try {
|
||||||
filter.add_rule(startAddr, endAddr, ip_filter::blocked);
|
filter.add_rule(startAddr, endAddr, libtorrent::ip_filter::blocked);
|
||||||
}catch(exception){
|
}catch(exception){
|
||||||
qDebug("Bad line in filter file, avoided crash...");
|
qDebug("Bad line in filter file, avoided crash...");
|
||||||
}
|
}
|
||||||
@@ -246,7 +246,7 @@ public:
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
filter.add_rule(startAddr, endAddr, ip_filter::blocked);
|
filter.add_rule(startAddr, endAddr, libtorrent::ip_filter::blocked);
|
||||||
} catch(std::exception&) {
|
} catch(std::exception&) {
|
||||||
qDebug("p2p file: line %d is malformed.", nbLine);
|
qDebug("p2p file: line %d is malformed.", nbLine);
|
||||||
qDebug("Line was: %s", line.constData());
|
qDebug("Line was: %s", line.constData());
|
||||||
@@ -313,10 +313,10 @@ public:
|
|||||||
// Network byte order to Host byte order
|
// Network byte order to Host byte order
|
||||||
// asio address_v4 contructor expects it
|
// asio address_v4 contructor expects it
|
||||||
// that way
|
// that way
|
||||||
address_v4 first(ntohl(start));
|
libtorrent::address_v4 first(ntohl(start));
|
||||||
address_v4 last(ntohl(end));
|
libtorrent::address_v4 last(ntohl(end));
|
||||||
// Apply to bittorrent session
|
// 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) {
|
else if(version==3) {
|
||||||
@@ -358,10 +358,10 @@ public:
|
|||||||
// Network byte order to Host byte order
|
// Network byte order to Host byte order
|
||||||
// asio address_v4 contructor expects it
|
// asio address_v4 contructor expects it
|
||||||
// that way
|
// that way
|
||||||
address_v4 first(ntohl(start));
|
libtorrent::address_v4 first(ntohl(start));
|
||||||
address_v4 last(ntohl(end));
|
libtorrent::address_v4 last(ntohl(end));
|
||||||
// Apply to bittorrent session
|
// Apply to bittorrent session
|
||||||
filter.add_rule(first, last, ip_filter::blocked);
|
filter.add_rule(first, last, libtorrent::ip_filter::blocked);
|
||||||
if(abort) return;
|
if(abort) return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -391,16 +391,16 @@ public:
|
|||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void processFilterList(session *s, QStringList IPs) {
|
static void processFilterList(libtorrent::session *s, QStringList IPs) {
|
||||||
// First, import current filter
|
// First, import current filter
|
||||||
ip_filter filter = s->get_ip_filter();
|
libtorrent::ip_filter filter = s->get_ip_filter();
|
||||||
foreach(const QString &ip, IPs) {
|
foreach(const QString &ip, IPs) {
|
||||||
qDebug("Manual ban of peer %s", ip.toLocal8Bit().constData());
|
qDebug("Manual ban of peer %s", ip.toLocal8Bit().constData());
|
||||||
boost::system::error_code ec;
|
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);
|
Q_ASSERT(!ec);
|
||||||
if(!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);
|
s->set_ip_filter(filter);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,9 +118,7 @@ void GeoIPManager::loadDatabase(session *s) {
|
|||||||
#endif
|
#endif
|
||||||
if(QFile::exists(geoipDBpath(false))) {
|
if(QFile::exists(geoipDBpath(false))) {
|
||||||
qDebug("Loading GeoIP database from %s...", qPrintable(geoipDBpath(false)));
|
qDebug("Loading GeoIP database from %s...", qPrintable(geoipDBpath(false)));
|
||||||
if(!s->load_country_db(geoipDBpath(false).toLocal8Bit().constData())) {
|
s->load_country_db(geoipDBpath(false).toLocal8Bit().constData());
|
||||||
std::cerr << "Failed to load Geoip Database at " << qPrintable(geoipDBpath(false)) << std::endl;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
qDebug("ERROR: Impossible to find local Geoip Database");
|
qDebug("ERROR: Impossible to find local Geoip Database");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,22 +40,22 @@ class HeadlessLoader: public QObject {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
HeadlessLoader(QStringList torrentCmdLine) {
|
HeadlessLoader(const QStringList &torrentCmdLine) {
|
||||||
Preferences pref;
|
Preferences pref;
|
||||||
// Enable Web UI
|
// Enable Web UI
|
||||||
pref.setWebUiEnabled(true);
|
pref.setWebUiEnabled(true);
|
||||||
// Instanciate Bittorrent Object
|
// Instanciate Bittorrent Object
|
||||||
BTSession = QBtSession::instance();
|
connect(QBtSession::instance(), SIGNAL(newConsoleMessage(QString)), this, SLOT(displayConsoleMessage(QString)));
|
||||||
connect(BTSession, SIGNAL(newConsoleMessage(QString)), this, SLOT(displayConsoleMessage(QString)));
|
|
||||||
// Resume unfinished torrents
|
// Resume unfinished torrents
|
||||||
BTSession->startUpTorrents();
|
QBtSession::instance()->startUpTorrents();
|
||||||
// Process command line parameters
|
// Process command line parameters
|
||||||
processParams(torrentCmdLine);
|
processParams(torrentCmdLine);
|
||||||
// Display some information to the user
|
// Display some information to the user
|
||||||
std::cout << std::endl << "******** " << qPrintable(tr("Information")) << " ********" << std::endl;
|
std::cout << std::endl << "******** " << qPrintable(tr("Information")) << " ********" << std::endl;
|
||||||
std::cout << qPrintable(tr("To control qBittorrent, access the Web UI at http://localhost:%1").arg(QString::number(pref.getWebUiPort()))) << std::endl;
|
std::cout << qPrintable(tr("To control qBittorrent, access the Web UI at http://localhost:%1").arg(QString::number(pref.getWebUiPort()))) << std::endl;
|
||||||
std::cout << qPrintable(tr("The Web UI administrator user name is: %1").arg(pref.getWebUiUsername())) << std::endl;
|
std::cout << qPrintable(tr("The Web UI administrator user name is: %1").arg(pref.getWebUiUsername())) << std::endl;
|
||||||
if(pref.getWebUiPassword() == "f6fdffe48c908deb0f4c3bd36c032e72") {
|
qDebug() << "Password:" << pref.getWebUiPassword();
|
||||||
|
if(pref.getWebUiPassword() == "32fe0bd2bb001911bb8bcfe23fc92b63") {
|
||||||
std::cout << qPrintable(tr("The Web UI administrator password is still the default one: %1").arg("adminadmin")) << std::endl;
|
std::cout << qPrintable(tr("The Web UI administrator password is still the default one: %1").arg("adminadmin")) << std::endl;
|
||||||
std::cout << qPrintable(tr("This is a security risk, please consider changing your password from program preferences.")) << std::endl;
|
std::cout << qPrintable(tr("This is a security risk, please consider changing your password from program preferences.")) << std::endl;
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,7 @@ public slots:
|
|||||||
qApp->quit();
|
qApp->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void displayConsoleMessage(QString msg) {
|
void displayConsoleMessage(const QString &msg) {
|
||||||
std::cout << qPrintable(msg) << std::endl;
|
std::cout << qPrintable(msg) << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,24 +88,21 @@ public slots:
|
|||||||
foreach(QString param, params) {
|
foreach(QString param, params) {
|
||||||
param = param.trimmed();
|
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)) {
|
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{
|
}else{
|
||||||
if(param.startsWith("bc://bt/", Qt::CaseInsensitive)) {
|
if(param.startsWith("bc://bt/", Qt::CaseInsensitive)) {
|
||||||
qDebug("Converting bc link to magnet link");
|
qDebug("Converting bc link to magnet link");
|
||||||
param = misc::bcLinkToMagnet(param);
|
param = misc::bcLinkToMagnet(param);
|
||||||
}
|
}
|
||||||
if(param.startsWith("magnet:", Qt::CaseInsensitive)) {
|
if(param.startsWith("magnet:", Qt::CaseInsensitive)) {
|
||||||
BTSession->addMagnetUri(param);
|
QBtSession::instance()->addMagnetUri(param);
|
||||||
} else {
|
} else {
|
||||||
BTSession->addTorrent(param);
|
QBtSession::instance()->addTorrent(param);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
QBtSession *BTSession;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#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
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user