summaryrefslogtreecommitdiff
path: root/net-misc/aria2
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/aria2')
-rw-r--r--net-misc/aria2/Manifest2
-rw-r--r--net-misc/aria2/aria2-1.34.0-r1.ebuild155
-rw-r--r--net-misc/aria2/files/aria2-1.34.0-mask-headers.patch46
3 files changed, 203 insertions, 0 deletions
diff --git a/net-misc/aria2/Manifest b/net-misc/aria2/Manifest
index ef61941075c5..5734e8f6a2b5 100644
--- a/net-misc/aria2/Manifest
+++ b/net-misc/aria2/Manifest
@@ -1,4 +1,6 @@
AUX aria2-1.34.0-make_unique.patch 1403 BLAKE2B 115ba6241c92d622e49a7059aabec6925b7c8a1a0ef1ccd1a17f812d6289b2aa62a0cac5e12daeff442124a8eae7ceaafcaa9ea6420873d1fef060ae4263e3a0 SHA512 f49ae23e698acbc13c4455efa6edff4fb7f467b94711ed10ad34e8898d96985f401295d5402d66a410ad8e946a39d586f6d082f5393884963ddaf8fa10601af0
+AUX aria2-1.34.0-mask-headers.patch 1972 BLAKE2B 8efec9b9beeee5c763db29287931869cd69fde9883a7fab1f5f7fe48948ee62ef25df10fe855230fd082ce6a442f3eb00da8bf16b1f443573140868656f21969 SHA512 e81d6cf69652b4a2adb67a13434d3e37f1c69ce2a99a8d4b12f3e056c6c530218d6593aaeb1ca8b2691e4f28a0d53b29319d067c4f89eb0e4b2e8368f1c38319
DIST aria2-1.34.0.tar.xz 1525908 BLAKE2B 479145af229f5fe864e54c511197bedb306199dbda608416aa295930a8392c7a118993b5a1634db20b380ab448cc8a397a351b6b64560ca263a0818d47a1ae64 SHA512 80bc43e242c06acc95030021cb347b4ec230729f3d7e512ca1932941b34ef95c312a34007a226869e5d720839a400e66cdb072ccab5d42228d8cf3d828723dcc
+EBUILD aria2-1.34.0-r1.ebuild 4420 BLAKE2B 9863ef347931ea57fc9286961d8baecd19ac7b0c51daf3bdad20c755f256dbc6162fde58ea75712cddd06822545e339fcffefac6ce01b5d0648a3ceeda49ff07 SHA512 658133f76ad988ed3cd1e247efd17b26f719c6a927e15958dac62b506e472447ac8ad0756c54902b2c6d532089198bf47efe5839e1b7db4d35cee716d8ae46a2
EBUILD aria2-1.34.0.ebuild 4322 BLAKE2B 8348642130cd7dc2707a417a90385ee4c3c292a6375acd89f37aa698c6d146982316c74d8286ad5eb715fb9d0330f60ba2f4ae4c59d6bc7a768750de9bbac192 SHA512 cffd85573414498aa96533c4b04d033330dfd5b573ab60abebb8ff93d141c5f715e9d6083ef5f888c3581a188d076b7401a06207f9d023766e321833cefed9f2
MISC metadata.xml 1195 BLAKE2B 393ba5f1d8bc975cbf2a7f4a7deef2929e5f8f3220895628535d5c9e78bb154c2b41a11628d4bfc30475936051c8b6975d6e1146dd4af612e10307572e6c361f SHA512 54ffe27c3c623befb40e1b66df8b4a6cfe9bc1101f65d6641ddc27de686cc0df600e72650f92c89402fdc30f535462ed1f0a6561967771a8e5c0d648890a9208
diff --git a/net-misc/aria2/aria2-1.34.0-r1.ebuild b/net-misc/aria2/aria2-1.34.0-r1.ebuild
new file mode 100644
index 000000000000..1522945364e2
--- /dev/null
+++ b/net-misc/aria2/aria2-1.34.0-r1.ebuild
@@ -0,0 +1,155 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit bash-completion-r1
+
+DESCRIPTION="A download utility with segmented downloading with BitTorrent support"
+HOMEPAGE="https://aria2.github.io/"
+SRC_URI="https://github.com/aria2/${PN}/releases/download/release-${PV}/${P}.tar.xz"
+
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux"
+SLOT="0"
+IUSE="adns bittorrent +gnutls jemalloc libuv +libxml2 metalink +nettle nls sqlite scripts ssh ssl tcmalloc test xmlrpc"
+
+CDEPEND="sys-libs/zlib:0=
+ ssl? (
+ app-misc/ca-certificates
+ gnutls? ( >=net-libs/gnutls-1.2.9:0= )
+ !gnutls? ( dev-libs/openssl:0= ) )
+ adns? ( >=net-dns/c-ares-1.5.0:0= )
+ bittorrent? (
+ ssl? (
+ gnutls? (
+ nettle? ( >=dev-libs/nettle-2.4:0=[gmp] >=dev-libs/gmp-6:0= )
+ !nettle? ( >=dev-libs/libgcrypt-1.2.2:0= ) ) )
+ !ssl? (
+ nettle? ( >=dev-libs/nettle-2.4:0=[gmp] >=dev-libs/gmp-6:0= )
+ !nettle? ( >=dev-libs/libgcrypt-1.2.2:0= ) ) )
+ jemalloc? ( dev-libs/jemalloc )
+ libuv? ( >=dev-libs/libuv-1.13:0= )
+ metalink? (
+ libxml2? ( >=dev-libs/libxml2-2.6.26:2= )
+ !libxml2? ( dev-libs/expat:0= ) )
+ sqlite? ( dev-db/sqlite:3= )
+ ssh? ( net-libs/libssh2:= )
+ tcmalloc? ( dev-util/google-perftools )
+ xmlrpc? (
+ libxml2? ( >=dev-libs/libxml2-2.6.26:2= )
+ !libxml2? ( dev-libs/expat:0= ) )"
+
+DEPEND="${CDEPEND}
+ app-arch/xz-utils
+ virtual/pkgconfig
+ nls? ( sys-devel/gettext )
+ test? ( >=dev-util/cppunit-1.12.0:0 )"
+RDEPEND="${CDEPEND}
+ nls? ( virtual/libiconv virtual/libintl )
+ scripts? ( dev-lang/ruby )"
+
+# xmlrpc has no explicit switch, it's turned out by any XML library
+# so metalink implicitly forces it on
+REQUIRED_USE="?? ( jemalloc tcmalloc )
+ metalink? ( xmlrpc )"
+RESTRICT="!test? ( test )"
+
+pkg_setup() {
+ if use scripts && ! use xmlrpc; then
+ ewarn "Please note that you may need to enable USE=xmlrpc to run the aria2rpc"
+ ewarn "and aria2mon scripts against the local aria2."
+ fi
+}
+
+src_prepare() {
+ eapply "${FILESDIR}"/${P}-make_unique.patch
+ # https://bugs.gentoo.org/674622 (CVE-2019-3500)
+ eapply "${FILESDIR}"/${P}-mask-headers.patch
+ default
+ sed -i -e "s|/tmp|${T}|" test/*.cc test/*.txt || die "sed failed"
+}
+
+src_configure() {
+ local myconf=(
+ # threads, epoll: check for best portability
+
+ # do not try to compile and run a test LIBXML program
+ --disable-xmltest
+ # enable the shared library
+ --enable-libaria2
+ # zlib should always be available anyway
+ --with-libz
+ --with-ca-bundle="${EPREFIX}/etc/ssl/certs/ca-certificates.crt"
+
+ # optional features
+ $(use_enable bittorrent)
+ $(use_enable metalink)
+ $(use_enable nls)
+ $(use_with adns libcares)
+ $(use_with jemalloc)
+ $(use_with libuv)
+ $(use_with sqlite sqlite3)
+ $(use_with ssh libssh2)
+ $(use_with tcmalloc)
+ )
+
+ # SSL := gnutls / openssl
+ # USE=ssl
+ # + USE=gnutls -> gnutls
+ # + USE=-gnutls -> openssl
+
+ if use ssl; then
+ myconf+=( $(use_with gnutls) $(use_with !gnutls openssl) )
+ else
+ myconf+=( --without-gnutls --without-openssl )
+ fi
+
+ # message-digest := nettle / gcrypt / openssl
+ # bignum := nettle+gmp / gcrypt / openssl
+ # bittorrent := message-digest + bignum
+ # USE=bittorrent
+ # + USE=(ssl -gnutls) -> openssl
+ # + USE=nettle -> nettle+gmp
+ # + USE=-nettle -> gcrypt
+
+ if use !bittorrent || use ssl && use !gnutls; then
+ myconf+=( --without-libgcrypt --without-libnettle --without-libgmp )
+ else
+ myconf+=( $(use_with !nettle libgcrypt)
+ $(use_with nettle libnettle) $(use_with nettle libgmp) )
+ fi
+
+ # metalink+xmlrpc := libxml2 / expat
+ # USE=(metalink || xmlrpc)
+ # + USE=libxml2 -> libxml2
+ # + USE=-libxml2 -> expat
+
+ if use metalink || use xmlrpc; then
+ myconf+=( $(use_with !libxml2 libexpat) $(use_with libxml2) )
+ else
+ myconf+=( --without-libexpat --without-libxml2 )
+ fi
+
+ # Note:
+ # - always enable gzip/http compression since zlib should always be available anyway
+ # - always enable epoll since we can assume kernel 2.6.x
+ # - other options for threads: solaris, pth, win32
+ econf "${myconf[@]}"
+}
+
+src_install() {
+ default
+ rm -rf "${D}"/usr/share/doc/aria2 \
+ "${D}"/usr/share/doc/${PF}/README{,.html}
+
+ dobashcomp doc/bash_completion/aria2c
+ use scripts && dobin doc/xmlrpc/aria2{mon,rpc}
+}
+
+pkg_postinst() {
+ if use xmlrpc; then
+ elog "If you would like to use the additional aria2mon and aria2rpc tools,"
+ elog "you need to have \033[1mdev-lang/ruby\033[0m installed."
+ fi
+}
diff --git a/net-misc/aria2/files/aria2-1.34.0-mask-headers.patch b/net-misc/aria2/files/aria2-1.34.0-mask-headers.patch
new file mode 100644
index 000000000000..694681d88859
--- /dev/null
+++ b/net-misc/aria2/files/aria2-1.34.0-mask-headers.patch
@@ -0,0 +1,46 @@
+From 37368130ca7de5491a75fd18a20c5c5cc641824a Mon Sep 17 00:00:00 2001
+From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
+Date: Sat, 5 Jan 2019 09:32:40 +0900
+Subject: [PATCH] Mask headers
+
+---
+ src/HttpConnection.cc | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/src/HttpConnection.cc b/src/HttpConnection.cc
+index 77cb9d27a..be5b97723 100644
+--- a/src/HttpConnection.cc
++++ b/src/HttpConnection.cc
+@@ -102,11 +102,17 @@ std::string HttpConnection::eraseConfidentialInfo(const std::string& request)
+ std::string result;
+ std::string line;
+ while (getline(istr, line)) {
+- if (util::startsWith(line, "Authorization: Basic")) {
+- result += "Authorization: Basic ********\n";
++ if (util::istartsWith(line, "Authorization: ")) {
++ result += "Authorization: <snip>\n";
+ }
+- else if (util::startsWith(line, "Proxy-Authorization: Basic")) {
+- result += "Proxy-Authorization: Basic ********\n";
++ else if (util::istartsWith(line, "Proxy-Authorization: ")) {
++ result += "Proxy-Authorization: <snip>\n";
++ }
++ else if (util::istartsWith(line, "Cookie: ")) {
++ result += "Cookie: <snip>\n";
++ }
++ else if (util::istartsWith(line, "Set-Cookie: ")) {
++ result += "Set-Cookie: <snip>\n";
+ }
+ else {
+ result += line;
+@@ -154,8 +160,8 @@ std::unique_ptr<HttpResponse> HttpConnection::receiveResponse()
+ const auto& proc = outstandingHttpRequests_.front()->getHttpHeaderProcessor();
+ if (proc->parse(socketRecvBuffer_->getBuffer(),
+ socketRecvBuffer_->getBufferLength())) {
+- A2_LOG_INFO(
+- fmt(MSG_RECEIVE_RESPONSE, cuid_, proc->getHeaderString().c_str()));
++ A2_LOG_INFO(fmt(MSG_RECEIVE_RESPONSE, cuid_,
++ eraseConfidentialInfo(proc->getHeaderString()).c_str()));
+ auto result = proc->getResult();
+ if (result->getStatusCode() / 100 == 1) {
+ socketRecvBuffer_->drain(proc->getLastBytesProcessed());