From 1cc5a5b20905f29557b574634946d77fbd862761 Mon Sep 17 00:00:00 2001 From: Chubby Granny Chaser Date: Tue, 2 Jul 2024 15:38:36 +0100 Subject: [PATCH] fix: adding real debrid real time tracking --- aria2/README.html | 2272 +++++++++++------ electron.vite.config.1719928703430.mjs | 30 +- .../download/real-debrid-downloader.ts | 35 +- 3 files changed, 1530 insertions(+), 807 deletions(-) diff --git a/aria2/README.html b/aria2/README.html index d9ca8a0f..49be23f7 100644 --- a/aria2/README.html +++ b/aria2/README.html @@ -1,13 +1,15 @@ - - - -aria2 - The ultra fast download utility - + + +
+

aria2 - The ultra fast download utility

- - - -
-

aria2 - The ultra fast download utility

- -
-

Disclaimer

-

This program comes with no warranty. -You must use this program at your own risk.

-
-
-

Introduction

-

aria2 is a utility for downloading files. The supported protocols are -HTTP(S), FTP, SFTP, BitTorrent, and Metalink. aria2 can download a -file from multiple sources/protocols and tries to utilize your maximum -download bandwidth. It supports downloading a file from -HTTP(S)/FTP/SFTP and BitTorrent at the same time, while the data -downloaded from HTTP(S)/FTP/SFTP is uploaded to the BitTorrent -swarm. Using Metalink's chunk checksums, aria2 automatically validates -chunks of data while downloading a file like BitTorrent.

-

The project page is located at https://aria2.github.io/.

-

See the aria2 Online Manual (Russian translation, Portuguese -translation) to learn -how to use aria2.

-
-
-

Features

-

Here is a list of features:

-
    -
  • Command-line interface
  • -
  • Download files through HTTP(S)/FTP/SFTP/BitTorrent
  • -
  • Segmented downloading
  • -
  • Metalink version 4 (RFC 5854) support(HTTP/FTP/SFTP/BitTorrent)
  • -
  • Metalink version 3.0 support(HTTP/FTP/SFTP/BitTorrent)
  • -
  • Metalink/HTTP (RFC 6249) support
  • -
  • HTTP/1.1 implementation
  • -
  • HTTP Proxy support
  • -
  • HTTP BASIC authentication support
  • -
  • HTTP Proxy authentication support
  • -
  • Well-known environment variables for proxy: http_proxy, -https_proxy, ftp_proxy, all_proxy and no_proxy
  • -
  • HTTP gzip, deflate content encoding support
  • -
  • Verify peer using given trusted CA certificate in HTTPS
  • -
  • Client certificate authentication in HTTPS
  • -
  • Chunked transfer encoding support
  • -
  • Load Cookies from the file using the Firefox3 format, Chromium/Google Chrome -and the Mozilla/Firefox -(1.x/2.x)/Netscape format.
  • -
  • Save Cookies in the Mozilla/Firefox (1.x/2.x)/Netscape format.
  • -
  • Custom HTTP Header support
  • -
  • Persistent Connections support
  • -
  • FTP/SFTP through HTTP Proxy
  • -
  • Download/Upload speed throttling
  • -
  • BitTorrent extensions: Fast extension, DHT, PEX, MSE/PSE, -Multi-Tracker, UDP tracker
  • -
  • BitTorrent WEB-Seeding. -aria2 requests chunk more than piece size to reduce the request -overhead. It also supports pipelined requests with piece size.
  • -
  • BitTorrent Local Peer Discovery
  • -
  • Rename/change the directory structure of BitTorrent downloads -completely
  • -
  • JSON-RPC (over HTTP and WebSocket)/XML-RPC interface
  • -
  • Run as a daemon process
  • -
  • Selective download in multi-file torrent/Metalink
  • -
  • Chunk checksum validation in Metalink
  • -
  • Can disable segmented downloading in Metalink
  • -
  • Netrc support
  • -
  • Configuration file support
  • -
  • Download URIs found in a text file or stdin and the destination -directory and output file name can be specified optionally
  • -
  • Parameterized URI support
  • -
  • IPv6 support with Happy Eyeballs
  • -
  • Disk cache to reduce disk activity
  • -
-
-
-

Versioning and release schedule

-

We use 3 numbers for the aria2 version: MAJOR.MINOR.PATCH. We will ship -MINOR updates on the 15th of every month. We may skip a release if we have -had no changes since the last release. The feature and documentation -freeze happens 10 days before the release day (the 5th day of the month) -for translation teams. We will raise an issue about the upcoming -release around that day.

-

We may release PATCH releases between regular releases if we have -security issues.

-

The MAJOR version will stay at 1 for the time being.

-
-
-

How to get source code

-

We maintain the source code at Github: -https://github.com/aria2/aria2

-

To get the latest source code, run the following command:

-
+      
+

Disclaimer

