Trim trailing whitespaces

Chocobo1 2024-05-01 17:13:13 +08:00
parent 2427b4eaf7
commit de154770ca
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
52 changed files with 178 additions and 183 deletions

@ -106,4 +106,4 @@ You can now run `qbittorrent-no` as it will be in the path (or `qbittorrent`, if
```bash
qbittorrent-nox
```
```

@ -11,7 +11,7 @@ yum install "https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.
## General required dependencies
### Running the binary
### Running the binary
```bash
# step 1
@ -24,7 +24,7 @@ git clone -b RC_1_XXXXXXXXXXX https://github.com/arvidn/libtorrent/
cd libtorrent
./autotool.sh
./configure
make -j
make -j
make install
```

@ -96,4 +96,4 @@ sudo cmake --install build
This will generate an `install_manifest.txt` file in the build folder that can later be used to uninstall all the installed files with `sudo xargs rm < install_manifest.txt`. To override the installation prefix at install-time, pass `--prefix <install_prefix>`.
Patches are welcome to implement Debian package generation with CPack.
Patches are welcome to implement Debian package generation with CPack.

@ -1,7 +1,7 @@
## qBittorrent-nox compilation on FreeBSD (with dependencies as system packages)
1. Install required libraries from repository
> - pkgconf
1. Install required libraries from repository
> - pkgconf
> - qt5-core
> - qt5-network
> - qt5-svg
@ -23,8 +23,8 @@
> ```sh
> make
> ```
4. (Optionally) you can install qBittorrent in the system PATH (root privileges required)
4. (Optionally) you can install qBittorrent in the system PATH (root privileges required)
**_You can also use `qbittorrent-nox` binary directly without installation (`./src/qbittorrent-nox`)_**
> ```sh
> make install
> ```
> ```

@ -1,3 +1,3 @@
This is an advanced topic for users who want to explore alternative ways of building qBittorrent/libtorrent for fun or to cover their special needs.
See https://github.com/userdocs/qbittorrent-nox-static
See https://github.com/userdocs/qbittorrent-nox-static

@ -7,7 +7,7 @@ We are building qBittorrent on Windows with MSVC compiler instead of MinGW. This
* Add MSVC and Qt bin/ folders (''C:\Qt\4.8.2\bin'' and ''C:\Program Files\Microsoft Visual Studio 10.0\VC\bin'') to the ''PATH'' environment variable
* Download [http://downloads.sourceforge.net/project/boost/boost-jam/3.1.18/boost-jam-3.1.18-1-ntx86.zip?use_mirror=freefr Boost Jam] (bjam) and [http://sourceforge.net/projects/boost/files/boost/1.51.0/boost_1_51_0.zip/download Boost library] (v1.42-1.51 are known to work) and unzip them
* Compile boost using the following command in a terminal (bjam must be in the PATH)
bjam -q --with-filesystem --with-thread --toolset=msvc variant=release link=static runtime-link=shared
bjam -q --with-filesystem --with-thread --toolset=msvc variant=release link=static runtime-link=shared
* Define ''BOOST_ROOT'' environment variable and point to the boost source folder (you will need to close and reopen your terminal window after that)
* Download [http://www.slproweb.com/download/Win32OpenSSL-0_9_8x.exe OpenSSL v0.9.x] and install it
* Copy OpenSSL include folder (''C:\OpenSSL\include\openssl'') to MSVC include/ folder (''C:\Program Files\Microsoft Visual Studio 10.0\VC\include'')
@ -24,4 +24,4 @@ We are building qBittorrent on Windows with MSVC compiler instead of MinGW. This
** boost libs are generated in ''boost_1_51\stage\lib''
** libtorrent lib is generated in ''bin\msvc-10.0express\release\boost-source\geoip-static\link-static\threading-multi\''
** OpenSSL libs are located at ''C:\OpenSSL\lib\VC'' as a default
* Build qBittorrent using QtCreator, it should compile fine!
* Build qBittorrent using QtCreator, it should compile fine!

@ -57,7 +57,7 @@ Let's assume that the working directory for our compilation will be '''C:\qBitto
cd ..
cd b<TAB><ENTER>
* Now you will need to bootstrap Boost so it will build b2.exe(previously bjam.exe). Issue the following command:
bootstrap.bat
bootstrap.bat
* Compile a static version of Boost. Issue the following command where N is the number of CPU cores you have or how many threads you want b2 to use when compiling (msvc version is needed for the correct choice of msvc-9.0 if installed msvc-10.0) (replace N with the number of processor cores):
b2 -q --with-system --toolset=msvc-9.0 variant=release link=static runtime-link=static -j N
@ -87,7 +87,7 @@ Let's assume that the working directory for our compilation will be '''C:\qBitto
=== Compiling Qt ===
* Extract the Qt sources in the working dir.
* Open the MSVC2008 command shell. Start->Programs->Microsoft Visual C++ 2008 Express Edition->Visual Studio Tools->Visual Studio 2008 Command Prompt
* Navigate to the Qtsource folder. eg ''cd C:\qBittorrent\qt-everywhere-opensource-src-4.8.4''
* Navigate to the Qtsource folder. eg ''cd C:\qBittorrent\qt-everywhere-opensource-src-4.8.4''
* Now we will build a static version of Qt with making as small as possible.
* Open '''mkspecs\win32-msvc2008\qmake.conf''' and replace the '''QMAKE_CFLAGS_RELEASE''' line with:
QMAKE_CFLAGS_RELEASE = -O1 -Og -GL -MT
@ -121,4 +121,4 @@ Let's assume that the working directory for our compilation will be '''C:\qBitto
* Open the ''winconf.pri'' file and adjust the paths. Read the comments. '''NOTE:''' Replace any '\' with '/' in the paths to avoid some Qt warnings.
* Open the ''winconf-msvc.pri'' file and adjust the filename of the lib of Boost.
* Select Build->Build All
* After the compilation ends you should have ''qbittorrent.exe'' in ''<build folder>\src\release''. "build folder" is where you chose qBittorrent to be build in the popup window.
* After the compilation ends you should have ''qbittorrent.exe'' in ''<build folder>\src\release''. "build folder" is where you chose qBittorrent to be build in the popup window.

@ -1,9 +1,9 @@
This page describes the process of building qBittorrent on Windows targeting x86\_64 (aka x64 aka AMD64 aka 64-bit) architecture. Building for x86\_64 arch is only supported by Visual Studio Professional or better, Express edition won't do.
> Note: It is possible to use 64-bit compiler collection included in WinSDK 7.1. But if you already have ***ANY*** edition of Visual Studio 2010 installed with SP1 applied you won't be able to install it. Thus, using WinSDK is out of this article's scope.
>
>
> Another note: Even though this article tries to be as full as possible, it is not recommended for users without basic knowledge in programming and windows shell scripting.
>
>
> Final note: Resulting binary will not support Windows XP 64-bit Edition and Windows Server 2003 64-bit Edition unless you follow special notes describing how to make it compatible with those systems.
# Table of Contents #
@ -59,7 +59,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
1. In this article I'm using a drive as a working directory, so I have something like that:
T:
T:
\sources
\install
@ -154,7 +154,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
Available compression methods:
1: zlib compression
And in the very end you should see `passed all tests`.
1. Install OpenSSL:
@ -255,7 +255,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
+ Find `INCLUDEPATH += $$quote(C:/qBittorrent/Zlib/include)`<br />
and replace with
`INCLUDEPATH += $$quote(T:/install/Zlib/include)`<br />
and insert `INCLUDEPATH += $$quote(T:/install/OpenSSL/include)` on next line
and insert `INCLUDEPATH += $$quote(T:/install/OpenSSL/include)` on next line
+ Find `LIBS += $$quote(-LC:/qBittorrent/boost_1_51_0/stage/lib)`<br />
and replace with
`LIBS += $$quote(-LT:/install/Boost/lib)`
@ -284,7 +284,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
+ Find `DEFINES += _WIN32_WINNT=0x0500`<br />
and replace with `DEFINES += _WIN32_WINNT=0x0600`
+ If you want to build For XP 64-bit or WinServer 2003 64-bit replace `DEFINES += _WIN32_WINNT=0x0500` with `DEFINES += _WIN32_WINNT=0x0501`
1. Build qBt:
SET "PATH=T:\install\Qt\bin;%PATH%"
@ -327,4 +327,3 @@ If you want to use the resulting binaries on other Windows computers (or redistr
Alternatively you can copy redistributable dlls into program folder like this:
XCOPY /Y /Q /I "%VCINSTALLDIR%\redist\x64\Microsoft.VC100.CRT\*.dll" T:\install\qBittorrent\

@ -164,7 +164,7 @@ Let's assume that the working directory(ies) for our compilation will be:
..\boost\b2 -q --prefix="stage" --without-python --toolset=msvc-12.0 variant=release link=static runtime-link=static encryption=openssl logging=none geoip=static dht-support=on boost=source character-set=unicode boost-link=static -sBOOST_ROOT="C:\qBittorrent64\boost" include="C:\qBittorrent64\install\include" library-path="C:\qBittorrent64\install\lib" architecture=x86 address-model=64 install
```
* Note: When you use **libtorrent-rasterbar-1.0.4**:
* Note: When you use **libtorrent-rasterbar-1.0.4**:
change ```dht-support=on``` to ```dht=on```
see [libtorrent manual](http://www.libtorrent.org/building.html)
@ -260,4 +260,4 @@ Let's assume that the working directory(ies) for our compilation will be:
* After the compilation ends you should have ```qbittorrent.exe``` in:
* For **x86**: ```C:\qBittorrent\build-qbittorrent-x86-Release\src\release```
* For **x64**: ```C:\qBittorrent64\build-qbittorrent-x64-Release\src\release```
* For **x64**: ```C:\qBittorrent64\build-qbittorrent-x64-Release\src\release```

@ -1,7 +1,7 @@
This page describes the process of building qBittorrent on Windows targeting x86\_64 (aka x64 aka AMD64 aka 64-bit) architecture. Building for x86\_64 arch is only supported by Visual Studio Professional or better, Express edition won't do.
> Note: Even though this article tries to be as full as possible, it is not recommended for users without basic knowledge in programming and windows shell scripting.
>
>
> Final note: Resulting binary will not support Windows XP 64-bit Edition and Windows Server 2003 64-bit Edition unless you follow special notes describing how to make it compatible with those systems.
# Table of Contents #
@ -55,7 +55,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
1. In this article I'm using a drive as a working directory, so I have something like that:
T:
T:
\sources
\install
@ -152,7 +152,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
Available compression methods:
1: zlib compression
And in the very end you should see `passed all tests`.
1. Install OpenSSL:
@ -253,7 +253,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
+ Find `INCLUDEPATH += $$quote(C:/qBittorrent/Zlib/include)`<br />
and replace with
`INCLUDEPATH += $$quote(T:/install/Zlib/include)`<br />
and insert `INCLUDEPATH += $$quote(T:/install/OpenSSL/include)` on next line
and insert `INCLUDEPATH += $$quote(T:/install/OpenSSL/include)` on next line
+ Find `LIBS += $$quote(-LC:/qBittorrent/boost_1_51_0/stage/lib)`<br />
and replace with
`LIBS += $$quote(-LT:/install/Boost/lib)`
@ -282,7 +282,7 @@ This page describes the process of building qBittorrent on Windows targeting x86
+ Find `DEFINES += _WIN32_WINNT=0x0500`<br />
and replace with `DEFINES += _WIN32_WINNT=0x0600`
+ If you want to build For XP 64-bit or WinServer 2003 64-bit replace `DEFINES += _WIN32_WINNT=0x0500` with `DEFINES += _WIN32_WINNT=0x0501`
1. Build qBt:
SET "PATH=T:\install\Qt\bin;%PATH%"

@ -9,7 +9,7 @@ This page describes how to compile 64-bit qBittorrent using MSVC 2017 under Wind
* Latest release of [https://www.openssl.org/ OpenSSL].
* Latest release of the [https://www.boost.org/ Boost libraries]. Currently tested only with boost 1.68.
* Latest release of [https://www.libtorrent.org/ libtorrent(rasterbar)]. Currently tested with libtorrent(rasterbar) 1.1.9
* Latest release of the [https://download.qt.io/official_releases/qt/ Qt libraries] source. Currently tested only with Qt Everywhere '''5.9.6'''.
* Latest release of the [https://download.qt.io/official_releases/qt/ Qt libraries] source. Currently tested only with Qt Everywhere '''5.9.6'''.
* Latest release of [https://www.qbittorrent.org qBittorrent].
* [https://download.qt.io/official_releases/qtcreator/ Qt Creator].
@ -47,7 +47,7 @@ This page describes how to compile 64-bit qBittorrent using MSVC 2017 under Wind
* Now we will build a static version of OpenSSL. Issue the following commands:
perl Configure VC-WIN64A no-shared zlib no-zlib-dynamic threads --openssldir=C:\openssl --prefix=G:\QBITTORRENT\install_msvc64\base -IG:\QBITTORRENT\install_msvc64\base\include -LG:\QBITTORRENT\install_msvc64\base\lib
ms\do_win64a
* '''NOTE:''' Using the <code>--openssldir</code> switch is very important. It controls the path that will get hardcoded into openssl when it looks for the file <code>openssl.cnf</code>. Otherwise openssl will use the prefix path. If that path is on any other drive other than C: it will cause weird problems for '''some''' of the end users. If users have assigned to G: (or any other letter you used) a card reader/cdrom/dvdrom that doesn't have a card/cd/dvd plugged in they will get a cryptic message saying <code>There is no disk in the drive. Please insert a disk into drive G:</code>. See issue [https://github.com/qbittorrent/qBittorrent/issues/4190 #4190]. So for that reason we use a dummy path under drive C: which is always available.
* '''NOTE:''' Using the <code>--openssldir</code> switch is very important. It controls the path that will get hardcoded into openssl when it looks for the file <code>openssl.cnf</code>. Otherwise openssl will use the prefix path. If that path is on any other drive other than C: it will cause weird problems for '''some''' of the end users. If users have assigned to G: (or any other letter you used) a card reader/cdrom/dvdrom that doesn't have a card/cd/dvd plugged in they will get a cryptic message saying <code>There is no disk in the drive. Please insert a disk into drive G:</code>. See issue [https://github.com/qbittorrent/qBittorrent/issues/4190 #4190]. So for that reason we use a dummy path under drive C: which is always available.
* Edit the ''ms\nt.mak'' file and find the line that says:
EX_LIBS=/libpath::\QBITTORRENT\install_msvc\base\lib ws2_32.lib gdi32.lib advapi32.lib crypt32.lib user32.lib zlib1.lib
* Replace '''zlib1.lib''' with '''zlib.lib'''
@ -66,7 +66,7 @@ This page describes how to compile 64-bit qBittorrent using MSVC 2017 under Wind
* Extract the Boost sources in the working dir.
* Navigate to the Boost source folder. eg ''cd G:\QBITTORRENT\boost_1_68_0''
* Now you will need to bootstrap Boost so it will build b2.exe(previously bjam.exe). Issue the following command:
bootstrap.bat
bootstrap.bat
* Compile a static version of Boost. Issue the following command. You can replace %NUMBER_OF_PROCESSORS% in <code>-j %NUMBER_OF_PROCESSORS%</code> with a different number of threads you want b2 to use when compiling:
b2 -q --toolset=msvc-14.1 address-model=64 variant=release link=static runtime-link=static include="G:\QBITTORRENT\install_msvc64\base\include" library-path="G:\QBITTORRENT\install_msvc64\base\lib" --prefix="G:\QBITTORRENT\install_msvc64\base" cxxflags="-O1 -Gy -Gw -GL" linkflags="/NOLOGO /DYNAMICBASE /NXCOMPAT /LTCG /OPT:REF /OPT:ICF /MANIFEST:EMBED /INCREMENTAL:NO" --hash -j %NUMBER_OF_PROCESSORS%
* Install (it take a while to copy the numerous files):
@ -84,7 +84,7 @@ This page describes how to compile 64-bit qBittorrent using MSVC 2017 under Wind
=== Compiling Qt5 ===
* Extract the Qt sources in the working dir.
* Navigate to the Qt source folder. eg ''cd G:\QBITTORRENT\qt-everywhere-opensource-src-5.9.6''
* Navigate to the Qt source folder. eg ''cd G:\QBITTORRENT\qt-everywhere-opensource-src-5.9.6''
* Now we will build a static version of Qt and make it as small as possible.
* Open '''qtbase/mkspecs/common/msvc-desktop.conf''' and replace the relevant lines with:
QMAKE_CFLAGS_RELEASE = -O1 -Gy -Gw -GL -MT
@ -130,7 +130,7 @@ This page describes how to compile 64-bit qBittorrent using MSVC 2017 under Wind
and comment line by putting # in front of them.
DEFINES += BOOST_ASIO_SEPARATE_COMPILATION
change:
change:
CONFIG(debug, debug|release) {
LIBS += libtorrentd.lib \
libboost_system-vc140-mt-sgd-1_64.lib
@ -149,4 +149,4 @@ to
libboost_system-vc141-mt-s-x64-1_68.lib
}
* Select Build->Build All
* After the compilation ends you should have ''qbittorrent.exe'' in <code><build folder>\src\release</code>. "build folder" is where you chose qBittorrent to be build in the popup window.
* After the compilation ends you should have ''qbittorrent.exe'' in <code><build folder>\src\release</code>. "build folder" is where you chose qBittorrent to be build in the popup window.

@ -253,4 +253,4 @@ sudo systemctl stop qbittorrent
If the version has changed then the new version was successfully compiled and installed!
Restart the `qbittorrent` service: `sudo systemctl start qbittorrent`.
Restart the `qbittorrent` service: `sudo systemctl start qbittorrent`.

@ -12,13 +12,13 @@ If you are looking only for the latest version of qBittorrent, just head to the
`sudo apt-get install libboost-dev libboost-system-dev`
* Qt4 libraries
* Qt4 libraries
`sudo apt-get install libqt4-dev`
_[ at the time of this writing, Qt5 libraries were not available for Raspbian on B-Pro. You can safely compile QBitTorrent against Qt4 Libraries. ]_
* Python _(Run time only dependency, needed by the search engine)_
* Python _(Run time only dependency, needed by the search engine)_
`sudo apt-get install python`
@ -76,16 +76,16 @@ To overcome this error and configure correctly you must issue the following comm
## Install library and python bindings:
`sudo checkinstall`
_[ The `checkinstall `command replaces the `make install`. It created a DEB Package for easier removal/re-install trough dpkg. ]_
`sudo ldconfig`
`sudo ldconfig`
_[Running `ldconfig` avoids an ImportError for libtorrent-rasterbar.so, a result of Python being unable to find the main library.]_
# Compiling qBittorrent (with the GUI)
Now that each prerequisite has been completed you mut obtain the qBittorrent source code.
Now that each prerequisite has been completed you mut obtain the qBittorrent source code.
Either download and extract a .tar archive from [Sourceforge]( https://sourceforge.net/projects/qbittorrent/files/qbittorrent/) or use the following commands to speed-up the process.
@ -121,7 +121,7 @@ To overcome this error and configure correctly you must issue the following comm
# Compiling qBittorrent-NOX _(aka Without the GUI, also called headless)_
Now that each prerequisite has been completed you mut obtain the qBittorrent source code.
Now that each prerequisite has been completed you mut obtain the qBittorrent source code.
Either download and extract a .tar archive from [Sourceforge]( https://sourceforge.net/projects/qbittorrent/files/qbittorrent/) or use the following commands to speed-up the process.
@ -192,7 +192,7 @@ By doing so you will not need to keep open a terminal window in order to execute
_**Please Note:**_ **the following solution is based upon personal research** and days of testing. I am aware that it might not be the nicest solution available, but if your are **running qBittorrent-nox on B-Pro with Raspbian** chances are that you too noticed how **impredictible **and **unstable **is its behaviour when using **`update-rc.d` method.**
_The following commands are based upon the assumption that you are running qBittorrent under a dedicated user._
_The following commands are based upon the assumption that you are running qBittorrent under a dedicated user._
If you are running it under the 'bananapi' root user you need to execute the following with 'root privileges'.
Exceute the following command:
@ -205,7 +205,7 @@ Scroll to the bottom of the file and insert the following line:
Use " CTRL + O " to save the file, than " CTRL + X " to exit.
That's it! **Now qBittorrent-nox should be correctly configured for autostart!**
That's it! **Now qBittorrent-nox should be correctly configured for autostart!**
If you want to try it just reboot you B-Pro with the command:
@ -217,6 +217,6 @@ This work has been realized putting togheter personal knowledge and information
**Credits are as follows:**
**Thanks to** [**SledgeHammer**](https://github.com/qbittorrent/qBittorrent/wiki/Compiling-qBittorrent-on-Debian-and-Ubuntu) for providing a solid template for compiling and running qBittorrent under Debian.
**Thanks to** [**SledgeHammer**](https://github.com/qbittorrent/qBittorrent/wiki/Compiling-qBittorrent-on-Debian-and-Ubuntu) for providing a solid template for compiling and running qBittorrent under Debian.
**Thanks to** [**Cas**](https://dev.deluge-torrent.org/wiki/Building/libtorrent) from Deluge Wiki for explaining how to compile libtorrent_rastebar under Debian with the use of checkinstall.

@ -53,7 +53,7 @@ The nice thing about `vcpkg` is that it also allows you to easily patch any of t
```
git clone https://github.com/microsoft/vcpkg
cd .\vcpkg
cd .\vcpkg
.\bootstrap-vcpkg.bat -disableMetrics
.\vcpkg integrate install
```

@ -39,7 +39,7 @@ You may use the following qBittorrent-specific options to customize the build. P
Building qBittorrent with CMake comes down to a 2-step process:
- the configuration and generation, also known as the **configure step/"configure-time"**, where
- the configuration and generation, also known as the **configure step/"configure-time"**, where
- and the build itself, also known as the **build step/"build-time"**.
In the **configure step** where it is possible to set some options to customize the qBittorrent build, CMake checks that all prerequisites and dependencies are in order and generates input files for some underlying buildsystem.
@ -48,7 +48,7 @@ These input files will be then used to actually build the project in the **build
A typical CMake invocation looks like the following 2 commands:
```
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DWEBUI=OFF
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DWEBUI=OFF
cmake --build build --parallel 4
```
@ -194,4 +194,4 @@ CMake does not strip binaries by default. To install stripped binaries, pass the
make --install build_dir --strip
```
Note that stripped binaries will produce useless stacktraces.
Note that stripped binaries will produce useless stacktraces.

@ -58,7 +58,7 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2017
perl Configure VC-WIN32 no-shared no-zlib no-zlib-dynamic threads --release --openssldir=C:\openssl --prefix=G:\QBITTORRENT\install_msvc32\base -IG:\QBITTORRENT\install_msvc32\base\include -LG:\QBITTORRENT\install_msvc32\base\lib --with-zlib-lib=G:\QBITTORRENT\install_msvc32\base\lib\zlib.lib
:'''64-bit'''
perl Configure VC-WIN64A no-shared no-zlib no-zlib-dynamic threads --release --openssldir=C:\openssl --prefix=G:\QBITTORRENT\install_msvc64\base -IG:\QBITTORRENT\install_msvc64\base\include -LG:\QBITTORRENT\install_msvc64\base\lib --with-zlib-lib=G:\QBITTORRENT\install_msvc64\base\lib\zlib.lib
* '''NOTE:''' Using the <code>--openssldir</code> switch is very important. It controls the path that will get hardcoded into openssl when it looks for the file <code>openssl.cnf</code>. Otherwise openssl will use the prefix path. If that path is on any other drive other than C: it will cause weird problems for '''some''' of the end users. If users have assigned to G: (or any other letter you used) a card reader/cdrom/dvdrom that doesn't have a card/cd/dvd plugged in they will get a cryptic message saying <code>There is no disk in the drive. Please insert a disk into drive G:</code>. See issue [https://github.com/qbittorrent/qBittorrent/issues/4190 #4190]. So for that reason we use a dummy path under drive C: which is always available.
* '''NOTE:''' Using the <code>--openssldir</code> switch is very important. It controls the path that will get hardcoded into openssl when it looks for the file <code>openssl.cnf</code>. Otherwise openssl will use the prefix path. If that path is on any other drive other than C: it will cause weird problems for '''some''' of the end users. If users have assigned to G: (or any other letter you used) a card reader/cdrom/dvdrom that doesn't have a card/cd/dvd plugged in they will get a cryptic message saying <code>There is no disk in the drive. Please insert a disk into drive G:</code>. See issue [https://github.com/qbittorrent/qBittorrent/issues/4190 #4190]. So for that reason we use a dummy path under drive C: which is always available.
* Edit the generated ''makefile'' file.
* At the end of the CFLAGS variable append:
:'''32-bit'''
@ -81,7 +81,7 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2017
* Extract the Boost sources in the working dir.
* Navigate to the Boost source folder. eg ''cd G:\QBITTORRENT\boost_1_71_0''
* Now you will need to bootstrap Boost so it will build b2.exe(previously bjam.exe). Issue the following command:
bootstrap.bat
bootstrap.bat
* Compile a static version of Boost. Issue the following command. Replace N in <code>-j N</code> with the number of CPU cores you have or how many threads you want b2 to use when compiling:
:'''32-bit'''
b2 -q --with-system --toolset=msvc-14.1 variant=release link=static runtime-link=static include="G:\QBITTORRENT\install_msvc32\base\include" library-path="G:\QBITTORRENT\install_msvc32\base\lib" define=BOOST_ASIO_DISABLE_CONNECTEX cxxflags="-O1 -Oy- -Gy -Gw -GL" linkflags="/NOLOGO /DYNAMICBASE /NXCOMPAT /LTCG /OPT:REF /OPT:ICF=5 /MANIFEST:EMBED /INCREMENTAL:NO" --hash -j N
@ -106,7 +106,7 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2017
=== Compiling Qt5 ===
* Extract the Qt sources in the working dir.
* Navigate to the Qt source folder. eg ''cd G:\QBITTORRENT\qt-everywhere-src-5.13.2''
* Navigate to the Qt source folder. eg ''cd G:\QBITTORRENT\qt-everywhere-src-5.13.2''
* Now we will build a static version of Qt and make it as small as possible.
* Open '''qtbase/mkspecs/common/msvc-desktop.conf''' and replace the relevant lines with:
:'''32-bit'''

@ -5,12 +5,12 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2019
* A [https://www.perl.org/ Perl language] interpreter. [http://strawberryperl.com/ Strawberry Perl] will do fine.
* Latest release of the [https://www.nasm.us/ NASM assembler].
* Latest release of [https://www.zlib.net/ Zlib].
* Latest release of [https://www.openssl.org/source/ OpenSSL] (1.1.1 branch).
* Latest release of [https://www.openssl.org/source/ OpenSSL] (1.1.1 branch).
* Latest release of the [https://www.boost.org/ Boost libraries].
* Latest release of [https://www.libtorrent.org/ libtorrent(rasterbar)] (1.2.x branch).
* Latest release of the [https://download.qt.io/official_releases/qt/ Qt libraries] source.
** Choose the latest release, and then download the .tar.xz or .zip file under the 'single' directory. For example, 5.15.1 may be found [https://download.qt.io/official_releases/qt/5.15/5.15.1/single/ here].
** '''Note''': This is a massive source tree, with many small files, and will take some time to decompress.
** '''Note''': This is a massive source tree, with many small files, and will take some time to decompress.
* Latest release of qBittorrent (clone the repository or download the source tarball of the latest release). Typically you want either the latest stable release or the latest master commit, for the latest fixes and improvements.
* [https://download.qt.io/official_releases/qtcreator/ Qt Creator].
@ -60,7 +60,7 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2019
perl Configure VC-WIN32 no-shared no-zlib no-zlib-dynamic threads --release --openssldir=C:\openssl --prefix=G:\QBITTORRENT\install_msvc32\base -IG:\QBITTORRENT\install_msvc32\base\include -LG:\QBITTORRENT\install_msvc32\base\lib --with-zlib-lib=G:\QBITTORRENT\install_msvc32\base\lib\zlib.lib
:'''64-bit'''
perl Configure VC-WIN64A no-shared no-zlib no-zlib-dynamic threads --release --openssldir=C:\openssl --prefix=G:\QBITTORRENT\install_msvc64\base -IG:\QBITTORRENT\install_msvc64\base\include -LG:\QBITTORRENT\install_msvc64\base\lib --with-zlib-lib=G:\QBITTORRENT\install_msvc64\base\lib\zlib.lib
* '''NOTE:''' Using the <code>--openssldir</code> switch is very important. It controls the path that will get hardcoded into openssl when it looks for the file <code>openssl.cnf</code>. Otherwise openssl will use the prefix path. If that path is on any other drive other than C: it will cause weird problems for '''some''' of the end users. If users have assigned to G: (or any other letter you used) a card reader/cdrom/dvdrom that doesn't have a card/cd/dvd plugged in they will get a cryptic message saying <code>There is no disk in the drive. Please insert a disk into drive G:</code>. See issue [https://github.com/qbittorrent/qBittorrent/issues/4190 #4190]. So for that reason we use a dummy path under drive C: which is always available.
* '''NOTE:''' Using the <code>--openssldir</code> switch is very important. It controls the path that will get hardcoded into openssl when it looks for the file <code>openssl.cnf</code>. Otherwise openssl will use the prefix path. If that path is on any other drive other than C: it will cause weird problems for '''some''' of the end users. If users have assigned to G: (or any other letter you used) a card reader/cdrom/dvdrom that doesn't have a card/cd/dvd plugged in they will get a cryptic message saying <code>There is no disk in the drive. Please insert a disk into drive G:</code>. See issue [https://github.com/qbittorrent/qBittorrent/issues/4190 #4190]. So for that reason we use a dummy path under drive C: which is always available.
* Edit the generated ''makefile'' file.
* At the end of the CFLAGS variable append:
:'''32-bit'''
@ -83,7 +83,7 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2019
* Extract the Boost sources in the working dir.
* Navigate to the Boost source folder. eg <code>cd G:\QBITTORRENT\boost_1_73_0</code>
* Now you will need to bootstrap Boost so it will build b2.exe(previously bjam.exe). Issue the following command:
bootstrap.bat
bootstrap.bat
* Compile a static version of Boost. Issue the following command. Replace N in <code>-j N</code> with the number of CPU cores you have or how many threads you want b2 to use when compiling:
:'''32-bit'''
b2 -q --with-system --with-date_time --toolset=msvc-14.2 variant=release link=static runtime-link=static include="G:\QBITTORRENT\install_msvc32\base\include" library-path="G:\QBITTORRENT\install_msvc32\base\lib" define=BOOST_ASIO_DISABLE_CONNECTEX cxxflags="-O1 -Oy- -Gy -Gw -GL" linkflags="/NOLOGO /DYNAMICBASE /NXCOMPAT /LTCG /OPT:REF /OPT:ICF=5 /MANIFEST:EMBED /INCREMENTAL:NO" --hash -j N
@ -156,13 +156,13 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2019
:* At the end of the header inclusions at beginning of that file, add this line:
:::<code>#include <stdexcept></code>
:* and save your changes.
* Navigate to <code>G:\QBITTORRENT\qBittorrent</code> in Windows Explorer, and rename the <code>conf.pri.windows</code> file to <code>conf.pri</code> (or make a copy of it with that name). You'll have to change a few paths here so that qBittorrent successfully builds and links.
::: '''NOTE:''' The paths below use the proper pathnames for a 64-bit build. Make sure you adjust them if you are building for a 32-bit target. Moreover, there are some notes in <code>conf.pri</code> itself that provide for alternative configurations that are worth paying attention to, but are not covered here. Keeping that in mind:
* Navigate to <code>G:\QBITTORRENT\qBittorrent</code> in Windows Explorer, and rename the <code>conf.pri.windows</code> file to <code>conf.pri</code> (or make a copy of it with that name). You'll have to change a few paths here so that qBittorrent successfully builds and links.
::: '''NOTE:''' The paths below use the proper pathnames for a 64-bit build. Make sure you adjust them if you are building for a 32-bit target. Moreover, there are some notes in <code>conf.pri</code> itself that provide for alternative configurations that are worth paying attention to, but are not covered here. Keeping that in mind:
:* Edit the first INCLUDEPATH to look like this (adjust for actual boost version):
INCLUDEPATH += $$quote(G:/QBITTORRENT/boost_1_73_0)
:* Edit the second INCLUDEPATH to look like this:
INCLUDEPATH += $$quote(G:/QBITTORRENT/install_msvc64/base/include)
:* Edit the third INCLUDEPATH to look like this:
:* Edit the third INCLUDEPATH to look like this:
INCLUDEPATH += $$quote(G:/QBITTORRENT/install_msvc64/qt5/include)
:* Delete the lines with the rest of the INCLUDEPATH variables
:* Edit the first LIBS to look like this (adjust for actual boost version):
@ -173,15 +173,15 @@ This page describes how to compile 32-bit and 64-bit qBittorrent using MSVC 2019
LIBS += $$quote(-LG:/QBITTORRENT/install_msvc64/qt5/lib)
:* Delete the nearby lines with the rest of the LIBS variables that '''expect paths'''
:* Look for the LIBS variables that take the lib names of libboost_system.
:**These lines may mention the <code>libtorrent</code> library as well on versions earlier than the 4.3.x branch; just leave that alone if it is present.
:**These lines may mention the <code>libtorrent</code> library as well on versions earlier than the 4.3.x branch; just leave that alone if it is present.
:**Adjust the filename of the <code>libboost_system</code> library. Its full name will vary based on the boost version, build-system, and target architecture, among other things. In our example, it can be found under <code>G:/QBITTORRENT/boost_1_73_0/stage/lib</code>.
:***For example, if you've built an x64 build of boost 1.73.0 with MSVC2019, it should be <code>libboost_system-vc142-mt-s-x64-1_73.lib</code>
:** '''Additionally''', if you are building 4.3.x or later, you must '''also''' specify the correct filename of the <code>libboost_date_time</code> library here. You can find out what it is by looking in the same directory that the <code>libboost_system</code> library is.
:** '''Additionally''', if you are building 4.3.x or later, you must '''also''' specify the correct filename of the <code>libboost_date_time</code> library here. You can find out what it is by looking in the same directory that the <code>libboost_system</code> library is.
:* If you are compiling the 4.2.x branch rather than the latest master commit, find the following line
:::<code>LIBS += libeay32.lib ssleay32.lib</code>
::*and replace it with:
:::<code>LIBS += libcrypto.lib libssl.lib</code>
:* Save your changes.
:* Save your changes.
* Select Build->Build Project "qbittorrent"
* After the compilation ends you should have ''qbittorrent.exe'' in <code><build folder>\src\release</code>. "build folder" is where you chose qBittorrent to be built in the popup window.

@ -20,7 +20,7 @@ At runtime, qBittorrent loads only `stylesheet.qss` to support theming and `conf
You can read more about Qt stylesheet syntax [here](https://doc.qt.io/Qt-5/stylesheet-syntax.html). A reference is also available [here](https://doc.qt.io/qt-5/stylesheet.html).
## Changing QBittorrent specific colors
for changing qBittorrent specific GUI colors, you have to use config.json, NOTE: A large part of colors is already changeable from stylesheet but the following are QBitTorrent's specific context-sensitive colors,
for changing qBittorrent specific GUI colors, you have to use config.json, NOTE: A large part of colors is already changeable from stylesheet but the following are QBitTorrent's specific context-sensitive colors,
```json
{
@ -50,14 +50,14 @@ for changing qBittorrent specific GUI colors, you have to use config.json, NOTE:
"Palette.BrightTextDisabled": "<color>",
"Palette.HighlightedTextDisabled": "<color>",
"Palette.ButtonTextDisabled": "<color>",
"Log.Time": "<color>",
"Log.Normal": "<color>",
"Log.Info": "<color>",
"Log.Warning": "<color>",
"Log.Critical": "<color>",
"Log.BannedPeer": "<color>",
"TransferList.Downloading": "<color>",
"TransferList.StalledDownloading": "<color>",
"TransferList.DownloadingMetadata": "<color>",
@ -75,14 +75,14 @@ for changing qBittorrent specific GUI colors, you have to use config.json, NOTE:
"TransferList.PausedUploading": "<color>",
"TransferList.Moving": "<color>",
"TransferList.MissingFiles": "<color>",
"TransferList.Error": "<color>"
"TransferList.Error": "<color>"
}
}
```
Here
Here
1. Palette referes to [QPalette](https://doc.qt.io/qt-5/qpalette.html), and following string(after .) denotes [Color roles](https://doc.qt.io/qt-5/qpalette.html#ColorRole-enum)
2. Log refers to log messages and the following string (after .) denotes the type of messages
3. Transfer List refers to central view containing all of your torrents entries and the following string(after .) denotes torrent state on which based on which row colors would be decided.
3. Transfer List refers to central view containing all of your torrents entries and the following string(after .) denotes torrent state on which based on which row colors would be decided.
`<color>` value supports normal rgb values(#rrggbb) or svg color names. It follows [Qt's named color convention](https://doc.qt.io/qt-5/qcolor.html#setNamedColor) convention
@ -110,7 +110,7 @@ an example can be read here https://github.com/jagannatharjun/qbt-theme/issues/2
Following way of changing TransferList row's color is removed after version 4.2.5, please change your bundle files accordingly and instead use `config.json`
```css
TransferListWidget
TransferListWidget
{
qproperty-downloadingStateForeground: limegreen;
qproperty-forcedDownloadingStateForeground: limegreen;
@ -130,6 +130,6 @@ TransferListWidget
qproperty-checkingUploadingStateForeground: #00cdcd;
qproperty-checkingResumeDataStateForeground: #00cdcd;
qproperty-movingStateForeground: #00cdcd;
qproperty-unknownStateForeground: red;
qproperty-unknownStateForeground: red;
}
```

@ -8,10 +8,10 @@ Also, this mechanism is controlled via configuration options (core UI preference
In order to increase security, a `public` (login process handling) and `private` (WebUI functionality) separation of files is implemented (see core WebUI files' segregation as ref: https://github.com/qbittorrent/qBittorrent/tree/master/src/webui/www)
### First steps to an alternate WebUI:
Copy the files:
https://github.com/qbittorrent/qBittorrent/tree/master/src/webui/www to a `<new folder>`
https://github.com/qbittorrent/qBittorrent/tree/master/src/icons to `<new folder>/public`
https://github.com/qbittorrent/qBittorrent/tree/master/src/icons to `<new folder>/private`
Copy the files:
https://github.com/qbittorrent/qBittorrent/tree/master/src/webui/www to a `<new folder>`
https://github.com/qbittorrent/qBittorrent/tree/master/src/icons to `<new folder>/public`
https://github.com/qbittorrent/qBittorrent/tree/master/src/icons to `<new folder>/private`
Enable AltWebUI on the options and point the entry `WebUI\RootFolder` to `<new folder>`, then launch qBittorrent.
Access the WebUI as always, modify the files at `<new folder>` according to your needs and refresh the browser to see the changes reflected.

@ -172,4 +172,4 @@ Deprecated options may be safely removed from your config file.
* '''Listen on IPv6 address''' — Also known as the config string <code>Connection\InterfaceListenIPv6</code> (since <code>4.2.1</code>). Replacement: "Optional IP address to bind to", confg string <code>Connection\InterfaceAddress</code>. Reason: [https://github.com/qbittorrent/qBittorrent/pull/11592 #11592].
* '''Maximum number of half-open connections''' — Also known as the config string <code>BitTorrent/Session/MaxHalfOpenConnections</code> (since <code>4.2.0</code>). Replacement: None. Reason: [https://github.com/arvidn/libtorrent/commit/ceccc2a4835fefce836001a7ccff8cca82d58999 option removed from libtorrent as it did not make sense anymore].
* '''Guided read cache''' — enables the disk cache to adjust the size of a cache line generated by peers to depend on the upload rate you are sending to that peer. The intention is to optimize the RAM usage of the cache, to read ahead further for peers that you're sending faster to.
* '''Strict super seeding''' — activate libtorrent's strict mode for super seeding ("when this is set to true, a piece has to have been forwarded to a third peer before another one is handed out. This is the traditional definition of super seeding.").
* '''Strict super seeding''' — activate libtorrent's strict mode for super seeding ("when this is set to true, a piece has to have been forwarded to a third peer before another one is handed out. This is the traditional definition of super seeding.").

@ -4,4 +4,4 @@ You can run external programs on torrent completions. Find the setting under **O
### Notes
If you're writing a bash script, make sure you make the script executable by using `chmod 755 /path/to/script`
If you're writing a bash script, make sure you make the script executable by using `chmod 755 /path/to/script`

@ -44,11 +44,11 @@ exit 0
```
> :information_source: Make sure to replace the `username` and `password` with your credentials before using or else this will not work. Another caveat is that if your password contains `#` or `&`, you'll need to replace with [ASCII encoded characters](https://www.w3schools.com/tags/ref_urlencode.ASP).
>
>
> :link: [gist](https://gist.github.com/jef/e29126da5953c331310c1b6c58502be0) for potential script changes or comments.
And set **Run external program on torrent completion** to:
`/path/to/savecategory "%D" "%I" "%N"`
On completion, the category will change based on the directory name the `.torrent` file was placed in the watch directory.
On completion, the category will change based on the directory name the `.torrent` file was placed in the watch directory.

@ -267,7 +267,7 @@ A Dutch step by step tutorial can be found [https://www.duken.nl/forums/handleid
H = Peer was obtained through DHT.
E = Peer is using Protocol Encryption (all traffic)
e = Peer is using Protocol Encryption (handshake)
L = Peer is local (discovered through network broadcast, or in reserved local IP ranges)
L = Peer is local (discovered through network broadcast, or in reserved local IP ranges)
See [https://web.archive.org/web/20090320211618/http://btfaq.com:80/serve/cache/23.html this page] for definitions of BitTorrent terms.

@ -1,2 +1,2 @@
1. Open the options (Tools->Options in the menu bar) and go to the "BitTorrent" page
2. Uncheck "Enable DHT [...]", "Enable Peer Exchange (PeX) [...]", and "Enable Local Peer Discovery [...]"
2. Uncheck "Enable DHT [...]", "Enable Peer Exchange (PeX) [...]", and "Enable Local Peer Discovery [...]"

@ -1,6 +1,6 @@
### Using info-hashes as download handles.
When interfacing qBittorrent through the WebUI api, there are cases when you add a download via a magnet URI and then you want to track its state (for instance, to perform certain file operation once it's finished). The problem here is that the /command/download method does not return a handle to the download for you to track it. On the other hand, webUI api methods refer to every download through its info-hash, so it's possible to use that string as a handle. As every magnet URI will contain, al least, the info-hash (as stated in [this](http://www.bittorrent.org/beps/bep_0009.html) document at BitTorrent.org) you can parse the hash string from the uri itself. These hashes are base16 encoded, for a total of 40 characters.
When interfacing qBittorrent through the WebUI api, there are cases when you add a download via a magnet URI and then you want to track its state (for instance, to perform certain file operation once it's finished). The problem here is that the /command/download method does not return a handle to the download for you to track it. On the other hand, webUI api methods refer to every download through its info-hash, so it's possible to use that string as a handle. As every magnet URI will contain, al least, the info-hash (as stated in [this](http://www.bittorrent.org/beps/bep_0009.html) document at BitTorrent.org) you can parse the hash string from the uri itself. These hashes are base16 encoded, for a total of 40 characters.
### Special case: base32 encoded info-hashes.
@ -12,7 +12,7 @@ Suppose you have the following magnet link:
magnet:?xt=urn:btih:WRN7ZT6NKMA6SSXYKAFRUGDDIFJUNKI2
if it´s added to qBittorrent and then you issue a /query/torrents command, you´ll get a JSON object like this (fields other than "hash" are ommitted):
[{...,"hash":"b45bfccfcd5301e94af8500b1a1863415346a91a",...},...]
which shows how qBittorrent converted our base32 hash to its base16 representation.
@ -20,7 +20,7 @@ which shows how qBittorrent converted our base32 hash to its base16 representati
### How to implement the base conversion:
If you're into python, this base conversion can be accomplished as follows:
>>> import base64
>>> b32Hash = "WRN7ZT6NKMA6SSXYKAFRUGDDIFJUNKI2"
>>> b16Hash = base64.b16encode(base64.b32decode(b32Hash))
@ -52,4 +52,4 @@ In Delphi, you can make use of the excellent SZCodeBaseX library by Sasa Zeman (
If you compile and run Project1.exe, it´ll output the converted hash string.
Notice in both cases you need to perform a lowercase conversion of the resulting string.
Notice in both cases you need to perform a lowercase conversion of the resulting string.

@ -45,4 +45,4 @@ If you have web development experience, you already know where to go from here.
If you don't have web development experience but want to investigate further and possibly attempt to fix the problem, you can click the stack trace lines to go to the problematic code in the debugger. From there you can setup breakpoints, watchpoints, step through the code, etc. Reload the page and just do some old-school debugging. Search for tutorials online about debugging web applications and using the browsers developer tools.
This wiki page may be updated in the future with specific steps/techniques that happen to be particularly useful/relevant to qBittorrent.
This wiki page may be updated in the future with specific steps/techniques that happen to be particularly useful/relevant to qBittorrent.

@ -1,6 +1,6 @@
## qBittorrent gave you a lockup or BSOD (Blue Screen of Death). Now what?
First of all, if you get a BSOD, and it's not `irql_not_less_or_equal`, there is a good chance you will be able to debug the BSOD. It is a very powerful and useful tool to find why your Windows system just crashed.
First of all, if you get a BSOD, and it's not `irql_not_less_or_equal`, there is a good chance you will be able to debug the BSOD. It is a very powerful and useful tool to find why your Windows system just crashed.
You must also know that the cause of your lockup/BSOD was not qBittorrent.
There are four major things that can cause a freeze or BSOD.
@ -22,7 +22,7 @@ The numbers mean how hard is it to check on a scale of 5.
1. Install the [Windows SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk). You only need to select the "Debugging tools" at the installation, which is only a mere ~250MB.
2. Launch the freshly installed "windbg" _as Administrator_ tool.
3. Add remote symbols.
3. Add remote symbols.
File -> Symbol File Path: `srv*c:\symbols*https://msdl.microsoft.com/download/symbols`
The `c:\symbols` will be your local symbol cache. I would suggest using something more "writeable".
4. File -> Open Crash Dump.
@ -42,7 +42,7 @@ The `c:\symbols` will be your local symbol cache. I would suggest using somethin
### Alternatives
In case Windows's in-built test does not work for you.
* https://www.memtest86.com
* https://www.memtest86.com
* https://www.howtogeek.com/260813/how-to-test-your-computers-ram-for-problems/
You have to download Memtest86 and put it on a pendrive, CD or DVD.
@ -60,13 +60,13 @@ Download the latest Ubuntu LTS version (16.04 at the moment), and put it on a pe
### Windows
There are many great free tools for this.
* https://hddguardian.codeplex.com
* https://hddguardian.codeplex.com
* https://crystalmark.info/en/software/crystaldiskinfo/
### Ubuntu
If you can't boot Windows, you can use an [Ubuntu Live CD](https://www.howtogeek.com/191054/how-to-create-bootable-usb-drives-and-sd-cards-for-every-operating-system/) to diagnose your HDD.
* https://askubuntu.com/questions/528072/how-can-i-check-the-smart-status-of-a-drive-on-ubuntu-14-04-through-16-10
* https://askubuntu.com/questions/38566/how-can-i-check-the-health-of-my-hard-drive
* https://askubuntu.com/questions/38566/how-can-i-check-the-health-of-my-hard-drive
You want to check:
* Reallocated_Sector_Ct

@ -1,19 +1,19 @@
### It is very likely that your storage or system has some issue, and there is not much we can do to fix that.
The Issue tracker is no place for helping with your computer.
The Issue tracker is no place for helping with your computer.
But, you are always welcome to make a topic on our forums, and we will try to help.
Use this wiki article to find out more about what's causing trouble.
And always try to fix the problem first yourself.
Knowing how to fix computer problems such as this can come in very handy, and it is not hard to do at all.
Just don't shy away from a little challenge.
And always try to fix the problem first yourself.
Knowing how to fix computer problems such as this can come in very handy, and it is not hard to do at all.
Just don't shy away from a little challenge.
## Check the `Execution Log`.
* On the top bar, click `View`, `Log` and then `Show`
* Click the new `Execution Log` tab on top
There are quite some data in here but worry not. Just scroll to the bottom and look out for _I/O errors_.
It may contain useful information about why it's happening.
There are quite some data in here but worry not. Just scroll to the bottom and look out for _I/O errors_.
It may contain useful information about why it's happening.
Even if you can't make heads or tails of the lines, it will be helpful for the others who will try to help.
## Next step
@ -23,7 +23,7 @@ There are two things that can cause (most likely) IO errors and stopped download
### Permission problems [Windows]
* If you have the default Download location set up, such as the `C:\Users\YOURUSERNAME\Downloads\` folder, your permissions should be fine.
* If you have the default Download location set up, such as the `C:\Users\YOURUSERNAME\Downloads\` folder, your permissions should be fine.
* If you have a custom Download location, make sure you have permissions to read and write there. From Windows 7, permissions have changed. Nowadays, you don't have full write permission by default to your entire C drive, for example, you can only write under your ``C:\Users\YOURUSERNAME` by default. You can, of course, change this - but I don't really recommend it. If you must make a new folder on C, I would make a simple `C:\a` folder, change permissions of that, and put everything I need inside. That way I have no mess, the permissions are alright, and so on.
* If you used a drive on some other PC, Windows remembers the permissions. For example, if you used an external hard drive or a drive with another Windows, or you re-installed your system - you might not have proper permissions anymore.
@ -35,12 +35,12 @@ If you are a **simple user**, and you have your Download folder under your `/hom
1. Open Terminal
2. Type: `sudo chown -R USERNAME:USERNAME /home/USERNAME`
Of course, USERNAME is your username.
Of course, USERNAME is your username.
If you don't know what's your username, run the command `whoami`, it will tell you.
That's it, ty to download now, things should be working fine.
If you are a GNU/**advanced user**, check if you belong to the same group as the owner. If the group has RW permissions. Use chmod, chown to fix the permissions.
If you are a GNU/**advanced user**, check if you belong to the same group as the owner. If the group has RW permissions. Use chmod, chown to fix the permissions.
### Hardware problems [Windows]
@ -48,4 +48,4 @@ Check my [[other Wiki article|How to diagnose IO error, BSOD, crash (Windows)]].
### Hardware problems [Linux]
Check my [other Wiki article](https://github.com/qbittorrent/qBittorrent/wiki/How-to-diagnostic-IO-error,-BSOD,-crash-%5BGNU-Linux,-BSD,-etc.%5D). See HDD section.
Check my [other Wiki article](https://github.com/qbittorrent/qBittorrent/wiki/How-to-diagnostic-IO-error,-BSOD,-crash-%5BGNU-Linux,-BSD,-etc.%5D). See HDD section.

@ -20,13 +20,13 @@ The numbers mean how hard is it to check on a scale of 5.
* https://www.cnet.com/how-to/test-your-ram-with-windows-memory-diagnostic-tool/
## Linux
In short, on 99% of the Linux distributions out there, there will be a "Memtest", "Check memory", or another similar entry in your boot loader's menu. Select that.
In short, on 99% of the Linux distributions out there, there will be a "Memtest", "Check memory", or another similar entry in your boot loader's menu. Select that.
* https://askubuntu.com/questions/343114/how-to-check-for-errors-in-ram-via-linux
* https://askubuntu.com/questions/343114/how-to-check-for-errors-in-ram-via-linux
* https://help.ubuntu.com/community/MemoryTest
## Any OS
* https://www.memtest86.com
* https://www.memtest86.com
* https://www.howtogeek.com/260813/how-to-test-your-computers-ram-for-problems/
Basically you have to download Memtest86 and put it on a pendrive, CD or DVD.
@ -39,7 +39,7 @@ Download the latest Ubuntu LTS version (16.04 at the moment), and put it on a pe
## Windows
There are many great free tools for this.
* https://hddguardian.codeplex.com
* https://hddguardian.codeplex.com
* https://crystalmark.info/en/software/crystaldiskinfo/
## Ubuntu
@ -48,7 +48,7 @@ There are many great free tools for this.
If you can't figure out how to use that tool, read below.
## Linux / BSD
* https://askubuntu.com/questions/38566/how-can-i-check-the-health-of-my-hard-drive
* https://askubuntu.com/questions/38566/how-can-i-check-the-health-of-my-hard-drive
You want to check:
* Reallocated_Sector_Ct

@ -14,4 +14,4 @@ Press OK to close the client.
If you do not want to seed at all after downloading, set the value to 0.
Please note this goes against the basic principles of using a Bittorrent client, but is of course your personal preference.
Please note if you are using a ratio enforcing 'private' tracker, the ratio shown in the client, is **not** the same ratio as your tracker is reporting or monitoring.
Please note if you are using a ratio enforcing 'private' tracker, the ratio shown in the client, is **not** the same ratio as your tracker is reporting or monitoring.

@ -14,4 +14,4 @@ Now, in order to automatically download and use the GeoIP-country database with
If you enable `Resolve peer countries (GeoIP)` in the Advanced Settings you have 2 options:
1. You can put your license key in `GeoIP license key` and have qbittorrent automatically download the database on a monthly period
2. Or you can leave the license key field empty and provide your own database file. You may have obtained the file from other links/sources. The database filename must be `GeoLite2-Country.mmdb` and it must be placed under the `GeoIP` folder located in the same folder where `BT_backup` folder resides.
2. Or you can leave the license key field empty and provide your own database file. You may have obtained the file from other links/sources. The database filename must be `GeoLite2-Country.mmdb` and it must be placed under the `GeoIP` folder located in the same folder where `BT_backup` folder resides.

@ -15,4 +15,4 @@ After you have downloaded your chosen `.qbtheme` theme file, using it is quite e
# Developing new custom themes
If you are interested in developing new custom themes, check out [this page](https://github.com/qbittorrent/qBittorrent/wiki/Create-custom-themes-for-qBittorrent).
If you are interested in developing new custom themes, check out [this page](https://github.com/qbittorrent/qBittorrent/wiki/Create-custom-themes-for-qBittorrent).

@ -36,7 +36,7 @@ The result should look similar to this in your web.config (Note: you must use th
<action type="Rewrite" url="http://127.0.0.1:8080/{R:1}" />
<serverVariables>
<set name="HTTP_X-Forwarded-Host" value="{HTTP_HOST}:{SERVER_PORT}" />
<set name="HTTP_X-Forwarded-For" value="{REMOTE_ADDR}" />
<set name="HTTP_X-Forwarded-For" value="{REMOTE_ADDR}" />
</serverVariables>
</rule>
</rules>
@ -50,7 +50,7 @@ The result should look similar to this in your web.config (Note: you must use th
Additionally you must untick **Enable Cross-Site Request Forgery (CSRF) protection** in qBittorrent's Web UI options for the reverse proxy to work.
You can use HTTPS to access the URL via IIS and it will use HTTP to communicate with qBittorrent. There is no need for HTTPS on localhost.
You can use HTTPS to access the URL via IIS and it will use HTTP to communicate with qBittorrent. There is no need for HTTPS on localhost.
Note: If you find yourself seeing `WebAPI login failure. Reason: IP has been banned, IP: 127.0.0.1` and needing to restart qBittorrent, you may want to set the ban after failure count to `0` which will disable it.

@ -27,7 +27,7 @@ yay -S caddy2
4. Deselect "Use HTTPS instead of HTTP."
5. Enable clickjacking protection
6. Enable CSRF protection
7. Enable host header validaion. Confirm "*; example.domain" is in the "server domains" text box.
7. Enable host header validaion. Confirm "*; example.domain" is in the "server domains" text box.
## Caddy2 Config
Create a Caddyfile as a config. Assuming a standard HTTPS & reverse proxy setup, your Caddyfile can be as basic as
@ -37,7 +37,7 @@ Create a Caddyfile as a config. Assuming a standard HTTPS & reverse proxy setup,
}
example.domain {
reverse_proxy IP:port
reverse_proxy IP:port
}
```
@ -54,8 +54,8 @@ or
sudo caddy start -config /path/to/Caddyfile
```
The difference between the two is minimal.
run starts the Caddy process and blocks indefinitely while start starts the Caddy process in the background and then returns.
run starts the Caddy process and blocks indefinitely while start starts the Caddy process in the background and then returns.
You can also run caddy as a systemd service.
# Test
Open up your favorite browser and enter your FQDN into the URL bar. You should see the qbittorrent Web UI and the indication that your connection is over HTTPS.
Open up your favorite browser and enter your FQDN into the URL bar. You should see the qbittorrent Web UI and the indication that your connection is over HTTPS.

@ -31,7 +31,7 @@ You will also need the `nginx` plugin.
```shell
sudo apt update
sudo apt install certbot
sudo apt install certbot
sudo apt install python-certbot-nginx # this is needed for the nginx plugin
```
@ -86,7 +86,7 @@ sudo apt install nginx
```shell
sudo touch /etc/nginx/sites-available/yoursite
cd /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/yoursite yoursite
sudo ln -s /etc/nginx/sites-available/yoursite yoursite
```
6. Open the file with your favourite text editor and paste something like the following reference configuration (adjust according to your needs):
@ -117,10 +117,10 @@ sudo apt install nginx
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_ecdh_curve prime256v1:secp384r1:secp521r1;
ssl_session_cache shared:TLS:50m;
ssl_session_timeout 1d; # default is 5 min
ssl_session_timeout 1d; # default is 5 min
ssl_session_tickets off;
# OCSP stapling
ssl_stapling on;
ssl_stapling on;
ssl_stapling_verify on;
access_log /var/log/nginx/yourdomain.access.log;
@ -201,4 +201,4 @@ You should see the qBittorrent Web UI and the indication that your connection is
[qbt-nox-wiki-setup]: https://github.com/qbittorrent/qBittorrent/wiki/Running-qBittorrent-without-X-server-(WebUI-only,-systemd-service-set-up,-Ubuntu-15.04-or-newer)
[duckdns-url]: https://www.duckdns.org/
[certbot-url]: https://certbot.eff.org/
[certbot-docs-cmd-opt]: https://certbot.eff.org/docs/using.html#certbot-command-line-options
[certbot-docs-cmd-opt]: https://certbot.eff.org/docs/using.html#certbot-command-line-options

@ -13,7 +13,7 @@ This guide also assumes that:
sudo apt update && sudo apt upgrade -y # first update all packages in the system
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot
sudo apt install certbot
```
# Obtaining the certificate
@ -81,4 +81,4 @@ You can put your renewal command (without `sudo`) in a crontab or a systemd unit
[qbt-nox-wiki-setup]: https://github.com/qbittorrent/qBittorrent/wiki/Setting-up-qBittorrent-on-Ubuntu-server-as-daemon-with-Web-interface-(15.04-and-newer)
[duckdns-url]: https://www.duckdns.org/
[certbot-url]: https://certbot.eff.org/
[certbot-docs-cmd-opt]: https://certbot.eff.org/docs/using.html#certbot-command-line-options
[certbot-docs-cmd-opt]: https://certbot.eff.org/docs/using.html#certbot-command-line-options

@ -3,11 +3,11 @@ Setting up HTTPS for the web interface involves creating a key and certificate p
The following guide assumes you have a setup as mentioned in [this](https://github.com/qbittorrent/qBittorrent/wiki/Setting-up-qBittorrent-on-Ubuntu-server-as-daemon-with-Web-interface-(14.04-and-older)) or [this](https://github.com/qbittorrent/qBittorrent/wiki/Setting-up-qBittorrent-on-Ubuntu-server-as-daemon-with-Web-interface-(15.04-and-newer)) article. Change qbtuser with the user you have qbittorrent-nox running under.
Impersonate the qbittorent user:
Impersonate the qbittorent user:
`sudo su qbtuser`
Create neccesary folders:
Create neccesary folders:
```
cd /home/qbtuser/
mkdir ~/.config/qBittorrent/ssl
@ -40,7 +40,7 @@ into the 'key' field of the WebUI and proceed to do the same with the certificat
cat server.crt
```
Now click save to have the changes take effect.
Now click save to have the changes take effect.
You should now be able to log in to your qbittorrent web-server keeping in mind to change http to https and append the port number with a colon :
@ -56,7 +56,7 @@ If you are unsure what url (ip and port and protocol) qtorrent is using, you can
`sudo tail /var/log/qbittorrent-nox.log`
Alternatively you could run qtorrent-nox in a terminal window (after impersonating the qbittorrent user) and it will print the URL to the screen with:
Alternatively you could run qtorrent-nox in a terminal window (after impersonating the qbittorrent user) and it will print the URL to the screen with:
`sudo su qbtuser`
`sudo su qbtuser`
`sudo qbittorrent-nox`

@ -42,4 +42,4 @@ See [How to use custom UI themes](https://github.com/qbittorrent/qBittorrent/wik
- https://github.com/witalihirsch/qBitTorrent-fluent-theme
Fluent dark/light themes for qBittorrent
Fluent dark/light themes for qBittorrent

@ -47,7 +47,3 @@ If you know of more, feel free to add a link to the repository along with a shor
- https://github.com/yosemiteyss/qbittorrent_api
Dart wrapper for qBittorrent Web API

@ -52,4 +52,4 @@ Obsolete directives, no longer needed when using recent qBittorrent versions
```nginx
add_header X-Frame-Options "SAMEORIGIN";
```
```

@ -60,7 +60,7 @@ It will add a default route through the VPN gateway using device tun0 to the tab
After performing steps 0..4 try to use your qBittorrent instance to download anything and make sure it using only the VPN interface for peers connection - it should now use only tun0 interface and stop if this interface will become unavailable (like if the OpenVPN daemon gets down or OpenVPN connection gets disconnected).
## Part 2:
## Part 2:
Set up the VPN server and VPN client to accept incoming connections from outer space.
### 0. Set up a static port for peers connections:

@ -24,4 +24,4 @@ Settings can be customized via the WebUI, WebAPI, or, if needed, manually editin
The logs as well as other program data are located in `~/.local/share/data/qBittorrent`.
Consult the man page or pass `--help` for more information.
Consult the man page or pass `--help` for more information.

@ -192,4 +192,4 @@ $ systemd-escape --path /mnt/disk\ with\ spaces-10
mnt-disk\x20with\x20spaces\x2d10
```
Using this to define the qbittorrent-nox service file, if the drive can't mount when booting or if the drive is unmounted after qbittorrent has been started, it will not allow it to start or force it to stop, preventing from writing when the drive is not ready or present.
Using this to define the qbittorrent-nox service file, if the drive can't mount when booting or if the drive is unmounted after qbittorrent has been started, it will not allow it to start or force it to stop, preventing from writing when the drive is not ready or present.

@ -55,20 +55,20 @@ For example, suppose you are at a breakpoint and print the value of a variable n
```
(gdb) print data
$1 = "POST /api/v2/auth/login HTTP/1.1\r\nHost: localhost:8080\r\nUser-Agent: python-requests/2.22.0\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nContent-Length: 34\r\nContent-Type: appli"... = {[0] = 80 'P', [1] = 79 'O',
[2] = 83 'S', [3] = 84 'T', [4] = 32 ' ', [5] = 47 '/', [6] = 97 'a', [7] = 112 'p', [8] = 105 'i', [9] = 47 '/', [10] = 118 'v', [11] = 50 '2', [12] = 47 '/', [13] = 97 'a', [14] = 117 'u', [15] = 116 't', [16] = 104 'h', [17] = 47 '/', [18] = 108 'l',
[19] = 111 'o', [20] = 103 'g', [21] = 105 'i', [22] = 110 'n', [23] = 32 ' ', [24] = 72 'H', [25] = 84 'T', [26] = 84 'T', [27] = 80 'P', [28] = 47 '/', [29] = 49 '1', [30] = 46 '.', [31] = 49 '1', [32] = 13 '\r', [33] = 10 '\n', [34] = 72 'H',
[35] = 111 'o', [36] = 115 's', [37] = 116 't', [38] = 58 ':', [39] = 32 ' ', [40] = 108 'l', [41] = 111 'o', [42] = 99 'c', [43] = 97 'a', [44] = 108 'l', [45] = 104 'h', [46] = 111 'o', [47] = 115 's', [48] = 116 't', [49] = 58 ':', [50] = 56 '8',
[51] = 48 '0', [52] = 56 '8', [53] = 48 '0', [54] = 13 '\r', [55] = 10 '\n', [56] = 85 'U', [57] = 115 's', [58] = 101 'e', [59] = 114 'r', [60] = 45 '-', [61] = 65 'A', [62] = 103 'g', [63] = 101 'e', [64] = 110 'n', [65] = 116 't', [66] = 58 ':',
[67] = 32 ' ', [68] = 112 'p', [69] = 121 'y', [70] = 116 't', [71] = 104 'h', [72] = 111 'o', [73] = 110 'n', [74] = 45 '-', [75] = 114 'r', [76] = 101 'e', [77] = 113 'q', [78] = 117 'u', [79] = 101 'e', [80] = 115 's', [81] = 116 't', [82] = 115 's',
[83] = 47 '/', [84] = 50 '2', [85] = 46 '.', [86] = 50 '2', [87] = 50 '2', [88] = 46 '.', [89] = 48 '0', [90] = 13 '\r', [91] = 10 '\n', [92] = 65 'A', [93] = 99 'c', [94] = 99 'c', [95] = 101 'e', [96] = 112 'p', [97] = 116 't', [98] = 45 '-', [99] = 69 'E',
[100] = 110 'n', [101] = 99 'c', [102] = 111 'o', [103] = 100 'd', [104] = 105 'i', [105] = 110 'n', [106] = 103 'g', [107] = 58 ':', [108] = 32 ' ', [109] = 103 'g', [110] = 122 'z', [111] = 105 'i', [112] = 112 'p', [113] = 44 ',', [114] = 32 ' ',
[115] = 100 'd', [116] = 101 'e', [117] = 102 'f', [118] = 108 'l', [119] = 97 'a', [120] = 116 't', [121] = 101 'e', [122] = 13 '\r', [123] = 10 '\n', [124] = 65 'A', [125] = 99 'c', [126] = 99 'c', [127] = 101 'e', [128] = 112 'p', [129] = 116 't',
[130] = 58 ':', [131] = 32 ' ', [132] = 42 '*', [133] = 47 '/', [134] = 42 '*', [135] = 13 '\r', [136] = 10 '\n', [137] = 67 'C', [138] = 111 'o', [139] = 110 'n', [140] = 110 'n', [141] = 101 'e', [142] = 99 'c', [143] = 116 't', [144] = 105 'i',
[145] = 111 'o', [146] = 110 'n', [147] = 58 ':', [148] = 32 ' ', [149] = 107 'k', [150] = 101 'e', [151] = 101 'e', [152] = 112 'p', [153] = 45 '-', [154] = 97 'a', [155] = 108 'l', [156] = 105 'i', [157] = 118 'v', [158] = 101 'e', [159] = 13 '\r',
[160] = 10 '\n', [161] = 67 'C', [162] = 111 'o', [163] = 110 'n', [164] = 116 't', [165] = 101 'e', [166] = 110 'n', [167] = 116 't', [168] = 45 '-', [169] = 76 'L', [170] = 101 'e', [171] = 110 'n', [172] = 103 'g', [173] = 116 't', [174] = 104 'h',
[175] = 58 ':', [176] = 32 ' ', [177] = 51 '3', [178] = 52 '4', [179] = 13 '\r', [180] = 10 '\n', [181] = 67 'C', [182] = 111 'o', [183] = 110 'n', [184] = 116 't', [185] = 101 'e', [186] = 110 'n', [187] = 116 't', [188] = 45 '-', [189] = 84 'T',
$1 = "POST /api/v2/auth/login HTTP/1.1\r\nHost: localhost:8080\r\nUser-Agent: python-requests/2.22.0\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nContent-Length: 34\r\nContent-Type: appli"... = {[0] = 80 'P', [1] = 79 'O',
[2] = 83 'S', [3] = 84 'T', [4] = 32 ' ', [5] = 47 '/', [6] = 97 'a', [7] = 112 'p', [8] = 105 'i', [9] = 47 '/', [10] = 118 'v', [11] = 50 '2', [12] = 47 '/', [13] = 97 'a', [14] = 117 'u', [15] = 116 't', [16] = 104 'h', [17] = 47 '/', [18] = 108 'l',
[19] = 111 'o', [20] = 103 'g', [21] = 105 'i', [22] = 110 'n', [23] = 32 ' ', [24] = 72 'H', [25] = 84 'T', [26] = 84 'T', [27] = 80 'P', [28] = 47 '/', [29] = 49 '1', [30] = 46 '.', [31] = 49 '1', [32] = 13 '\r', [33] = 10 '\n', [34] = 72 'H',
[35] = 111 'o', [36] = 115 's', [37] = 116 't', [38] = 58 ':', [39] = 32 ' ', [40] = 108 'l', [41] = 111 'o', [42] = 99 'c', [43] = 97 'a', [44] = 108 'l', [45] = 104 'h', [46] = 111 'o', [47] = 115 's', [48] = 116 't', [49] = 58 ':', [50] = 56 '8',
[51] = 48 '0', [52] = 56 '8', [53] = 48 '0', [54] = 13 '\r', [55] = 10 '\n', [56] = 85 'U', [57] = 115 's', [58] = 101 'e', [59] = 114 'r', [60] = 45 '-', [61] = 65 'A', [62] = 103 'g', [63] = 101 'e', [64] = 110 'n', [65] = 116 't', [66] = 58 ':',
[67] = 32 ' ', [68] = 112 'p', [69] = 121 'y', [70] = 116 't', [71] = 104 'h', [72] = 111 'o', [73] = 110 'n', [74] = 45 '-', [75] = 114 'r', [76] = 101 'e', [77] = 113 'q', [78] = 117 'u', [79] = 101 'e', [80] = 115 's', [81] = 116 't', [82] = 115 's',
[83] = 47 '/', [84] = 50 '2', [85] = 46 '.', [86] = 50 '2', [87] = 50 '2', [88] = 46 '.', [89] = 48 '0', [90] = 13 '\r', [91] = 10 '\n', [92] = 65 'A', [93] = 99 'c', [94] = 99 'c', [95] = 101 'e', [96] = 112 'p', [97] = 116 't', [98] = 45 '-', [99] = 69 'E',
[100] = 110 'n', [101] = 99 'c', [102] = 111 'o', [103] = 100 'd', [104] = 105 'i', [105] = 110 'n', [106] = 103 'g', [107] = 58 ':', [108] = 32 ' ', [109] = 103 'g', [110] = 122 'z', [111] = 105 'i', [112] = 112 'p', [113] = 44 ',', [114] = 32 ' ',
[115] = 100 'd', [116] = 101 'e', [117] = 102 'f', [118] = 108 'l', [119] = 97 'a', [120] = 116 't', [121] = 101 'e', [122] = 13 '\r', [123] = 10 '\n', [124] = 65 'A', [125] = 99 'c', [126] = 99 'c', [127] = 101 'e', [128] = 112 'p', [129] = 116 't',
[130] = 58 ':', [131] = 32 ' ', [132] = 42 '*', [133] = 47 '/', [134] = 42 '*', [135] = 13 '\r', [136] = 10 '\n', [137] = 67 'C', [138] = 111 'o', [139] = 110 'n', [140] = 110 'n', [141] = 101 'e', [142] = 99 'c', [143] = 116 't', [144] = 105 'i',
[145] = 111 'o', [146] = 110 'n', [147] = 58 ':', [148] = 32 ' ', [149] = 107 'k', [150] = 101 'e', [151] = 101 'e', [152] = 112 'p', [153] = 45 '-', [154] = 97 'a', [155] = 108 'l', [156] = 105 'i', [157] = 118 'v', [158] = 101 'e', [159] = 13 '\r',
[160] = 10 '\n', [161] = 67 'C', [162] = 111 'o', [163] = 110 'n', [164] = 116 't', [165] = 101 'e', [166] = 110 'n', [167] = 116 't', [168] = 45 '-', [169] = 76 'L', [170] = 101 'e', [171] = 110 'n', [172] = 103 'g', [173] = 116 't', [174] = 104 'h',
[175] = 58 ':', [176] = 32 ' ', [177] = 51 '3', [178] = 52 '4', [179] = 13 '\r', [180] = 10 '\n', [181] = 67 'C', [182] = 111 'o', [183] = 110 'n', [184] = 116 't', [185] = 101 'e', [186] = 110 'n', [187] = 116 't', [188] = 45 '-', [189] = 84 'T',
[190] = 121 'y', [191] = 112 'p', [192] = 101 'e', [193] = 58 ':', [194] = 32 ' ', [195] = 97 'a', [196] = 112 'p', [197] = 112 'p', [198] = 108 'l', [199] = 105 'i'...}
```
The pretty printer output is further customizable via the usual GDB options for output customization. For example, you can suppress output of individual array elements, or reduce the number of array elements printed.
The pretty printer output is further customizable via the usual GDB options for output customization. For example, you can suppress output of individual array elements, or reduce the number of array elements printed.

@ -1,3 +1,3 @@
The **Missing files** status (displayed in red) is new in version 3.2.0 onwards, this indicates that all, or part the payload is not where qbittorrent expects to find it. One task in this status may be caused by a file having been deleted or damaged by external means, such as a virus scanner, multimedia 'tagger' etc. If ALL loaded tasks are showing this status is indicative of a drive not being mounted, an external device unplugged or a network location being off-line.
A single task in this status can be rectified by rechecking, then resuming the task. If all tasks are showing "Missing files", shut down qbittorrent completely with File -> Exit, remount or re-attach the missing drive, check that the drive has the same mount point or drive letter as previously then restart qbittorrent and resume the paused tasks (Ctrl+A -> Resume or Ctrl+Shift+S)
A single task in this status can be rectified by rechecking, then resuming the task. If all tasks are showing "Missing files", shut down qbittorrent completely with File -> Exit, remount or re-attach the missing drive, check that the drive has the same mount point or drive letter as previously then restart qbittorrent and resume the paused tasks (Ctrl+A -> Resume or Ctrl+Shift+S)

@ -6,7 +6,7 @@ services:
image: traefik
networks: [traefik-qb-net]
ports: ["80:80"]
command:
command:
- "--providers.docker=true"
- "--providers.docker.swarmMode=true"
- "--providers.docker.exposedbydefault=false"
@ -32,4 +32,4 @@ services:
- "traefik.http.services.qb.loadbalancer.passhostheader=false"
- "traefik.docker.network=traefik-qb-net"
...
```
```

@ -1 +1 @@
Moved to https://github.com/qbittorrent/search-plugins/wiki/Unofficial-search-plugins
Moved to https://github.com/qbittorrent/search-plugins/wiki/Unofficial-search-plugins

@ -297,4 +297,4 @@ Here is an example `.vscode/launch.json` file for launching/attaching to the qBi
VScode allows defining arbitrary tasks in `.vscode/tasks.json`.
You can make use of this to drive additional tooling straight from the editor, such as [Clazy](https://github.com/KDE/clazy), for example.
You can make use of this to drive additional tooling straight from the editor, such as [Clazy](https://github.com/KDE/clazy), for example.

@ -485,7 +485,7 @@ Property | Type | Description
`add_trackers` | string | List of trackers to add to new torrent
`web_ui_use_custom_http_headers_enabled` | bool | For API ≥ v2.5.1: Enable custom http headers
`web_ui_custom_http_headers` | string | For API ≥ v2.5.1: List of custom http headers
`max_seeding_time_enabled` | bool | True enables max seeding time
`max_seeding_time_enabled` | bool | True enables max seeding time
`max_seeding_time` | integer | Number of minutes to seed a torrent
`announce_ip` | string | TODO
`announce_to_all_tiers` | bool | True always announce to all tiers

@ -104,7 +104,7 @@ Authorization: Digest username="admin", realm="Web UI Access", nonce="a3f396f2dc
1. End Result
Server reply:
```http
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm="Web UI Access", nonce="a3f396f2dcc1cafae73637e2ac321134", opaque="a3f396f2dcc1cafae73637e2ac321134", stale="false", algorithm="MD5", qop="auth"
@ -275,7 +275,7 @@ where
1. `Updating...` - tracker is currently being updated
1. `Not working` - tracker has been contacted, but it is not working (or doesn't send proper replies)
1. `Not contacted yet` - tracker has not been contacted yet
`num_peers` - number of peers for current torrent eported by tracker<br/>
`msg` - tracker message (there is no way of knowing what this message is - it's up to tracker admins)<br/>

@ -1 +1 @@
[Go back to home](https://github.com/qbittorrent/qBittorrent/wiki)
[Go back to home](https://github.com/qbittorrent/qBittorrent/wiki)

@ -1,30 +1,30 @@
**First and foremost**: Make sure you are using the latest qBittorrent available for your system.
You can download the latest version from here: https://qbittorrent.org/
With that out of the way, let's see what can go wrong.
**First and foremost**: Make sure you are using the latest qBittorrent available for your system.
You can download the latest version from here: https://qbittorrent.org/
With that out of the way, let's see what can go wrong.
The easiest way to see where the problem lies is, disabling everything in between your PC and your Internet Modem. So basically bring your PC to the modem, hook up directly without any router, wifi, anything. Disable Proxy and VPN if you have any and test. Does it work? No? Then try it with a second PC. Still not? Head to our forums and we will help you.
### VPN or Proxy?
* If you are using a VPN or Proxy, disable and check if that solves your issue. By default, both solutions render you passive, puts you behind a firewall, so to say. Some VPN providers offer active port forwarding, but it varies by provider.
### VPN or Proxy?
* If you are using a VPN or Proxy, disable and check if that solves your issue. By default, both solutions render you passive, puts you behind a firewall, so to say. Some VPN providers offer active port forwarding, but it varies by provider.
### Other issues/symptoms...
* Check if you have an **Anti-Virus** or Security solution that comes with a Firewalll. That can cause high CPU usage, connection problems. Thus, affecting your speed and experience.
* If you use a **router** in your network, make sure you do a port forward by hand. UPnP (the feature that routers use to allow automatic port forward) can be really buggy and they barely ever work. Just add a port for TCP and UDP each by hand, and you are good.
### Still not working?
* Post about it on the forums. Let others help figure out your connection issues: https://qbforums.shiki.hu/
If it is confirmed there after your post, that it's a bug in qBittorrent, make the report. But!
Include _every_ detail.
* Your OS
* The qBittorrent version you are using
* Check if you have an **Anti-Virus** or Security solution that comes with a Firewalll. That can cause high CPU usage, connection problems. Thus, affecting your speed and experience.
* If you use a **router** in your network, make sure you do a port forward by hand. UPnP (the feature that routers use to allow automatic port forward) can be really buggy and they barely ever work. Just add a port for TCP and UDP each by hand, and you are good.
### Still not working?
* Post about it on the forums. Let others help figure out your connection issues: https://qbforums.shiki.hu/
If it is confirmed there after your post, that it's a bug in qBittorrent, make the report. But!
Include _every_ detail.
* Your OS
* The qBittorrent version you are using
* What kind of trackers you have been using? Private? Public? You can mention the tracker name too, that's no secret.
* Architecture (x86 or x86_64, maybe ARM64) you are using
* Network type: Fiber, cable, DSL, radio/microwave
* Router: Do you have one? Do you have more than one? Do you have switches in the way?
* How do you connect to the closest access point? Wifi? Cable? Power-ethernet?
* What HDDs, SSDs do you download to? Do you use RAID? If yes, hardware, SW? If HW, what adapter/device?
* Did you check your storage if it works, if it does not have any SMART issues? Use Crystal Disk Info to make sure that the storage is fine. ( https://crystalmark.info/en/software/crystaldiskinfo/ )
* Architecture (x86 or x86_64, maybe ARM64) you are using
* Network type: Fiber, cable, DSL, radio/microwave
* Router: Do you have one? Do you have more than one? Do you have switches in the way?
* How do you connect to the closest access point? Wifi? Cable? Power-ethernet?
* What HDDs, SSDs do you download to? Do you use RAID? If yes, hardware, SW? If HW, what adapter/device?
* Did you check your storage if it works, if it does not have any SMART issues? Use Crystal Disk Info to make sure that the storage is fine. ( https://crystalmark.info/en/software/crystaldiskinfo/ )
* Did you check your RAM if it is flawless/has no issues? ( https://www.howtogeek.com/260813/how-to-test-your-computers-ram-for-problems/ )