2006-07-04 11:44:15 +00:00
|
|
|
aria2 - The high speed download utility
|
2006-02-17 13:35:04 +00:00
|
|
|
|
|
|
|
1. Disclaimer
|
|
|
|
-------------
|
|
|
|
This program comes with no warranty.
|
|
|
|
You must use this program at your own risk.
|
|
|
|
|
|
|
|
2. About aria2
|
|
|
|
--------------
|
2006-02-21 14:00:58 +00:00
|
|
|
aria2 has segmented downloading engine in its core. By segmented downloading,
|
2006-02-17 13:35:04 +00:00
|
|
|
it can download files very much faster than ordinary browsers.
|
|
|
|
|
|
|
|
aria2 is in very early development stage. Currently it has following features:
|
2006-02-21 15:01:05 +00:00
|
|
|
* HTTP/HTTPS GET support
|
2006-02-17 13:35:04 +00:00
|
|
|
* HTTP Proxy support
|
|
|
|
* HTTP BASIC authentication support
|
|
|
|
* HTTP Proxy authentication support
|
2006-02-21 15:01:05 +00:00
|
|
|
* FTP support(active, passive mode)
|
|
|
|
* FTP through HTTP proxy(GET command or tunneling)
|
2006-02-17 13:35:04 +00:00
|
|
|
* Segmented download
|
|
|
|
* Cookie support(currently aria2 ignores "expires")
|
|
|
|
* It can run as a daemon process.
|
2006-05-26 15:28:19 +00:00
|
|
|
* BitTorrent protocol support with fast extension.
|
2006-04-18 17:06:17 +00:00
|
|
|
* Selective download in multi-file torrent
|
2006-08-07 16:47:52 +00:00
|
|
|
* Metalink version 3.0 support(HTTP/FTP/BitTorrent).
|
2006-09-23 12:43:42 +00:00
|
|
|
* Limiting download/upload speed.
|
2006-02-17 13:35:04 +00:00
|
|
|
|
|
|
|
3. How to build
|
|
|
|
---------------
|
|
|
|
$ ./configure
|
|
|
|
$ make
|
|
|
|
|
|
|
|
The executable is aria2c in src directory.
|
2006-02-18 05:13:21 +00:00
|
|
|
|
2006-03-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* configure.in: Added gnutls support. Added several CPP macros.
* m4/openssl.m4: Added.
* src/SocketCore.{h,cc}: Drop const quarifier from writeData(),
readData(), peekData(). Added gnutls support.
* src/HttpDownloadCommand.cc: Removed SleepCommand.h
* src/TrackerWatcherCommand.{h,cc}: Added. This command creates
TrackerInitCommand periodicaly(TorrentMan::minInterval).
* src/TorrentMan.cc: Remove downloadedSize == 0 check from
save().
Instead, added a check for whether setup method has executed
successfully.
* src/TorrentMan.h: Added member vaiable setupComplete. Updated
DEFAULT_ANNOUNCE_INTERVAL and DEFAULT_ANNOUNCE_MIN_INTERVAL to
300.
* src/Makefile.am: Updated.
* src/messageDigest.h: Added. This is a macro calculating SHA1
digest
using whether OpenSSL or gcrypt, depending on the result of
configure
script.
* src/ShaVisitor.{h,cc}: Removed direct dependency on OpenSSL by
using
messageDigest.h.
* src/TorrentAutoSaveCommand.h: Removed unused variable cuid.
* src/PeerListenCommand.cc: Added log about port binded
successfully.
Fixed memory leak.
* src/main.cc: Added gnutls support. Replaced LIB_SSL with
ENABLE_BITTORRENT where they are not related to OpenSSL but
BitTorrent.
Removed instantiation of TrackerInitCommand. Instead,
TrackerWatcherCommand is instantiated and pushed to the command
queue.
* src/InitiateConnectionCommandFactory.cc: Replaced HAVE_LIBSSL
with
ENABLE_SSL.
* src/Request.cc: Replaced HAVE_LIBSSL with ENABLE_SSL.
* src/RequestSlotMan.cc:
(deleteCompletedRequestSlot)
If a piece is already acquired by another command, delete the
request
slots for the piece.
* src/TrackerUpdateCommand.cc:
(execute)
Changed log level of MSG_TRACKER_WARNING_MESSAGE from info to
warn.
Added a check whether peer list is null.
Fixed the bug that causes sending completed event to the tracker
several times.
* src/TrackerInitCommand.cc:
(execute)
Fixed the bug that causes sending completed event to the tracker
several times.
* src/AbstractDiskWriter.{h,cc}: Removed direct dependency on
OpenSSL
by using messageDigest.h.
2006-03-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* PeerConnection.cc: Replaced log message "keep-alive" with
"keep alive".
* PeerInteractionCommand.{h,cc}: Close connection if peer is
choking
localhost long time.
* TorrentMan.cc: When adding new peer with duplicate = true, if
the
number of peer list is equal to or grater than MAX_PEER_LIST,
delete
at most 100 failure entry from the list. If with duplicate =
false,
MAX_PEER_LIST is not checked.
* PeerListenCommand.cc: Fixed the argument order of log message.
2006-03-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* Logger.h: Moved enum LEVEL from SimpleLogger.h to here.
Added warn().
* SimpleLogger.h: Moved enum LEVEL to Logger.h.
Implemented warn().
Defined 2 macros(WRITE_LOG, WRITE_LOG_EX) to avoid duplicated
code.
2006-03-27 14:47:26 +00:00
|
|
|
4. Dependency
|
|
|
|
-------------
|
2006-04-06 12:52:16 +00:00
|
|
|
In order to enable HTTPS support, you need GNU TLS or OpenSSL.
|
|
|
|
In order to enable BitTorrent support, you need GNU TLS+libgcrypt or OpenSSL.
|
2006-07-04 11:44:15 +00:00
|
|
|
In order to enable Metalink support, you need libxml2. Optionally GNU TLS+
|
|
|
|
libgcrypt or OpenSSL are required for checksum checking support(MD5, SHA1).
|
2006-03-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* configure.in: Added gnutls support. Added several CPP macros.
* m4/openssl.m4: Added.
* src/SocketCore.{h,cc}: Drop const quarifier from writeData(),
readData(), peekData(). Added gnutls support.
* src/HttpDownloadCommand.cc: Removed SleepCommand.h
* src/TrackerWatcherCommand.{h,cc}: Added. This command creates
TrackerInitCommand periodicaly(TorrentMan::minInterval).
* src/TorrentMan.cc: Remove downloadedSize == 0 check from
save().
Instead, added a check for whether setup method has executed
successfully.
* src/TorrentMan.h: Added member vaiable setupComplete. Updated
DEFAULT_ANNOUNCE_INTERVAL and DEFAULT_ANNOUNCE_MIN_INTERVAL to
300.
* src/Makefile.am: Updated.
* src/messageDigest.h: Added. This is a macro calculating SHA1
digest
using whether OpenSSL or gcrypt, depending on the result of
configure
script.
* src/ShaVisitor.{h,cc}: Removed direct dependency on OpenSSL by
using
messageDigest.h.
* src/TorrentAutoSaveCommand.h: Removed unused variable cuid.
* src/PeerListenCommand.cc: Added log about port binded
successfully.
Fixed memory leak.
* src/main.cc: Added gnutls support. Replaced LIB_SSL with
ENABLE_BITTORRENT where they are not related to OpenSSL but
BitTorrent.
Removed instantiation of TrackerInitCommand. Instead,
TrackerWatcherCommand is instantiated and pushed to the command
queue.
* src/InitiateConnectionCommandFactory.cc: Replaced HAVE_LIBSSL
with
ENABLE_SSL.
* src/Request.cc: Replaced HAVE_LIBSSL with ENABLE_SSL.
* src/RequestSlotMan.cc:
(deleteCompletedRequestSlot)
If a piece is already acquired by another command, delete the
request
slots for the piece.
* src/TrackerUpdateCommand.cc:
(execute)
Changed log level of MSG_TRACKER_WARNING_MESSAGE from info to
warn.
Added a check whether peer list is null.
Fixed the bug that causes sending completed event to the tracker
several times.
* src/TrackerInitCommand.cc:
(execute)
Fixed the bug that causes sending completed event to the tracker
several times.
* src/AbstractDiskWriter.{h,cc}: Removed direct dependency on
OpenSSL
by using messageDigest.h.
2006-03-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* PeerConnection.cc: Replaced log message "keep-alive" with
"keep alive".
* PeerInteractionCommand.{h,cc}: Close connection if peer is
choking
localhost long time.
* TorrentMan.cc: When adding new peer with duplicate = true, if
the
number of peer list is equal to or grater than MAX_PEER_LIST,
delete
at most 100 failure entry from the list. If with duplicate =
false,
MAX_PEER_LIST is not checked.
* PeerListenCommand.cc: Fixed the argument order of log message.
2006-03-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* Logger.h: Moved enum LEVEL from SimpleLogger.h to here.
Added warn().
* SimpleLogger.h: Moved enum LEVEL to Logger.h.
Implemented warn().
Defined 2 macros(WRITE_LOG, WRITE_LOG_EX) to avoid duplicated
code.
2006-03-27 14:47:26 +00:00
|
|
|
|
2006-04-06 12:52:16 +00:00
|
|
|
GNU TLS has precedence over OpenSSL if both libraries are installed.
|
2006-04-01 15:00:43 +00:00
|
|
|
If you prefer OpenSSL, run configure with "--without-gnutls".
|
2006-03-21 15:21:11 +00:00
|
|
|
|
2006-07-04 11:44:15 +00:00
|
|
|
You can disable BitTorrent, Metalink support by providing --disable-bittorrent,
|
|
|
|
--disable-metalink respectively to configure script.
|
|
|
|
|
2006-08-21 14:36:20 +00:00
|
|
|
In order to enable async DNS support, you need c-ares or ares.
|
|
|
|
c-ares: http://daniel.haxx.se/projects/c-ares/
|
|
|
|
ares: ftp://athena-dist.mit.edu/pub/ATHENA/ares
|
2006-08-14 15:19:11 +00:00
|
|
|
|
2006-03-21 15:21:11 +00:00
|
|
|
5. BitTorrrent
|
|
|
|
--------------
|
|
|
|
The filename of the downloaded file is determined as follows:
|
|
|
|
|
|
|
|
single-file mode:
|
|
|
|
If "name" key is present in .torrent file, filename is the value of "name"
|
|
|
|
key. Otherwise, filename is the basename of .torrent file appended by
|
|
|
|
".file". For example, .torrent file is "test.torrrent", then filename 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.
|
|
|
|
|
2006-04-18 17:06:17 +00:00
|
|
|
In the default behavior, before download starts, complete directory structure
|
|
|
|
is created if needed. Then aria2 opens all files mentioned in .torrent file,
|
|
|
|
directly writes to and reads from these files.
|
|
|
|
NOTE: Even in selective download, all files are opened.
|
|
|
|
|
|
|
|
If "--direct-file-mapping" option set to be false, aria2 creates temporary
|
|
|
|
file in the store directory. The length of this file is the sum of length of
|
|
|
|
the files in .torrent file, so at least 2 times more disk space than the file
|
|
|
|
size itself is required. Writing and reading is done against this file.
|
|
|
|
After download completes, aria2 creates complete directory structure if needed,
|
|
|
|
and copies whole file or a part of it to the destination.
|
2006-03-24 11:59:18 +00:00
|
|
|
|
2006-03-21 16:07:22 +00:00
|
|
|
Note:
|
|
|
|
* -o option is used to change the filename of downloaded .torrent file.
|
|
|
|
* This version only supports compact peers list format.
|
|
|
|
* The ports aria2c uses are 6881-6999.
|
2006-03-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* configure.in: Added gnutls support. Added several CPP macros.
* m4/openssl.m4: Added.
* src/SocketCore.{h,cc}: Drop const quarifier from writeData(),
readData(), peekData(). Added gnutls support.
* src/HttpDownloadCommand.cc: Removed SleepCommand.h
* src/TrackerWatcherCommand.{h,cc}: Added. This command creates
TrackerInitCommand periodicaly(TorrentMan::minInterval).
* src/TorrentMan.cc: Remove downloadedSize == 0 check from
save().
Instead, added a check for whether setup method has executed
successfully.
* src/TorrentMan.h: Added member vaiable setupComplete. Updated
DEFAULT_ANNOUNCE_INTERVAL and DEFAULT_ANNOUNCE_MIN_INTERVAL to
300.
* src/Makefile.am: Updated.
* src/messageDigest.h: Added. This is a macro calculating SHA1
digest
using whether OpenSSL or gcrypt, depending on the result of
configure
script.
* src/ShaVisitor.{h,cc}: Removed direct dependency on OpenSSL by
using
messageDigest.h.
* src/TorrentAutoSaveCommand.h: Removed unused variable cuid.
* src/PeerListenCommand.cc: Added log about port binded
successfully.
Fixed memory leak.
* src/main.cc: Added gnutls support. Replaced LIB_SSL with
ENABLE_BITTORRENT where they are not related to OpenSSL but
BitTorrent.
Removed instantiation of TrackerInitCommand. Instead,
TrackerWatcherCommand is instantiated and pushed to the command
queue.
* src/InitiateConnectionCommandFactory.cc: Replaced HAVE_LIBSSL
with
ENABLE_SSL.
* src/Request.cc: Replaced HAVE_LIBSSL with ENABLE_SSL.
* src/RequestSlotMan.cc:
(deleteCompletedRequestSlot)
If a piece is already acquired by another command, delete the
request
slots for the piece.
* src/TrackerUpdateCommand.cc:
(execute)
Changed log level of MSG_TRACKER_WARNING_MESSAGE from info to
warn.
Added a check whether peer list is null.
Fixed the bug that causes sending completed event to the tracker
several times.
* src/TrackerInitCommand.cc:
(execute)
Fixed the bug that causes sending completed event to the tracker
several times.
* src/AbstractDiskWriter.{h,cc}: Removed direct dependency on
OpenSSL
by using messageDigest.h.
2006-03-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* PeerConnection.cc: Replaced log message "keep-alive" with
"keep alive".
* PeerInteractionCommand.{h,cc}: Close connection if peer is
choking
localhost long time.
* TorrentMan.cc: When adding new peer with duplicate = true, if
the
number of peer list is equal to or grater than MAX_PEER_LIST,
delete
at most 100 failure entry from the list. If with duplicate =
false,
MAX_PEER_LIST is not checked.
* PeerListenCommand.cc: Fixed the argument order of log message.
2006-03-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* Logger.h: Moved enum LEVEL from SimpleLogger.h to here.
Added warn().
* SimpleLogger.h: Moved enum LEVEL to Logger.h.
Implemented warn().
Defined 2 macros(WRITE_LOG, WRITE_LOG_EX) to avoid duplicated
code.
2006-03-27 14:47:26 +00:00
|
|
|
* The maximum number of peers is 55.
|
2007-01-28 14:18:35 +00:00
|
|
|
* As of release 0.10.0, aria2 stops sending request message after selective
|
|
|
|
download completes,
|
2006-07-04 11:44:15 +00:00
|
|
|
|
|
|
|
6. Metalink
|
|
|
|
-----------
|
2006-08-07 16:47:52 +00:00
|
|
|
The current implementation supports HTTP/FTP/BitTorrent.
|
|
|
|
BitTorrent always has precedence over HTTP/FTP.
|
|
|
|
The other P2P protocols are ignored.
|
2006-07-04 11:44:15 +00:00
|
|
|
|
|
|
|
For checksum checking, both MD5 and SHA1 are supported. If both values are
|
|
|
|
provided, then aria2 uses SHA1. If checksum checking is failed, aria2 doesn't
|
|
|
|
retry the download and just exits with non-zero return code.
|
|
|
|
|
|
|
|
The supported user preferences are version, language and os.
|
2007-01-28 14:18:35 +00:00
|
|
|
|
|
|
|
If chunk checksums are provided in Metalink file, aria2 automatically validate
|
|
|
|
a chunk of file while downloading it. This behavior can be turned off by
|
|
|
|
a command-line option.
|