+

+ This program comes with no warranty. You must use this program at your + own risk. +

+
+
+

Introduction

+

+ aria2 is a utility for downloading files. The supported protocols are + HTTP(S), FTP, SFTP, BitTorrent, and Metalink. aria2 can download a + file from multiple sources/protocols and tries to utilize your maximum + download bandwidth. It supports downloading a file from + HTTP(S)/FTP/SFTP and BitTorrent at the same time, while the data + downloaded from HTTP(S)/FTP/SFTP is uploaded to the BitTorrent swarm. + Using Metalink's chunk checksums, aria2 automatically validates chunks + of data while downloading a file like BitTorrent. +

+

+ The project page is located at + https://aria2.github.io/. +

+

+ See the + aria2 Online Manual + (Russian translation, + Portuguese translation) to learn how to use aria2. +

+
+
+

Features

+

Here is a list of features:

+
    +
  • Command-line interface
  • +
  • Download files through HTTP(S)/FTP/SFTP/BitTorrent
  • +
  • Segmented downloading
  • +
  • + Metalink version 4 (RFC 5854) support(HTTP/FTP/SFTP/BitTorrent) +
  • +
  • Metalink version 3.0 support(HTTP/FTP/SFTP/BitTorrent)
  • +
  • Metalink/HTTP (RFC 6249) support
  • +
  • HTTP/1.1 implementation
  • +
  • HTTP Proxy support
  • +
  • HTTP BASIC authentication support
  • +
  • HTTP Proxy authentication support
  • +
  • + Well-known environment variables for proxy: + http_proxy, + https_proxy, + ftp_proxy, + all_proxy and + no_proxy +
  • +
  • HTTP gzip, deflate content encoding support
  • +
  • Verify peer using given trusted CA certificate in HTTPS
  • +
  • Client certificate authentication in HTTPS
  • +
  • Chunked transfer encoding support
  • +
  • + Load Cookies from the file using the Firefox3 format, + Chromium/Google Chrome and the Mozilla/Firefox (1.x/2.x)/Netscape + format. +
  • +
  • + Save Cookies in the Mozilla/Firefox (1.x/2.x)/Netscape format. +
  • +
  • Custom HTTP Header support
  • +
  • Persistent Connections support
  • +
  • FTP/SFTP through HTTP Proxy
  • +
  • Download/Upload speed throttling
  • +
  • + BitTorrent extensions: Fast extension, DHT, PEX, MSE/PSE, + Multi-Tracker, UDP tracker +
  • +
  • + BitTorrent + WEB-Seeding. aria2 requests chunk more than piece size to reduce the request + overhead. It also supports pipelined requests with piece size. +
  • +
  • BitTorrent Local Peer Discovery
  • +
  • + Rename/change the directory structure of BitTorrent downloads + completely +
  • +
  • JSON-RPC (over HTTP and WebSocket)/XML-RPC interface
  • +
  • Run as a daemon process
  • +
  • Selective download in multi-file torrent/Metalink
  • +
  • Chunk checksum validation in Metalink
  • +
  • Can disable segmented downloading in Metalink
  • +
  • Netrc support
  • +
  • Configuration file support
  • +
  • + Download URIs found in a text file or stdin and the destination + directory and output file name can be specified optionally +
  • +
  • Parameterized URI support
  • +
  • IPv6 support with Happy Eyeballs
  • +
  • Disk cache to reduce disk activity
  • +
+
+
+

Versioning and release schedule

+

+ We use 3 numbers for the aria2 version: MAJOR.MINOR.PATCH. We will + ship MINOR updates on the 15th of every month. We may skip a release + if we have had no changes since the last release. The feature and + documentation freeze happens 10 days before the release day (the 5th + day of the month) for translation teams. We will raise an issue about + the upcoming release around that day. +

+

+ We may release PATCH releases between regular releases if we have + security issues. +

+

The MAJOR version will stay at 1 for the time being.

+
+
+

How to get source code

+

+ We maintain the source code at Github: + https://github.com/aria2/aria2 +

+

To get the latest source code, run the following command:

+
 $ git clone https://github.com/aria2/aria2.git
-
-

This will create an aria2 directory in your current directory and source -files are stored there.

-
-
-

Dependency

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
featuresdependency
HTTPSOSX or GnuTLS or OpenSSL or Windows
SFTPlibssh2
BitTorrentNone. Optional: libnettle+libgmp or libgcrypt -or OpenSSL (see note)
Metalinklibxml2 or Expat.
ChecksumNone. Optional: OSX or libnettle or libgcrypt -or OpenSSL or Windows (see note)
gzip, deflate in HTTPzlib
Async DNSC-Ares
Firefox3/Chromium cookielibsqlite3
XML-RPClibxml2 or Expat.
JSON-RPC over WebSocketlibnettle or libgcrypt or OpenSSL
-
-

Note

-

