Skip to content

Instantly share code, notes, and snippets.

@mogeko
Last active February 4, 2023 16:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mogeko/64a20bc441cb43a7b26e416270c10168 to your computer and use it in GitHub Desktop.
Save mogeko/64a20bc441cb43a7b26e416270c10168 to your computer and use it in GitHub Desktop.
Aria2 config file
#=================================================================
# https://gist.github.com/Mogeko/64a20bc441cb43a7b26e416270c10168
# https://github.com/P3TERX/aria2.conf (upstream)
# File name:aria2.conf
# Description: Aria2 config file
# Lisence: MIT
# Author: Mogeko, P3TERX
# Blog: https://p3terx.com for P3TERX
# https://mogeko.me for Mogeko
#=================================================================
## RPC设置 ##
# 启用RPC, 默认:false
#enable-rpc=true
# 接受所有远程请求, 默认:false
rpc-allow-origin-all=true
# 允许外部访问, 默认:false
rpc-listen-all=true
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置 RPC 授权密钥
rpc-secret=MOGEKO
# 是否启用 RPC 服务的 SSL/TLS 加密
# 启用加密后 RPC 服务必须使用 https 或者 wss 协议连接
# 一般不建议开启,建议使用 web server 反代,比如 Nginx、Caddy ,灵活性更强。
rpc-secure=false
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件(.pem/.crt)
#rpc-certificate=/config/xxx.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件(.key)
#rpc-private-key=/config/xxx.key
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
## 文件保存设置 ##
# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=$HOME/Downloads/.aria2_tmp
# 启用磁盘缓存, 0为禁用缓存,默认:16M
# 本地路由器或 NAS 建议在有足够的内存空闲情况下设置为适当的大小,以减少磁盘 I/O 延长硬盘寿命。
disk-cache=64M
# 文件预分配方式,默认:prealloc
# 机械硬盘建议设置为 falloc ,可减少磁头跳动延长寿命。
# 固态硬盘建议设置为 none ,可减少数据写入量延长寿命。
# 若无法下载,提示 fallocate failed.cause:Operation not supported 则说明不支持,请设置为 none
file-allocation=falloc
# 断点续传
continue=true
# 获取服务器文件时间,默认:false
remote-time=true
## 进度保存设置 ##
# 从会话文件中读取下载任务
# input-file=$HOME/.aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=$HOME/.aria2/aria2.session
# 定时保存会话时间(秒), 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=1
# 自动保存任务进度时间(秒),0为退出时才保存,默认:60
auto-save-interval=1
# 强制保存会话, 即使任务已经完成, 默认:false
# 开启后会在任务完成后依然保留 .aria2 文件,文件被移除且任务存在的情况下重启后会重新下载。
# 关闭后已完成的任务列表会在重启后清空。
# PT 下载持续做种需求建议开启,防止意外重启后列表被清空。
force-save=false
## 下载连接设置 ##
# 文件未找到重试次数,默认:0
# 重试时同时会记录重试次数,所以也需要设置 --max-tries 这个选项
max-file-not-found=5
# 最大尝试次数,0表示无限,默认:5
max-tries=0
# 重试等待时间(秒), 默认:0
retry-wait=10
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1 (官方原版最大限制为 16)
max-connection-per-server=16
# 单个任务最大线程数, 添加时可指定, 默认:5
split=64
# 最低下载速度限制。当下载速度低于或等于此选项的值时关闭连接(特殊版本会重连),此选项不影响 BT下载。单位 K 或 M ,默认:0
#lowest-speed-limit=1M
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为 15MiB 则使用一个来源下载
min-split-size=4M
# 整体下载速度限制, 运行时可修改, 默认:0
max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
max-download-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true
# 支持GZip,默认:false
http-accept-gzip=true
# URI复用,默认: true
reuse-uri=false
# 禁用 netrc 支持,默认:false
no-netrc=true
# 允许覆盖,当相关控制文件不存在时从头开始重新下载。默认:false
allow-overwrite=false
# 文件自动重命名,此选项仅在HTTP(S)/ FTP下载中有效。新文件名在名称之后扩展名之前加上一个点和一个数字(1..9999)。默认:true
auto-file-renaming=true
# 使用 UTF-8 处理 Content-Disposition ,默认:false
content-disposition-default-utf8=true
# 最低 TLS 版本,可选 TLSv1.1、TLSv1.2、TLSv1.3 默认:TLSv1.2
#min-tls-version=TLSv1.2
## BT/PT下载设置 ##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true,可选:false|mem
follow-torrent=true
# BT监听端口(TCP), 默认:6881-6999
listen-port=51413
# DHT网络监听端口(UDP), 默认:6881-6999
dht-listen-port=51413
# 打开 IPv4 DHT 功能, PT需要禁用, 默认:true
enable-dht=true
# 打开 IPv6 DHT 功能, PT需要禁用,默认:false
# 在没有 IPv6 的环境中不建议开启,否则会导致 DHT 功能异常。
enable-dht6=false
# DHT(IPv4)文件
dht-file-path=$HOME/.aria2/dht.dat
# DHT(IPv6)文件
dht-file-path6=$HOME/.aria2/dht6.dat
# 设置 IPv4 DHT 网络引导节点
dht-entry-point=dht.transmissionbt.com:6881
# 设置 IPv6 DHT 网络引导节点
dht-entry-point6=dht.transmissionbt.com:6881
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 单个种子最大连接数,0为不限制,默认:55
bt-max-peers=0
# 期望下载速度,Aria2会临时提高连接数以提高下载速度,单位K或M。默认:50K
bt-request-peer-speed-limit=10M
# 全局最大上传速度限制, 运行时可修改, 默认:0
max-overall-upload-limit=5M
# 单个任务上传速度限制, 默认:0
max-upload-limit=0
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=1.0
# 最小做种时间(分钟)。此选项设置为0时,将在BT任务下载完成后不进行做种。
seed-time=0
# 做种前检查文件哈希, 默认:true
bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=false
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=false
# 加载已保存的元数据文件,默认:false
bt-load-saved-metadata=true
# 删除未选择文件,默认:false
bt-remove-unselected-file=true
# 保存上传的种子,默认:true
rpc-save-upload-metadata=true
# BT强制加密, 默认: false
# 启用后将拒绝旧的 BT 握手协议并仅使用混淆握手及加密。有一定的防版权投诉与迅雷吸血效果。
# 此选项相当于后面两个选项(bt-require-crypto=true, bt-min-crypto-level=arc4)的快捷开启方式,但不会修改这两个选项的值。
bt-force-encryption=true
# BT加密需求,默认:false
# 启用后拒绝与旧的 BitTorrent 握手协议(\19BitTorrent protocol)建立连接,始终使用混淆处理握手。
#bt-require-crypto=true
# BT最低加密等级,可选:plain(明文),arc4(加密),默认:plain
#bt-min-crypto-level=arc4
# 客户端伪装
user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36 Edg/81.0.416.68
# PT需要保持 user-agent 和 peer-agent 两个参数一致。即注释上面这行,然后取消注释下面的相关选项。
#user-agent=qBittorrent/4.2.5
peer-agent=qBittorrent/4.2.5
peer-id-prefix=-qB4250-
#----------------------------------
#user-agent=Transmission 2.94
#peer-agent=Transmission 2.94
#peer-id-prefix=-TR2940-
#----------------------------------
#user-agent=Deluge 2.0.3
#peer-agent=Deluge 2.0.3
#peer-id-prefix=-DE2030-
#----------------------------------
#user-agent=μTorrent 3.5.5
#peer-agent=μTorrent 3.5.5
#peer-id-prefix=-UT355W-
#----------------------------------
#user-agent=μTorrent Mac 1.8.7
#peer-agent=μTorrent Mac 1.8.7
#peer-id-prefix=-UM1870-
## 执行额外命令 ##
# 下载停止后执行的命令
#on-download-stop=
# 下载完成后执行的命令,此项未定义则执行下载停止后执行的命令(on-download-stop)
on-download-complete=$HOME/.aria2/arrange.sh
# 下载错误后执行的命令,此项未定义则执行下载停止后执行的命令(on-download-stop)
#on-download-error=
# 下载暂停后执行的命令
#on-download-pause=
# 下载开始后执行的命令
#on-download-start=
## 日志设置 ##
# 日志文件保存路径,忽略或设置为空为不保存,默认不保存。
#log=$HOME/.aria2/log/aria2.log
# 日志级别,可选 debug, info, notice, warn, error 。默认 debug
#log-level=warn
# Aria2 一键安装管理脚本 增强版 与 Aria2 Pro (Docker) 使用以下选项设置日志。
# 控制台日志级别,可选 debug, info, notice, warn, error 。默认 notice
console-log-level=notice
# 安静模式,禁止在控制台输出日志,默认:false
quiet=false
## 其它设置 ##
# 以下为非官方原版选项,仅适用于 myfreeer/aria2-build-msys2 和 P3TERX/aria2-builder 项目所构建的版本。
# 在服务器返回 HTTP 400 Bad Request 时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-400=true
# 在服务器返回 HTTP 403 Forbidden 时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-403=true
# 在服务器返回 HTTP 406 Not Acceptable 时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-406=true
# 在服务器返回未知状态码时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-unknown=true
#=================================================================
# https://gist.github.com/Mogeko/64a20bc441cb43a7b26e416270c10168
# https://github.com/P3TERX/aria2.conf (upstream)
# File name:arrange.sh
# Description: Automatically organize files after Aria2 download is complete
# Lisence: MIT
# Author: Mogeko, P3TERX
# Blog: https://p3terx.com for P3TERX
# https://mogeko.me for Mogeko
#=================================================================
PRINTF_LOG=false
DOWNLOAD_PATH="$HOME/Downloads"
RELATIVE_PATH=${3#${DOWNLOAD_PATH}/}
TOP_PATH=${DOWNLOAD_PATH}/${RELATIVE_PATH}
COMPRESSED=("bz2" "gz" "xz" "lzma" "bz2" "rar" "tar" "tbz2" "tgz" "zip" "Z" "7z" "xz")
DOCUMENT=("txt" "chm" "pdf" "equb" "mobi" "azw3" "doc" "docx" "ppt" "pptx" "xls" "xlsx" "rtf" "pages" "key" "numbers" "odt" "odp" "ods")
MUSIC=("mp3" "flac" "aac" "aiff" "wav" "au" "ogg")
VIDEO=("mp4" "m4v" "mov" "avi" "flv" "wmv" "asf" "mpeg" "mpg" "vob" "mkv" "rm" "rmvb" "srt" "ass")
function move {
if [ ! -e $2 ]; then
mkdir -p $2
fi
mv $1 $2
}
function whatType {
for iter in $@; do
[ "${TOP_PATH##*.}"_ = "$iter"_ ] && return $true
done
return $false
}
$PRINTF_LOG && mkdir -p "$HOME/.aria2/log"
$PRINTF_LOG && echo "$(date +"%m/%d %H:%M:%S") [NOTICE] Start organizing files" >> "$HOME/.aria2/log/arrange.log"
if [ "$2" = "0" ]; then
exit 0;
elif [[ -f ${TOP_PATH} && "$2" -eq "1" ]]; then
if whatType ${COMPRESSED[*]}; then
$PRINTF_LOG && echo "File type is compressed file" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "Move ${TOP_PATH}" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "To ${DOWNLOAD_PATH}/Compressed" >> "$HOME/.aria2/log/arrange.log"
move ${TOP_PATH} ${DOWNLOAD_PATH}/Compressed
elif whatType ${DOCUMENT[*]}; then
$PRINTF_LOG && echo "File type is Documents" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "Move ${TOP_PATH}" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "To ${DOWNLOAD_PATH}/Documents" >> "$HOME/.aria2/log/arrange.log"
move ${TOP_PATH} ${DOWNLOAD_PATH}/Documents
elif whatType ${MUSIC[*]}; then
$PRINTF_LOG && echo "File type is Music" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "Move ${TOP_PATH}" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "To ${DOWNLOAD_PATH}/Music" >> "$HOME/.aria2/log/arrange.log"
move ${TOP_PATH} ${DOWNLOAD_PATH}/Music
elif whatType ${VIDEO[*]}; then
$PRINTF_LOG && echo "File type is Videos" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "Move ${TOP_PATH}" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "To ${DOWNLOAD_PATH}/" >> "$HOME/.aria2/log/arrange.log"
move ${TOP_PATH} ${DOWNLOAD_PATH}/Videos
elif [ "${TOP_PATH##*.}"_ = "torrent"_ ]; then
$PRINTF_LOG && echo "File type is Torrents" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "Move ${TOP_PATH}" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "To ${DOWNLOAD_PATH}/Torrents" >> "$HOME/.aria2/log/arrange.log"
move ${TOP_PATH} ${DOWNLOAD_PATH}/Torrents
else
$PRINTF_LOG && echo "Unknown file type" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "Move ${TOP_PATH}" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "To ${DOWNLOAD_PATH}" >> "$HOME/.aria2/log/arrange.log"
mv ${TOP_PATH} ${DOWNLOAD_PATH}
fi
elif [[ -d ${TOP_PATH%/*} && "$2" -ne "1" ]]; then
$PRINTF_LOG && echo "File type is Folder" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "Move ${TOP_PATH%/*}" >> "$HOME/.aria2/log/arrange.log"
$PRINTF_LOG && echo "To ${DOWNLOAD_PATH}" >> "$HOME/.aria2/log/arrange.log"
mv ${TOP_PATH%/*} ${DOWNLOAD_PATH}
fi
#!/bin/bash
#==============================================
# https://github.com/P3TERX/aria2.conf
# File name:tracker.sh
# Description: Get BT trackers and add to Aria2
# Lisence: MIT
# Version: 2.2
# Author: P3TERX
# Blog: https://p3terx.com
#==============================================
RED_FONT_PREFIX="\033[31m"
GREEN_FONT_PREFIX="\033[32m"
YELLOW_FONT_PREFIX="\033[1;33m"
LIGHT_PURPLE_FONT_PREFIX="\033[1;35m"
FONT_COLOR_SUFFIX="\033[0m"
INFO="[${GREEN_FONT_PREFIX}INFO${FONT_COLOR_SUFFIX}]"
ERROR="[${RED_FONT_PREFIX}ERROR${FONT_COLOR_SUFFIX}]"
ARIA2_CONF=${1:-aria2.conf}
# BT tracker is provided by the following project.
# https://github.com/XIU2/TrackersListCollection
# https://github.com/ngosang/trackerslist
# Fallback URLs provided by jsDelivr and Cloudflare Workers
# https://www.jsdelivr.com
# https://workers.cloudflare.com/
GET_TRACKERS() {
echo && echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} Get BT trackers ..."
TRACKER=$(
curl -fsSL https://trackerslist.com/all_aria2.txt ||
curl -fsSL https://cdn.jsdelivr.net/gh/XIU2/TrackersListCollection/all_aria2.txt ||
curl -fsSL https://trackerslist.p3terx.workers.dev/all_aria2.txt ||
{
curl -fsSL https://ngosang.github.io/trackerslist/trackers_all.txt ||
curl -fsSL https://cdn.jsdelivr.net/gh/ngosang/trackerslist/trackers_all.txt ||
curl -fsSL https://ngosang-trackerslist.p3terx.workers.dev/trackers_all.txt
} | awk NF | sed ":a;N;s/\n/,/g;ta"
)
[ -z ${TRACKER} ] && {
echo
echo -e "$(date +"%m/%d %H:%M:%S") ${ERROR} Unable to get trackers, network failure or invalid links." && exit 1
}
}
ECHO_TRACKERS() {
echo -e "
--------------------[TRACKERS]--------------------
${TRACKER}
--------------------[TRACKERS]--------------------
"
}
ADD_TRACKERS() {
echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} Adding BT trackers to Aria2 configuration file ${LIGHT_PURPLE_FONT_PREFIX}${ARIA2_CONF}${FONT_COLOR_SUFFIX} ..." && echo
if [ ! -f ${ARIA2_CONF} ]; then
echo -e "$(date +"%m/%d %H:%M:%S") ${ERROR} '${ARIA2_CONF}' does not exist."
exit 1
else
[ -z $(grep "bt-tracker=" ${ARIA2_CONF}) ] && echo "bt-tracker=" >>${ARIA2_CONF}
sed -i "s@^\(bt-tracker=\).*@\1${TRACKER}@" ${ARIA2_CONF} && echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} BT trackers successfully added to Aria2 configuration file !"
fi
}
ADD_TRACKERS_REMOTE_RPC() {
echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} Adding BT trackers to remote Aria2: ${LIGHT_PURPLE_FONT_PREFIX}${RPC_ADDRESS}${FONT_COLOR_SUFFIX} ..." && echo
RPC_RESULT=$(curl "${RPC_ADDRESS}/jsonrpc" -kfsSd '{"jsonrpc":"2.0","method":"aria2.changeGlobalOption","id":"trackers","params":["token:'${RPC_SECRET}'",{"bt-tracker":"'${TRACKER}'"}]}')
[ $(echo ${RPC_RESULT} | grep OK) ] &&
echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} BT trackers successfully added to remote Aria2 !" ||
echo -e "$(date +"%m/%d %H:%M:%S") ${ERROR} Network failure or Aria2 RPC address is incorrect."
}
ADD_TRACKERS_LOCAL_RPC() {
if [ ! -f ${ARIA2_CONF} ]; then
echo -e "$(date +"%m/%d %H:%M:%S") ${ERROR} '${ARIA2_CONF}' does not exist."
exit 1
else
RPC_PORT=$(grep rpc-listen-port ${ARIA2_CONF} | cut -d= -f2)
RPC_SECRET=$(grep rpc-secret ${ARIA2_CONF} | cut -d= -f2)
[[ ${RPC_PORT} && ${RPC_SECRET} ]] || {
echo -e "$(date +"%m/%d %H:%M:%S") ${ERROR} Aria2 configuration file incomplete."
exit 1
}
RPC_ADDRESS="localhost:${RPC_PORT}"
echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} Adding BT trackers to Aria2 ..." && echo
RPC_RESULT=$(curl "${RPC_ADDRESS}/jsonrpc" -kfsSd '{"jsonrpc":"2.0","method":"aria2.changeGlobalOption","id":"trackers","params":["token:'${RPC_SECRET}'",{"bt-tracker":"'${TRACKER}'"}]}')
[ $(echo ${RPC_RESULT} | grep OK) ] &&
echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} BT trackers successfully added to Aria2 !" ||
echo -e "$(date +"%m/%d %H:%M:%S") ${ERROR} Network failure or Aria2 RPC address is incorrect."
fi
}
[ $(command -v curl) ] || {
echo -e "$(date +"%m/%d %H:%M:%S") ${ERROR} curl is not installed."
exit 1
}
if [ "$1" = "cat" ]; then
GET_TRACKERS
ECHO_TRACKERS
exit 0
elif [ "$1" = "RPC" ]; then
RPC_ADDRESS=$2
RPC_SECRET=$3
GET_TRACKERS
ECHO_TRACKERS
ADD_TRACKERS_REMOTE_RPC
exit 0
elif [ "$2" = "RPC" ]; then
GET_TRACKERS
ECHO_TRACKERS
ADD_TRACKERS
echo
ADD_TRACKERS_LOCAL_RPC
exit 0
else
GET_TRACKERS
ECHO_TRACKERS
ADD_TRACKERS
exit 0
fi
@mogeko
Copy link
Author

mogeko commented May 31, 2020

MIT License

Copyright (c) 2020 Mogeko

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment