119 lines
4.8 KiB
Plaintext
119 lines
4.8 KiB
Plaintext
# _ _ ____ ____
|
|
# / \ _ __(_) __ _|___ \ | _ \ _ __ ___
|
|
# / _ \ | '__| |/ _` | __) | | |_) | '__/ _ \
|
|
# / ___ \| | | | (_| |/ __/ | __/| | | (_) |
|
|
# /_/ \_\_| |_|\__,_|_____| |_| |_| \___/
|
|
#
|
|
# https://github.com/P3TERX/Docker-Aria2-Pro
|
|
#
|
|
# Copyright (c) 2020 P3TERX <https://p3terx.com>
|
|
#
|
|
# This is free software, licensed under the MIT License.
|
|
# See /LICENSE for more information.
|
|
|
|
Green_font_prefix="\033[32m"
|
|
Red_font_prefix="\033[31m"
|
|
Green_background_prefix="\033[42;37m"
|
|
Red_background_prefix="\033[41;37m"
|
|
Font_color_suffix="\033[0m"
|
|
INFO="[${Green_font_prefix}INFO${Font_color_suffix}]"
|
|
ERROR="[${Red_font_prefix}ERROR${Font_color_suffix}]"
|
|
WARN="[${Yellow_font_prefix}WARN${Font_color_suffix}]"
|
|
DOWNLOAD_DIR="/downloads"
|
|
ARIA2_CONF_DIR="/config"
|
|
ARIA2_CONF="${ARIA2_CONF_DIR}/aria2.conf"
|
|
SCRIPT_CONF="${ARIA2_CONF_DIR}/script.conf"
|
|
SCRIPT_DIR="${ARIA2_CONF_DIR}/script"
|
|
CURL_OPTIONS="-fsSL --connect-timeout 3 --max-time 3"
|
|
PROFILE_URL1="https://p3terx.github.io/aria2.conf"
|
|
PROFILE_URL2="https://aria2c.now.sh"
|
|
PROFILE_URL3="https://cdn.jsdelivr.net/gh/P3TERX/aria2.conf"
|
|
|
|
FILE_ALLOCATION_SET() {
|
|
TMP_FILE="/downloads/P3TERX.COM"
|
|
if fallocate -l 5G ${TMP_FILE}; then
|
|
FILE_ALLOCATION=falloc
|
|
else
|
|
FILE_ALLOCATION=none
|
|
fi
|
|
rm -f ${TMP_FILE}
|
|
sed -i "s@^\(file-allocation=\).*@\1${FILE_ALLOCATION}@" "${ARIA2_CONF}"
|
|
}
|
|
|
|
CONVERSION_ARIA2_CONF() {
|
|
sed -i "s@^\(rpc-listen-port=\).*@\1${RPC_PORT:-6800}@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(listen-port=\).*@\1${LISTEN_PORT:-6888}@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(dht-listen-port=\).*@\1${LISTEN_PORT:-6888}@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(dir=\).*@\1/downloads@" "${ARIA2_CONF}"
|
|
sed -i "s@/root/.aria2@${ARIA2_CONF_DIR}@" "${ARIA2_CONF}"
|
|
sed -i "s@^#\(retry-on-.*=\).*@\1true@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(max-connection-per-server=\).*@\1128@" "${ARIA2_CONF}"
|
|
sed -i "/^on-download-stop=/d" "${ARIA2_CONF}"
|
|
sed -i "/^on-download-complete=/d" "${ARIA2_CONF}"
|
|
|
|
# Custom settings from user
|
|
sed -i "s@^\(continue=\).*@\1false@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(always-resume=\).*@\1false@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(max-concurrent-downloads=\).*@\1500@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(enable-dht=\).*@\1false@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(enable-dht6=\).*@\1false@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(bt-enable-lpd=\).*@\1true@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(enable-peer-exchange=\).*@\1false@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(max-overall-upload-limit=\).*@\12M@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(seed-time=\).*@\11@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(user-agent=\).*@\1Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(peer-id-prefix=\).*@\1-DE13F0-@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(summary-interval=\).*@\11@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(show-console-readout=\).*@\1false@" "${ARIA2_CONF}"
|
|
sed -i "s@^\(console-log-level=\).*@\1notice@" "${ARIA2_CONF}"
|
|
|
|
# Add settings not present in default config
|
|
echo "" >>"${ARIA2_CONF}"
|
|
echo "# Custom settings added" >>"${ARIA2_CONF}"
|
|
echo "disable-metalink=true" >>"${ARIA2_CONF}"
|
|
echo "follow-torrent=false" >>"${ARIA2_CONF}"
|
|
echo "retry-on-400=false" >>"${ARIA2_CONF}"
|
|
echo "retry-on-403=false" >>"${ARIA2_CONF}"
|
|
echo "retry-on-406=false" >>"${ARIA2_CONF}"
|
|
echo "retry-on-unknown=true" >>"${ARIA2_CONF}"
|
|
echo "rpc-listen-all=true" >>"${ARIA2_CONF}"
|
|
|
|
[[ $TZ != "Asia/Shanghai" ]] && sed -i '11,$s/#.*//;/^$/d' "${ARIA2_CONF}"
|
|
FILE_ALLOCATION_SET
|
|
}
|
|
|
|
CONVERSION_SCRIPT_CONF() {
|
|
sed -i "s@\(upload-log=\).*@\1${ARIA2_CONF_DIR}/upload.log@" "${SCRIPT_CONF}"
|
|
sed -i "s@\(move-log=\).*@\1${ARIA2_CONF_DIR}/move.log@" "${SCRIPT_CONF}"
|
|
sed -i "s@^\(dest-dir=\).*@\1${DOWNLOAD_DIR}/completed@" "${SCRIPT_CONF}"
|
|
}
|
|
|
|
CONVERSION_CORE() {
|
|
sed -i "s@\(ARIA2_CONF_DIR=\"\).*@\1${ARIA2_CONF_DIR}\"@" "${SCRIPT_DIR}/core"
|
|
}
|
|
|
|
DOWNLOAD_PROFILE() {
|
|
for PROFILE in ${PROFILES}; do
|
|
[[ ${PROFILE} = *.sh || ${PROFILE} = core ]] && cd "${SCRIPT_DIR}" || cd "${ARIA2_CONF_DIR}"
|
|
while [[ ! -f ${PROFILE} ]]; do
|
|
rm -rf ${PROFILE}
|
|
echo
|
|
echo -e "${INFO} Downloading '${PROFILE}' ..."
|
|
curl -O ${CURL_OPTIONS} ${PROFILE_URL1}/${PROFILE} ||
|
|
curl -O ${CURL_OPTIONS} ${PROFILE_URL2}/${PROFILE} ||
|
|
curl -O ${CURL_OPTIONS} ${PROFILE_URL3}/${PROFILE}
|
|
[[ -s ${PROFILE} ]] && {
|
|
[[ "${PROFILE}" = "aria2.conf" ]] && CONVERSION_ARIA2_CONF
|
|
[[ "${PROFILE}" = "script.conf" ]] && CONVERSION_SCRIPT_CONF
|
|
[[ "${PROFILE}" = "core" ]] && CONVERSION_CORE
|
|
echo
|
|
echo -e "${INFO} '${PROFILE}' download completed !"
|
|
} || {
|
|
echo
|
|
echo -e "${ERROR} '${PROFILE}' download error, retry ..."
|
|
sleep 3
|
|
}
|
|
done
|
|
done
|
|
}
|