libxml2 has precedence over Expat if both libraries are installed. -If you prefer Expat, run configure with --without-libxml2.

-
-
-

Note

-

On Apple OSX, OS-level SSL/TLS support will be preferred. Hence -neither GnuTLS nor OpenSSL is required on that platform. If you'd -like to disable this behavior, run configure with ---without-appletls.

-

GnuTLS has precedence over OpenSSL if both libraries are installed. -If you prefer OpenSSL, run configure with --without-gnutls ---with-openssl.

-

On Windows, there is SSL implementation available that is based on -the native Windows SSL capabilities (Schannel) and it will be -preferred. Hence neither GnuTLS nor OpenSSL is required on that -platform. If you'd like to disable this behavior, run configure -with --without-wintls.

-
-
-

Note

-

On Apple OSX, the OS-level checksum support will be preferred, -unless aria2 is configured with --without-appletls.

-

libnettle has precedence over libgcrypt if both libraries are -installed. If you prefer libgcrypt, run configure with ---without-libnettle --with-libgcrypt. If OpenSSL is selected over -GnuTLS, neither libnettle nor libgcrypt will be used.

-

If none of the optional dependencies are installed, an internal -implementation that only supports md5 and sha1 will be used.

-

On Windows, there is SSL implementation available that is based on -the native Windows capabilities and it will be preferred, unless -aria2 is configured with --without-wintls.

-
-

A user can have one of the following configurations for SSL and crypto -libraries:

-
    -
  • OpenSSL
  • -
  • GnuTLS + libgcrypt
  • -
  • GnuTLS + libnettle
  • -
  • Apple TLS (OSX only)
  • -
  • Windows TLS (Windows only)
  • -
-

You can disable BitTorrent and Metalink support by providing ---disable-bittorrent and --disable-metalink to the configure -script respectively.

-

To enable async DNS support, you need c-ares.

- -
-
-

How to build

-

aria2 is primarily written in C++. Initially, it was written based on -C++98/C++03 standard features. We are now migrating aria2 to the C++11 -standard. The current source code requires a C++11 aware compiler. For -well-known compilers, such as g++ and clang, the -std=c++11 or --std=c++0x flag must be supported.

-

To build aria2 from the source package, you need the following -development packages (package name may vary depending on the -distribution you use):

-
    -
  • libgnutls-dev (Required for HTTPS, BitTorrent, Checksum support)
  • -
  • nettle-dev (Required for BitTorrent, Checksum support)
  • -
  • libgmp-dev (Required for BitTorrent)
  • -
  • libssh2-1-dev (Required for SFTP support)
  • -
  • libc-ares-dev (Required for async DNS support)
  • -
  • libxml2-dev (Required for Metalink support)
  • -
  • zlib1g-dev (Required for gzip, deflate decoding support in HTTP)
  • -
  • libsqlite3-dev (Required for Firefox3/Chromium cookie support)
  • -
  • pkg-config (Required to detect installed libraries)
  • -
-

You can use libgcrypt-dev instead of nettle-dev and libgmp-dev:

-
    -
  • libgpg-error-dev (Required for BitTorrent, Checksum support)
  • -
  • libgcrypt-dev (Required for BitTorrent, Checksum support)
  • -
-

You can use libssl-dev instead of -libgnutls-dev, nettle-dev, libgmp-dev, libgpg-error-dev and libgcrypt-dev:

-
    -
  • libssl-dev (Required for HTTPS, BitTorrent, Checksum support)
  • -
-

You can use libexpat1-dev instead of libxml2-dev:

-
    -
  • libexpat1-dev (Required for Metalink support)
  • -
-

On Fedora you need the following packages: gcc, gcc-c++, kernel-devel, -libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit

-

If you downloaded source code from a git repository, you have to install -the following packages to get autoconf macros:

-
    -
  • libxml2-dev
  • -
  • libcppunit-dev
  • -
  • autoconf
  • -
  • automake
  • -
  • autotools-dev
  • -
  • autopoint
  • -
  • libtool
  • -
-

And run the following command to generate configure script and other files -necessary to build the program:

-
+
+

+ This will create an aria2 directory in your current directory and + source files are stored there. +

+
+
+

Dependency

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
featuresdependency
HTTPSOSX or GnuTLS or OpenSSL or Windows
SFTPlibssh2
BitTorrent + None. Optional: libnettle+libgmp or libgcrypt or OpenSSL (see + note) +
Metalinklibxml2 or Expat.
Checksum + None. Optional: OSX or libnettle or libgcrypt or OpenSSL or + Windows (see note) +
gzip, deflate in HTTPzlib
Async DNSC-Ares
Firefox3/Chromium cookielibsqlite3
XML-RPClibxml2 or Expat.
JSON-RPC over WebSocketlibnettle or libgcrypt or OpenSSL
+
+

Note

+

+ libxml2 has precedence over Expat if both libraries are installed. + If you prefer Expat, run configure with + --without-libxml2. +

+
+
+

Note

+

+ On Apple OSX, OS-level SSL/TLS support will be preferred. Hence + neither GnuTLS nor OpenSSL is required on that platform. If you'd + like to disable this behavior, run configure with + --without-appletls. +

+

+ GnuTLS has precedence over OpenSSL if both libraries are installed. + If you prefer OpenSSL, run configure with + --without-gnutls + --with-openssl. +

+

+ On Windows, there is SSL implementation available that is based on + the native Windows SSL capabilities (Schannel) and it will be + preferred. Hence neither GnuTLS nor OpenSSL is required on that + platform. If you'd like to disable this behavior, run configure with + --without-wintls. +

+
+
+

Note

+

+ On Apple OSX, the OS-level checksum support will be preferred, + unless aria2 is configured with + --without-appletls. +

+

+ libnettle has precedence over libgcrypt if both libraries are + installed. If you prefer libgcrypt, run configure with + --without-libnettle + --with-libgcrypt. If OpenSSL is selected over GnuTLS, neither libnettle nor + libgcrypt will be used. +

+

+ If none of the optional dependencies are installed, an internal + implementation that only supports md5 and sha1 will be used. +

+

+ On Windows, there is SSL implementation available that is based on + the native Windows capabilities and it will be preferred, unless + aria2 is configured with + --without-wintls. +

+
+

+ A user can have one of the following configurations for SSL and crypto + libraries: +

+
    +
  • OpenSSL
  • +
  • GnuTLS + libgcrypt
  • +
  • GnuTLS + libnettle
  • +
  • Apple TLS (OSX only)
  • +
  • Windows TLS (Windows only)
  • +
+

+ You can disable BitTorrent and Metalink support by providing + --disable-bittorrent + and + --disable-metalink + to the configure script respectively. +

+

To enable async DNS support, you need c-ares.

+ +
+
+

How to build

+

+ aria2 is primarily written in C++. Initially, it was written based on + C++98/C++03 standard features. We are now migrating aria2 to the C++11 + standard. The current source code requires a C++11 aware compiler. For + well-known compilers, such as g++ and clang, the + -std=c++11 + or + -std=c++0x + flag must be supported. +

+

+ To build aria2 from the source package, you need the following + development packages (package name may vary depending on the + distribution you use): +

+
    +
  • + libgnutls-dev (Required for HTTPS, BitTorrent, Checksum support) +
  • +
  • nettle-dev (Required for BitTorrent, Checksum support)
  • +
  • libgmp-dev (Required for BitTorrent)
  • +
  • libssh2-1-dev (Required for SFTP support)
  • +
  • libc-ares-dev (Required for async DNS support)
  • +
  • libxml2-dev (Required for Metalink support)
  • +
  • + zlib1g-dev (Required for gzip, deflate decoding support in HTTP) +
  • +
  • + libsqlite3-dev (Required for Firefox3/Chromium cookie support) +
  • +
  • pkg-config (Required to detect installed libraries)
  • +
+

You can use libgcrypt-dev instead of nettle-dev and libgmp-dev:

+
    +
  • libgpg-error-dev (Required for BitTorrent, Checksum support)
  • +
  • libgcrypt-dev (Required for BitTorrent, Checksum support)
  • +
+

+ You can use libssl-dev instead of libgnutls-dev, nettle-dev, + libgmp-dev, libgpg-error-dev and libgcrypt-dev: +

+
    +
  • libssl-dev (Required for HTTPS, BitTorrent, Checksum support)
  • +
+

You can use libexpat1-dev instead of libxml2-dev:

+
    +
  • libexpat1-dev (Required for Metalink support)
  • +
+

+ On Fedora you need the following packages: gcc, gcc-c++, kernel-devel, + libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit +

+

+ If you downloaded source code from a git repository, you have to + install the following packages to get autoconf macros: +

+
    +
  • libxml2-dev
  • +
  • libcppunit-dev
  • +
  • autoconf
  • +
  • automake
  • +
  • autotools-dev
  • +
  • autopoint
  • +
  • libtool
  • +
+

+ And run the following command to generate configure script and other + files necessary to build the program: +

+
 $ autoreconf -i
-
-

Also, you need Sphinx to build the man page.

-

If you are building aria2 for Mac OS X, take a look at -the makerelease-osx.mk GNU Make makefile.

-

The quickest way to build aria2 is first to run configure script:

-
+
+

+ Also, you need + Sphinx + to build the man page. +

+

+ If you are building aria2 for Mac OS X, take a look at the + makerelease-osx.mk GNU Make makefile. +

+

The quickest way to build aria2 is first to run configure script:

+
 $ ./configure
-
-

To build statically linked aria2, use ARIA2_STATIC=yes -command-line option:

-
+
+

+ To build statically linked aria2, use + ARIA2_STATIC=yes command-line + option: +

+
 $ ./configure ARIA2_STATIC=yes
-
-

After configuration is done, run make to compile the program:

-
+
+

+ After configuration is done, run + make to compile the program: +

+
 $ make
-
-

See Cross-compiling Windows binary to create a Windows binary. -See Cross-compiling Android binary to create an Android binary.

-

The configure script checks available libraries and enables as many -features as possible except for experimental features not enabled by -default.

-

Since 1.1.0, aria2 checks the certificate of HTTPS servers by default. -If you build with OpenSSL or the recent version of GnuTLS which has -gnutls_certificate_set_x509_system_trust() function and the -library is properly configured to locate the system-wide CA -certificates store, aria2 will automatically load those certificates -at the startup. If it is not the case, I recommend supplying the path -to the CA bundle file. For example, in Debian the path to CA bundle -file is '/etc/ssl/certs/ca-certificates.crt' (in ca-certificates -package). This may vary depending on your distribution. You can give -it to configure script using --with-ca-bundle option:

-
+
+

+ See + Cross-compiling Windows binary + to create a Windows binary. See + Cross-compiling Android binary + to create an Android binary. +

+

+ The configure script checks available libraries and enables as many + features as possible except for experimental features not enabled by + default. +

+

+ Since 1.1.0, aria2 checks the certificate of HTTPS servers by default. + If you build with OpenSSL or the recent version of GnuTLS which has + gnutls_certificate_set_x509_system_trust() + function and the library is properly configured to locate the + system-wide CA certificates store, aria2 will automatically load those + certificates at the startup. If it is not the case, I recommend + supplying the path to the CA bundle file. For example, in Debian the + path to CA bundle file is '/etc/ssl/certs/ca-certificates.crt' (in + ca-certificates package). This may vary depending on your + distribution. You can give it to configure script using + --with-ca-bundle option: +

+
 $ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt'
 $ make
-
-

Without --with-ca-bundle option, you will encounter the error when -accessing HTTPS servers because the certificate cannot be verified -without the CA bundle. In such a case, you can specify the CA bundle file -using aria2's --ca-certificate option. If you don't have the CA bundle -file installed, then the last resort is to disable the certificate -validation using --check-certificate=false.

-

Using the native OSX (AppleTLS) and/or Windows (WinTLS) implementation -will automatically use the system certificate store, so ---with-ca-bundle is not necessary and will be ignored when using -these implementations.

-

By default, the bash_completion file named aria2c is installed to -the directory $prefix/share/doc/aria2/bash_completion. To change -the install directory of the file, use --with-bashcompletiondir -option.

-

After a make, the executable is located at src/aria2c.

-

aria2 uses CppUnit for automated unit testing. To run the unit test:

-
+
+

+ Without + --with-ca-bundle + option, you will encounter the error when accessing HTTPS servers + because the certificate cannot be verified without the CA bundle. In + such a case, you can specify the CA bundle file using aria2's + --ca-certificate + option. If you don't have the CA bundle file installed, then the last + resort is to disable the certificate validation using + --check-certificate=false. +

+

+ Using the native OSX (AppleTLS) and/or Windows (WinTLS) implementation + will automatically use the system certificate store, so + --with-ca-bundle + is not necessary and will be ignored when using these implementations. +

+

+ By default, the bash_completion file named + aria2c is installed to the directory + $prefix/share/doc/aria2/bash_completion. To change the install directory of the file, use + --with-bashcompletiondir + option. +

+

+ After a make, the executable is + located at src/aria2c. +

+

+ aria2 uses CppUnit for automated unit testing. To run the unit test: +

+
 $ make check
-
-
-
-

Cross-compiling Windows binary

-

In this section, we describe how to build a Windows binary using a -mingw-w64 (http://mingw-w64.org/doku.php) cross-compiler on Debian -Linux. The MinGW (http://www.mingw.org/) may not be able to build -aria2.

-

The easiest way to build Windows binary is using Dockerfile.mingw. See -Dockerfile.mingw how to build a binary. If you cannot use Dockerfile, -then continue to read the following paragraphs.

-

Basically, after compiling and installing depended libraries, you can -do cross-compile just passing appropriate --host option and -specifying CPPFLAGS, LDFLAGS, and PKG_CONFIG_LIBDIR -variables to configure. For convenience and to lower our own -development cost, we provide an easier way to configure the build -settings.

-

mingw-config script is a configure script wrapper for mingw-w64. -We use it to create official Windows build. This script assumes -the following libraries have been built for cross-compile:

-
    -
  • c-ares
  • -
  • expat
  • -
  • sqlite3
  • -
  • zlib
  • -
  • libssh2
  • -
  • cppunit
  • -
-

Some environment variables can be adjusted to change build settings:

-
-
HOST
-
cross-compile to build programs to run on HOST. It defaults to -i686-w64-mingw32. To build a 64bit binary, specify -x86_64-w64-mingw32.
-
PREFIX
-
Prefix to the directory where dependent libraries are installed. It -defaults to /usr/local/$HOST. -I$PREFIX/include will be -added to CPPFLAGS. -L$PREFIX/lib will be added to -LDFLAGS. $PREFIX/lib/pkgconfig will be set to -PKG_CONFIG_LIBDIR.
-
-

For example, to build a 64bit binary do this:

-
+
+
+
+

Cross-compiling Windows binary

+

+ In this section, we describe how to build a Windows binary using a + mingw-w64 (http://mingw-w64.org/doku.php) cross-compiler on Debian Linux. The MinGW (http://www.mingw.org/) may not be able to build aria2. +

+

+ The easiest way to build Windows binary is using Dockerfile.mingw. See + Dockerfile.mingw how to build a binary. If you cannot use Dockerfile, + then continue to read the following paragraphs. +

+

+ Basically, after compiling and installing depended libraries, you can + do cross-compile just passing appropriate + --host + option and specifying CPPFLAGS, + LDFLAGS, and + PKG_CONFIG_LIBDIR variables to + configure. For convenience and to lower our own development cost, we + provide an easier way to configure the build settings. +

+

+ mingw-config + script is a configure script wrapper for mingw-w64. We use it to + create official Windows build. This script assumes the following + libraries have been built for cross-compile: +

+
    +
  • c-ares
  • +
  • expat
  • +
  • sqlite3
  • +
  • zlib
  • +
  • libssh2
  • +
  • cppunit
  • +
+

+ Some environment variables can be adjusted to change build settings: +

+
+
HOST
+
+ cross-compile to build programs to run on + HOST. It defaults to + i686-w64-mingw32. To build a 64bit binary, specify + x86_64-w64-mingw32. +
+
PREFIX
+
+ Prefix to the directory where dependent libraries are installed. It + defaults to + /usr/local/$HOST. + -I$PREFIX/include + will be added to CPPFLAGS. + -L$PREFIX/lib + will be added to LDFLAGS. + $PREFIX/lib/pkgconfig will be set + to PKG_CONFIG_LIBDIR. +
+
+

For example, to build a 64bit binary do this:

+
 $ HOST=x86_64-w64-mingw32 ./mingw-config
-
-

If you want libaria2 dll with --enable-libaria2, then don't use -ARIA2_STATIC=yes and prepare the DLL version of external -libraries.

-
-
-

Cross-compiling Android binary

-

In this section, we describe how to build Android binary using Android -NDK cross-compiler on Debian Linux.

-

At the time of this writing, Android NDK r21e should compile aria2 -without errors.

-

android-config script is a configure script wrapper for Android -build. We use it to create an official Android build. This script -assumes the following libraries have been built for cross-compile:

-
    -
  • c-ares
  • -
  • openssl
  • -
  • expat
  • -
  • zlib
  • -
  • libssh2
  • -
-

When building the above libraries, make sure that disable shared -library and enable only static library. We are going to link those -libraries statically.

-

android-config assumes that $ANDROID_HOME and $NDK -environment variables are defined.

-

We currently use Android NDK r21e. $NDK should point to the -directory to Android NDK. The build tools will be found under -$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/.

-

All the dependent libraries must be installed under -$ANDROID_HOME/usr/local.

-

After android-config, run make to compile sources.

-
-
-

Building documentation

-

Sphinx is used to building the -documentation. aria2 man pages will be build when you run make if -they are not up-to-date. You can also build an HTML version of the aria2 -man page by make html. The HTML version manual is also available -online (Russian -translation, Portuguese -translation).

-
-
-

BitTorrent

-
-

About file names

-

The file name of the downloaded file is determined as follows:

-
-
single-file mode
-
If "name" key is present in .torrent file, the file name is the value -of "name" key. Otherwise, the file name is the base name of .torrent -file appended by ".file". For example, .torrent file is -"test.torrent", then file name is "test.torrent.file". The -directory to store the downloaded file can be specified by -d -option.
-
multi-file mode
-
The complete directory/file structure mentioned in .torrent file -is created. The directory to store the top directory of -downloaded files can be specified by -d option.
-
-

Before download starts, a complete directory structure is created if -needed. By default, aria2 opens at most 100 files mentioned in -.torrent file, and directly writes to and reads from these files. -The number of files to open simultaneously can be controlled by ---bt-max-open-files option.

-
-
-

DHT

-

aria2 supports mainline compatible DHT. By default, the routing table -for IPv4 DHT is saved to $XDG_CACHE_HOME/aria2/dht.dat and the -routing table for IPv6 DHT is saved to -$XDG_CACHE_HOME/aria2/dht6.dat unless files exist at -$HOME/.aria2/dht.dat or $HOME/.aria2/dht6.dat. aria2 uses the -same port number to listen on for both IPv4 and IPv6 DHT.

-
-
-

UDP tracker

-

UDP tracker support is enabled when IPv4 DHT is enabled. The port -number of the UDP tracker is shared with DHT. Use --dht-listen-port -option to change the port number.

-
-
-

Other things should be noted

-
    -
  • -o option is used to change the file name of .torrent file itself, -not a file name of a file in .torrent file. For this purpose, use ---index-out option instead.
  • -
  • The port numbers that aria2 uses by default are 6881-6999 for TCP -and UDP.
  • -
  • aria2 doesn't configure port-forwarding automatically. Please -configure your router or firewall manually.
  • -
  • The maximum number of peers is 55. This limit may be exceeded when -the download rate is low. This download rate can be adjusted using ---bt-request-peer-speed-limit option.
  • -
  • As of release 0.10.0, aria2 stops sending request messages after -selective download completes.
  • -
-
-
- - -
-

netrc

-

netrc support is enabled by default for HTTP(S)/FTP/SFTP. To disable -netrc support, specify -n command-line option. Your .netrc file -should have correct permissions(600).

-
-
-

WebSocket

-

The WebSocket server embedded in aria2 implements the specification -defined in RFC 6455. The supported protocol version is 13.

-
-
-

libaria2

-

The libaria2 is a C++ library that offers aria2 functionality to the -client code. Currently, libaria2 is not built by default. To enable -libaria2, use --enable-libaria2 configure option. By default, -only the shared library is built. To build a static library, use ---enable-static configure option as well. See libaria2 -documentation to know how to use API.

-
- -
- + +

+ If you want libaria2 dll with + --enable-libaria2, then don't use + ARIA2_STATIC=yes and prepare the DLL + version of external libraries. +

+
+
+

Cross-compiling Android binary

+

+ In this section, we describe how to build Android binary using Android + NDK cross-compiler on Debian Linux. +

+

+ At the time of this writing, Android NDK r21e should compile aria2 + without errors. +

+

+ android-config + script is a configure script wrapper for Android build. We use it to + create an official Android build. This script assumes the following + libraries have been built for cross-compile: +

+
    +
  • c-ares
  • +
  • openssl
  • +
  • expat
  • +
  • zlib
  • +
  • libssh2
  • +
+

+ When building the above libraries, make sure that disable shared + library and enable only static library. We are going to link those + libraries statically. +

+

+ android-config + assumes that $ANDROID_HOME and + $NDK environment variables are + defined. +

+

+ We currently use Android NDK r21e. + $NDK should point to the directory + to Android NDK. The build tools will be found under + $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/. +

+

+ All the dependent libraries must be installed under + $ANDROID_HOME/usr/local. +

+

+ After + android-config, run make to compile sources. +

+
+
+

Building documentation

+

+ Sphinx + is used to building the documentation. aria2 man pages will be build + when you run make if they are not + up-to-date. You can also build an HTML version of the aria2 man page + by make html. The HTML version + manual is also available + online + (Russian translation, + Portuguese translation). +

+
+
+

BitTorrent

+
+

About file names

+

The file name of the downloaded file is determined as follows:

+
+
single-file mode
+
+ If "name" key is present in .torrent file, the file name + is the value of "name" key. Otherwise, the file name is + the base name of .torrent file appended by ".file". For + example, .torrent file is "test.torrent", then file name + is "test.torrent.file". The directory to store the + downloaded file can be specified by -d option. +
+
multi-file mode
+
+ The complete directory/file structure mentioned in .torrent file + is created. The directory to store the top directory of downloaded + files can be specified by -d option. +
+
+

+ Before download starts, a complete directory structure is created if + needed. By default, aria2 opens at most 100 files mentioned in + .torrent file, and directly writes to and reads from these files. + The number of files to open simultaneously can be controlled by + --bt-max-open-files + option. +

+
+
+

DHT

+

+ aria2 supports mainline compatible DHT. By default, the routing + table for IPv4 DHT is saved to + $XDG_CACHE_HOME/aria2/dht.dat and + the routing table for IPv6 DHT is saved to + $XDG_CACHE_HOME/aria2/dht6.dat + unless files exist at + $HOME/.aria2/dht.dat + or + $HOME/.aria2/dht6.dat. aria2 uses the same port number to listen on for both IPv4 and + IPv6 DHT. +

+
+
+

UDP tracker

+

+ UDP tracker support is enabled when IPv4 DHT is enabled. The port + number of the UDP tracker is shared with DHT. Use + --dht-listen-port + option to change the port number. +

+
+
+

Other things should be noted

+
    +
  • + -o + option is used to change the file name of .torrent file itself, + not a file name of a file in .torrent file. For this purpose, use + --index-out + option instead. +
  • +
  • + The port numbers that aria2 uses by default are 6881-6999 for TCP + and UDP. +
  • +
  • + aria2 doesn't configure port-forwarding automatically. Please + configure your router or firewall manually. +
  • +
  • + The maximum number of peers is 55. This limit may be exceeded when + the download rate is low. This download rate can be adjusted using + --bt-request-peer-speed-limit + option. +
  • +
  • + As of release 0.10.0, aria2 stops sending request messages after + selective download completes. +
  • +
+
+
+ + +
+

netrc

+

+ netrc support is enabled by default for HTTP(S)/FTP/SFTP. To disable + netrc support, specify -n command-line option. Your .netrc file should + have correct permissions(600). +

+
+
+

WebSocket

+

+ The WebSocket server embedded in aria2 implements the specification + defined in RFC 6455. The supported protocol version is 13. +

+
+
+

libaria2

+

+ The libaria2 is a C++ library that offers aria2 functionality to the + client code. Currently, libaria2 is not built by default. To enable + libaria2, use + --enable-libaria2 + configure option. By default, only the shared library is built. To + build a static library, use + --enable-static + configure option as well. See libaria2 documentation to know how to + use API. +

+
+ +
+ diff --git a/electron.vite.config.1719928703430.mjs b/electron.vite.config.1719928703430.mjs index aa9802ff..ed758ce8 100644 --- a/electron.vite.config.1719928703430.mjs +++ b/electron.vite.config.1719928703430.mjs @@ -4,7 +4,7 @@ import { defineConfig, loadEnv, swcPlugin, - externalizeDepsPlugin + externalizeDepsPlugin, } from "electron-vite"; import react from "@vitejs/plugin-react"; import { sentryVitePlugin } from "@sentry/vite-plugin"; @@ -13,7 +13,7 @@ import svgr from "vite-plugin-svgr"; var sentryPlugin = sentryVitePlugin({ authToken: process.env.SENTRY_AUTH_TOKEN, org: "hydra-launcher", - project: "hydra-launcher" + project: "hydra-launcher", }); var electron_vite_config_default = defineConfig(({ mode }) => { loadEnv(mode); @@ -22,37 +22,35 @@ var electron_vite_config_default = defineConfig(({ mode }) => { build: { sourcemap: true, rollupOptions: { - external: ["better-sqlite3"] - } + external: ["better-sqlite3"], + }, }, resolve: { alias: { "@main": resolve("src/main"), "@locales": resolve("src/locales"), "@resources": resolve("resources"), - "@shared": resolve("src/shared") - } + "@shared": resolve("src/shared"), + }, }, - plugins: [externalizeDepsPlugin(), swcPlugin(), sentryPlugin] + plugins: [externalizeDepsPlugin(), swcPlugin(), sentryPlugin], }, preload: { - plugins: [externalizeDepsPlugin()] + plugins: [externalizeDepsPlugin()], }, renderer: { build: { - sourcemap: true + sourcemap: true, }, resolve: { alias: { "@renderer": resolve("src/renderer/src"), "@locales": resolve("src/locales"), - "@shared": resolve("src/shared") - } + "@shared": resolve("src/shared"), + }, }, - plugins: [svgr(), react(), vanillaExtractPlugin(), sentryPlugin] - } + plugins: [svgr(), react(), vanillaExtractPlugin(), sentryPlugin], + }, }; }); -export { - electron_vite_config_default as default -}; +export { electron_vite_config_default as default }; diff --git a/src/main/services/download/real-debrid-downloader.ts b/src/main/services/download/real-debrid-downloader.ts index 1886f36e..58b088d8 100644 --- a/src/main/services/download/real-debrid-downloader.ts +++ b/src/main/services/download/real-debrid-downloader.ts @@ -51,6 +51,10 @@ export class RealDebridDownloader { } ); + if (progress === 1) { + await this.pauseDownload(); + } + return { numPeers: 0, numSeeds: 0, @@ -67,13 +71,42 @@ export class RealDebridDownloader { } as DownloadProgress; } + if (this.realDebridTorrentId && this.downloadingGame) { + const torrentInfo = await RealDebridClient.getTorrentInfo( + this.realDebridTorrentId + ); + + const { status } = torrentInfo; + + if (status === "downloaded") { + this.startDownload(this.downloadingGame); + } + + const progress = torrentInfo.progress / 100; + const totalDownloaded = progress * torrentInfo.bytes; + + return { + numPeers: 0, + numSeeds: torrentInfo.seeders, + downloadSpeed: torrentInfo.speed, + timeRemaining: calculateETA( + torrentInfo.bytes, + totalDownloaded, + torrentInfo.speed + ), + isDownloadingMetadata: status === "magnet_conversion", + } as DownloadProgress; + } + return null; } static async pauseDownload() { - HttpDownload.pauseDownload(); + await HttpDownload.pauseDownload(); + this.realDebridTorrentId = null; this.downloadingGame = null; + this.downloads.delete(this.downloadingGame!.id!); } static async startDownload(game: Game) {