Comments (9)
temporary fix:
/etc/init.d/aria2 add BOLD line.
procd_add_jail "$NAME.$section" log
procd_add_jail_mount "/usr/lib" #fix "errorCode=1 OSSL_PROVIDER_load 'legacy' failed"
procd_add_jail_mount "$ca_certificate" "$certificate" "$rpc_certificate" "$rpc_private_key"
procd_add_jail_mount_rw "$dir" "$config_dir" "$log"
procd_close_instance
from aria2.
@ArielHeleneto `#!/bin/sh /etc/rc.common
Copyright (C) 2016-2017 Hsing-wang Liao [email protected]
Licensed to the public under the Apache License 2.0.
START=99 USE_PROCD=1
NAME=aria2 PROG=/usr/bin/aria2c
_info() { logger -p daemon.info -t "$NAME" "$*" }
_err() { logger -p daemon.err -t "$NAME" "$*" }
_make_dir() { local d for d in "$@"; do if [ ! -d "$d" ]; then mkdir -p "$d" 2>/dev/null || return 1 fi done
return 0
}
_create_file() { touch "$@" 2>/dev/null }
_change_owner() { local u="$1"; shift
local d for d in "$@"; do if [ -f "$d" ]; then chown "$u" "$d" 2>/dev/null || return 1 elif [ -d "$d" ]; then chown -R "$u" "$d" 2>/dev/null || return 1 fi done return 0
}
_change_file_mode() { local mod="$1"; shift chmod "$mod" "$@" 2>/dev/null }
_reset_dir_mode() { local d for d in "$@"; do if [ -d "$d" ]; then find "$d" -type d -exec chmod 755 {} ; 2>/dev/null find "$d" -type f -exec chmod 644 {} ; 2>/dev/null fi done }
append_options() { local o; local v for o in "$@"; do v="$(eval echo "$$o")" [ -n "$v" ] && echo "${o//_/-}=$v" >>"$config_file_tmp" done }
append_setting() { local s="$1" [ -n "$s" ] && echo "$s" >>"$config_file_tmp" }
append_header() { local h="$1" [ -n "$h" ] && echo "header="$h"" >>"$config_file_tmp" }
aria2_validate() { uci_load_validate "$NAME" aria2 "$1" "$2" 'enabled:bool:0' 'enable_logging:bool' 'enable_proxy:bool' 'config_dir:string:/var/etc/aria2' 'user:string' 'all_proxy:string' 'all_proxy_passwd:string' 'all_proxy_user:string' 'auto_save_interval:range(0,600)' 'bt_enable_lpd:or("true","false")' 'bt_detach_seed_only:or("true","false")' 'bt_load_saved_metadata:or("true","false")' 'bt_prioritize_piece:string' 'bt_max_open_files:uinteger' 'bt_max_peers:uinteger' 'bt_remove_unselected_file:or("true","false")' 'bt_request_peer_speed_limit:string' 'bt_save_metadata:or("true","false")' 'bt_seed_unverified:or("true","false")' 'bt_stop_timeout:uinteger' 'bt_tracker:list(string)' 'ca_certificate:file' 'certificate:file' 'check_certificate:or("true","false"):true' 'check_integrity:or("true","false")' 'connect_timeout:uinteger' 'dht_listen_port:string' 'dir:string' 'disable_ipv6:or("true","false")' 'disk_cache:string' 'enable_dht:or("true","false"):true' 'enable_dht6:or("true","false")' 'enable_peer_exchange:or("true","false")' 'event_poll:or("epoll","kqueue","port","poll","select")' 'file_allocation:or("none","prealloc","trunc","falloc")' 'follow_torrent:or("true","false","mem")' 'force_save:or("true","false")' 'http_accept_gzip:or("true","false")' 'http_no_cache:or("true","false")' 'listen_port:string' 'log:string' 'log_level:or("debug","info","notice","warn","error")' 'lowest_speed_limit:string' 'max_concurrent_downloads:uinteger' 'max_connection_per_server:uinteger' 'max_download_limit:string' 'max_overall_download_limit:string' 'max_overall_upload_limit:string' 'max_tries:uinteger' 'max_upload_limit:string' 'min_split_size:string' 'pause:or("true","false")' 'pause_metadata:or("true","false")' 'peer_id_prefix:string' 'private_key:file' 'retry_wait:uinteger' 'rpc_auth_method:or("none","user_pass","token")' 'rpc_certificate:file' 'rpc_listen_port:range(1024,65535)' 'rpc_passwd:string' 'rpc_private_key:file' 'rpc_secret:string' 'rpc_secure:or("true","false")' 'rpc_user:string' 'save_session_interval:uinteger' 'seed_ratio:ufloat' 'seed_time:ufloat' 'split:uinteger' 'timeout:uinteger' 'user_agent:string' }
aria2_start() { local section="$1" [ "$2" = "0" ] || { _err "Validation failed."; return 1; }
[ "$enabled" = "1" ] || { _info "Instance \"$section\" disabled."; return 1; } [ -n "$dir" ] || { _err "Please set download dir."; return 1; } [ -d "$dir" ] || { _err "Please create download dir first."; return 1; } config_file="$config_dir/$NAME.conf.$section" config_file_tmp="$config_dir/$NAME.conf.tmp" session_file="$config_dir/$NAME.session.$section" _make_dir "$config_dir" || { _err "Can't create config dir: $config_dir" return 1 } _create_file "$session_file" "$config_file" "$config_file_tmp" || { _err "Can't create files: $session_file, $config_file, $config_file_tmp" return 1 } # create tmp file cat >"$config_file_tmp" <<-EOF # Auto generated file, changes to this file will be lost. EOF append_setting "dir=$dir" append_setting "enable-rpc=true" append_setting "rpc-allow-origin-all=true" append_setting "rpc-listen-all=true" append_setting "quiet=true" append_setting "continue=true" append_setting "input-file=$session_file" append_setting "save-session=$session_file" if [ -z "$enable_logging" ]; then append_options "log" "log_level" elif [ "$enable_logging" = "1" ]; then log=${log:-"/var/log/aria2.log"} local log_dir log_dir="$(dirname "$log")" _make_dir "$log_dir" || { _err "Can't create log dir: $log_dir" return 1 } # create or clear log file echo >"$log" append_setting "log=$log" append_options "log_level" fi if [ -z "$enable_proxy" ] || [ "$enable_proxy" = "1" ]; then append_options "all_proxy" "all_proxy_user" "all_proxy_passwd" fi unset_auth_method() { uci -q batch <<-EOF set $NAME.$section.rpc_auth_method="" commit $NAME EOF } if [ -z "$rpc_auth_method" ]; then if [ -n "$rpc_secret" ]; then append_setting "rpc-secret=$rpc_secret" elif [ -n "$rpc_user" ]; then append_setting "rpc-user=$rpc_user" append_setting "rpc-passwd=$rpc_passwd" else _info "It is recommended to set RPC secret." fi elif [ "$rpc_auth_method" = "token" ]; then if [ -n "$rpc_secret" ]; then append_setting "rpc-secret=$rpc_secret" else unset_auth_method fi elif [ "$rpc_auth_method" = "user_pass" ]; then if [ -n "$rpc_user" ]; then append_setting "rpc-user=$rpc_user" append_setting "rpc-passwd=$rpc_passwd" else _info "Please set RPC user." unset_auth_method fi fi if [ ."$rpc_secure" = ."true" ] && [ -n "$rpc_certificate" ]; then append_setting "rpc-secure=true" append_options "rpc_certificate" "rpc_private_key" fi if [ ."$check_certificate" = ."true" ]; then append_setting "check-certificate=true" append_options "ca_certificate" elif [ ."$check_certificate" = ."false" ]; then append_setting "check-certificate=false" fi if [ ."$enable_dht" = ."true" ]; then dht_file="$config_dir/dht.dat.$section" _create_file "$dht_file" || { _err "Can't create DHT file: $dht_file" return 1 } append_setting "enable-dht=true" append_setting "dht-file-path=$dht_file" fi if [ ."$enable_dht6" = ."true" ] && [ ."$disable_ipv6" != ."true" ]; then dht6_file="$config_dir/dht6.dat.$section" _create_file "$dht6_file" || { _err "Can't create DHT6 file: $dht6_file" return 1 } append_setting "enable-dht6=true" append_setting "dht-file-path6=$dht6_file" fi if [ -n "$bt_tracker" ]; then local bt_tracker_list; local t for t in $bt_tracker; do if [ -z "$bt_tracker_list" ]; then bt_tracker_list="$t" else bt_tracker_list="$bt_tracker_list,$t" fi done append_setting "bt-tracker=$bt_tracker_list" fi append_options "auto_save_interval" "bt_enable_lpd" "bt_max_open_files" "bt_max_peers" \ "bt_remove_unselected_file" "bt_request_peer_speed_limit" "bt_prioritize_piece" \ "bt_stop_timeout" "bt_detach_seed_only" "bt_save_metadata" "bt_load_saved_metadata" \ "bt_seed_unverified" "certificate" "check_integrity" "connect_timeout" "dht_listen_port" \ "disable_ipv6" "disk_cache" "enable_peer_exchange" "event_poll" "file_allocation" \ "follow_torrent" "force_save" "http_accept_gzip" "http_no_cache" "listen_port" \ "lowest_speed_limit" "max_concurrent_downloads" "max_connection_per_server" \ "max_download_limit" "max_overall_download_limit" "max_overall_upload_limit" "max_tries" \ "max_upload_limit" "min_split_size" "pause" "pause_metadata" "peer_id_prefix" "private_key" \ "retry_wait" "rpc_listen_port" "save_session_interval" "seed_ratio" "seed_time" "split" "timeout" \ "user_agent" config_list_foreach "$section" "header" append_header config_list_foreach "$section" "extra_settings" append_setting sed '/^$/d' "$config_file_tmp" >"$config_file" rm -f "$config_file_tmp" _reset_dir_mode "$config_dir" _change_file_mode 600 "$config_file" if [ -n "$user" ]; then if ( user_exists "$user" && _change_owner "$user" "$config_dir" "$log" ); then _info "Aria2 will run with user '$user'." if [ "$user" != "root" ]; then _info "Please make sure user '$user' has write access to download dir: $dir" fi else _info "Setting run user to '$user' failed, default user will be used." user= fi fi procd_open_instance "$NAME.$section" procd_set_param command "$PROG" procd_append_param command --conf-path="$config_file" procd_set_param respawn procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param file "$config_file" [ -n "$user" ] && \ procd_set_param user "$user" procd_add_jail "$NAME.$section" log procd_add_jail_mount "/usr/lib" procd_add_jail_mount "$ca_certificate" "$certificate" "$rpc_certificate" "$rpc_private_key" procd_add_jail_mount_rw "$dir" "$config_dir" "$log" procd_close_instance
}
service_triggers() { procd_add_reload_trigger "$NAME" procd_add_validation aria2_validate }
start_service() { config_load "$NAME" config_foreach aria2_validate "aria2" aria2_start } `
I found the problem - libopenssl-legacy package is not build in my system and it should be a dependces
from aria2.
the same problem
from aria2.
@ArielHeleneto
`#!/bin/sh /etc/rc.common
Copyright (C) 2016-2017 Hsing-wang Liao [email protected]
Licensed to the public under the Apache License 2.0.
START=99
USE_PROCD=1
NAME=aria2
PROG=/usr/bin/aria2c
_info() {
logger -p daemon.info -t "$NAME" "$*"
}
_err() {
logger -p daemon.err -t "$NAME" "$*"
}
_make_dir() {
local d
for d in "$@"; do
if [ ! -d "$d" ]; then
mkdir -p "$d" 2>/dev/null || return 1
fi
done
return 0
}
_create_file() {
touch "$@" 2>/dev/null
}
_change_owner() {
local u="$1"; shift
local d
for d in "$@"; do
if [ -f "$d" ]; then
chown "$u" "$d" 2>/dev/null || return 1
elif [ -d "$d" ]; then
chown -R "$u" "$d" 2>/dev/null || return 1
fi
done
return 0
}
_change_file_mode() {
local mod="$1"; shift
chmod "$mod" "$@" 2>/dev/null
}
_reset_dir_mode() {
local d
for d in "$@"; do
if [ -d "$d" ]; then
find "$d" -type d -exec chmod 755 {} ; 2>/dev/null
find "$d" -type f -exec chmod 644 {} ; 2>/dev/null
fi
done
}
append_options() {
local o; local v
for o in "$@"; do
v="$(eval echo "$$o")"
[ -n "$v" ] &&
echo "${o//_/-}=$v" >>"$config_file_tmp"
done
}
append_setting() {
local s="$1"
[ -n "$s" ] &&
echo "$s" >>"$config_file_tmp"
}
append_header() {
local h="$1"
[ -n "$h" ] &&
echo "header="$h"" >>"$config_file_tmp"
}
aria2_validate() {
uci_load_validate "$NAME" aria2 "$1" "$2"
'enabled:bool:0'
'enable_logging:bool'
'enable_proxy:bool'
'config_dir:string:/var/etc/aria2'
'user:string'
'all_proxy:string'
'all_proxy_passwd:string'
'all_proxy_user:string'
'auto_save_interval:range(0,600)'
'bt_enable_lpd:or("true","false")'
'bt_detach_seed_only:or("true","false")'
'bt_load_saved_metadata:or("true","false")'
'bt_prioritize_piece:string'
'bt_max_open_files:uinteger'
'bt_max_peers:uinteger'
'bt_remove_unselected_file:or("true","false")'
'bt_request_peer_speed_limit:string'
'bt_save_metadata:or("true","false")'
'bt_seed_unverified:or("true","false")'
'bt_stop_timeout:uinteger'
'bt_tracker:list(string)'
'ca_certificate:file'
'certificate:file'
'check_certificate:or("true","false"):true'
'check_integrity:or("true","false")'
'connect_timeout:uinteger'
'dht_listen_port:string'
'dir:string'
'disable_ipv6:or("true","false")'
'disk_cache:string'
'enable_dht:or("true","false"):true'
'enable_dht6:or("true","false")'
'enable_peer_exchange:or("true","false")'
'event_poll:or("epoll","kqueue","port","poll","select")'
'file_allocation:or("none","prealloc","trunc","falloc")'
'follow_torrent:or("true","false","mem")'
'force_save:or("true","false")'
'http_accept_gzip:or("true","false")'
'http_no_cache:or("true","false")'
'listen_port:string'
'log:string'
'log_level:or("debug","info","notice","warn","error")'
'lowest_speed_limit:string'
'max_concurrent_downloads:uinteger'
'max_connection_per_server:uinteger'
'max_download_limit:string'
'max_overall_download_limit:string'
'max_overall_upload_limit:string'
'max_tries:uinteger'
'max_upload_limit:string'
'min_split_size:string'
'pause:or("true","false")'
'pause_metadata:or("true","false")'
'peer_id_prefix:string'
'private_key:file'
'retry_wait:uinteger'
'rpc_auth_method:or("none","user_pass","token")'
'rpc_certificate:file'
'rpc_listen_port:range(1024,65535)'
'rpc_passwd:string'
'rpc_private_key:file'
'rpc_secret:string'
'rpc_secure:or("true","false")'
'rpc_user:string'
'save_session_interval:uinteger'
'seed_ratio:ufloat'
'seed_time:ufloat'
'split:uinteger'
'timeout:uinteger'
'user_agent:string'
}
aria2_start() {
local section="$1"
[ "$2" = "0" ] || { _err "Validation failed."; return 1; }
[ "$enabled" = "1" ] || { _info "Instance \"$section\" disabled."; return 1; }
[ -n "$dir" ] || { _err "Please set download dir."; return 1; }
[ -d "$dir" ] || { _err "Please create download dir first."; return 1; }
config_file="$config_dir/$NAME.conf.$section"
config_file_tmp="$config_dir/$NAME.conf.tmp"
session_file="$config_dir/$NAME.session.$section"
_make_dir "$config_dir" || {
_err "Can't create config dir: $config_dir"
return 1
}
_create_file "$session_file" "$config_file" "$config_file_tmp" || {
_err "Can't create files: $session_file, $config_file, $config_file_tmp"
return 1
}
# create tmp file
cat >"$config_file_tmp" <<-EOF
# Auto generated file, changes to this file will be lost.
EOF
append_setting "dir=$dir"
append_setting "enable-rpc=true"
append_setting "rpc-allow-origin-all=true"
append_setting "rpc-listen-all=true"
append_setting "quiet=true"
append_setting "continue=true"
append_setting "input-file=$session_file"
append_setting "save-session=$session_file"
if [ -z "$enable_logging" ]; then
append_options "log" "log_level"
elif [ "$enable_logging" = "1" ]; then
log=${log:-"/var/log/aria2.log"}
local log_dir
log_dir="$(dirname "$log")"
_make_dir "$log_dir" || {
_err "Can't create log dir: $log_dir"
return 1
}
# create or clear log file
echo >"$log"
append_setting "log=$log"
append_options "log_level"
fi
if [ -z "$enable_proxy" ] || [ "$enable_proxy" = "1" ]; then
append_options "all_proxy" "all_proxy_user" "all_proxy_passwd"
fi
unset_auth_method() {
uci -q batch <<-EOF
set $NAME.$section.rpc_auth_method=""
commit $NAME
EOF
}
if [ -z "$rpc_auth_method" ]; then
if [ -n "$rpc_secret" ]; then
append_setting "rpc-secret=$rpc_secret"
elif [ -n "$rpc_user" ]; then
append_setting "rpc-user=$rpc_user"
append_setting "rpc-passwd=$rpc_passwd"
else
_info "It is recommended to set RPC secret."
fi
elif [ "$rpc_auth_method" = "token" ]; then
if [ -n "$rpc_secret" ]; then
append_setting "rpc-secret=$rpc_secret"
else
unset_auth_method
fi
elif [ "$rpc_auth_method" = "user_pass" ]; then
if [ -n "$rpc_user" ]; then
append_setting "rpc-user=$rpc_user"
append_setting "rpc-passwd=$rpc_passwd"
else
_info "Please set RPC user."
unset_auth_method
fi
fi
if [ ."$rpc_secure" = ."true" ] && [ -n "$rpc_certificate" ]; then
append_setting "rpc-secure=true"
append_options "rpc_certificate" "rpc_private_key"
fi
if [ ."$check_certificate" = ."true" ]; then
append_setting "check-certificate=true"
append_options "ca_certificate"
elif [ ."$check_certificate" = ."false" ]; then
append_setting "check-certificate=false"
fi
if [ ."$enable_dht" = ."true" ]; then
dht_file="$config_dir/dht.dat.$section"
_create_file "$dht_file" || {
_err "Can't create DHT file: $dht_file"
return 1
}
append_setting "enable-dht=true"
append_setting "dht-file-path=$dht_file"
fi
if [ ."$enable_dht6" = ."true" ] && [ ."$disable_ipv6" != ."true" ]; then
dht6_file="$config_dir/dht6.dat.$section"
_create_file "$dht6_file" || {
_err "Can't create DHT6 file: $dht6_file"
return 1
}
append_setting "enable-dht6=true"
append_setting "dht-file-path6=$dht6_file"
fi
if [ -n "$bt_tracker" ]; then
local bt_tracker_list; local t
for t in $bt_tracker; do
if [ -z "$bt_tracker_list" ]; then
bt_tracker_list="$t"
else
bt_tracker_list="$bt_tracker_list,$t"
fi
done
append_setting "bt-tracker=$bt_tracker_list"
fi
append_options "auto_save_interval" "bt_enable_lpd" "bt_max_open_files" "bt_max_peers" \
"bt_remove_unselected_file" "bt_request_peer_speed_limit" "bt_prioritize_piece" \
"bt_stop_timeout" "bt_detach_seed_only" "bt_save_metadata" "bt_load_saved_metadata" \
"bt_seed_unverified" "certificate" "check_integrity" "connect_timeout" "dht_listen_port" \
"disable_ipv6" "disk_cache" "enable_peer_exchange" "event_poll" "file_allocation" \
"follow_torrent" "force_save" "http_accept_gzip" "http_no_cache" "listen_port" \
"lowest_speed_limit" "max_concurrent_downloads" "max_connection_per_server" \
"max_download_limit" "max_overall_download_limit" "max_overall_upload_limit" "max_tries" \
"max_upload_limit" "min_split_size" "pause" "pause_metadata" "peer_id_prefix" "private_key" \
"retry_wait" "rpc_listen_port" "save_session_interval" "seed_ratio" "seed_time" "split" "timeout" \
"user_agent"
config_list_foreach "$section" "header" append_header
config_list_foreach "$section" "extra_settings" append_setting
sed '/^$/d' "$config_file_tmp" >"$config_file"
rm -f "$config_file_tmp"
_reset_dir_mode "$config_dir"
_change_file_mode 600 "$config_file"
if [ -n "$user" ]; then
if ( user_exists "$user" && _change_owner "$user" "$config_dir" "$log" ); then
_info "Aria2 will run with user '$user'."
if [ "$user" != "root" ]; then
_info "Please make sure user '$user' has write access to download dir: $dir"
fi
else
_info "Setting run user to '$user' failed, default user will be used."
user=
fi
fi
procd_open_instance "$NAME.$section"
procd_set_param command "$PROG"
procd_append_param command --conf-path="$config_file"
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param file "$config_file"
[ -n "$user" ] && \
procd_set_param user "$user"
procd_add_jail "$NAME.$section" log
procd_add_jail_mount "/usr/lib"
procd_add_jail_mount "$ca_certificate" "$certificate" "$rpc_certificate" "$rpc_private_key"
procd_add_jail_mount_rw "$dir" "$config_dir" "$log"
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger "$NAME"
procd_add_validation aria2_validate
}
start_service() {
config_load "$NAME"
config_foreach aria2_validate "aria2" aria2_start
}
`
from aria2.
temporary fix: /etc/init.d/aria2 add BOLD line. procd_add_jail "$NAME.$section" log procd_add_jail_mount "/usr/lib" #fix "errorCode=1 OSSL_PROVIDER_load 'legacy' failed" procd_add_jail_mount "$ca_certificate" "$certificate" "$rpc_certificate" "$rpc_private_key" procd_add_jail_mount_rw "$dir" "$config_dir" "$log" procd_close_instance
Sir you're super genius, fixed for now, i hope to see permanent fix soon, thank you so much
from aria2.
hi it doesn't work for me anymore. @smaller09 The problems is still there
my /etc/init.d/aria2
#!/bin/sh /etc/rc.common
# Copyright (C) 2016-2017 Hsing-wang Liao <[email protected]>
# Licensed to the public under the Apache License 2.0.
START=99
USE_PROCD=1
NAME=aria2
PROG=/usr/bin/aria2c
_info() {
logger -p daemon.info -t "$NAME" "$*"
}
_err() {
logger -p daemon.err -t "$NAME" "$*"
}
_make_dir() {
local d
for d in "$@"; do
if [ ! -d "$d" ]; then
mkdir -p "$d" 2>/dev/null || return 1
fi
done
return 0
}
_create_file() {
touch "$@" 2>/dev/null
}
_change_owner() {
local u="$1"; shift
local d
for d in "$@"; do
if [ -f "$d" ]; then
chown "$u" "$d" 2>/dev/null || return 1
elif [ -d "$d" ]; then
chown -R "$u" "$d" 2>/dev/null || return 1
fi
done
return 0
}
_change_file_mode() {
local mod="$1"; shift
chmod "$mod" "$@" 2>/dev/null
}
_reset_dir_mode() {
local d
for d in "$@"; do
if [ -d "$d" ]; then
find "$d" -type d -exec chmod 755 {} \; 2>/dev/null
find "$d" -type f -exec chmod 644 {} \; 2>/dev/null
fi
done
}
append_options() {
local o; local v
for o in "$@"; do
v="$(eval echo "\$$o")"
[ -n "$v" ] && \
echo "${o//_/-}=$v" >>"$config_file_tmp"
done
}
append_setting() {
local s="$1"
[ -n "$s" ] && \
echo "$s" >>"$config_file_tmp"
}
append_header() {
local h="$1"
[ -n "$h" ] && \
echo "header=\"$h\"" >>"$config_file_tmp"
}
aria2_validate() {
uci_load_validate "$NAME" aria2 "$1" "$2" \
'enabled:bool:0' \
'enable_logging:bool' \
'enable_proxy:bool' \
'config_dir:string:/var/etc/aria2' \
'user:string' \
'all_proxy:string' \
'all_proxy_passwd:string' \
'all_proxy_user:string' \
'auto_save_interval:range(0,600)' \
'bt_enable_lpd:or("true","false")' \
'bt_detach_seed_only:or("true","false")' \
'bt_load_saved_metadata:or("true","false")' \
'bt_prioritize_piece:string' \
'bt_max_open_files:uinteger' \
'bt_max_peers:uinteger' \
'bt_remove_unselected_file:or("true","false")' \
'bt_request_peer_speed_limit:string' \
'bt_save_metadata:or("true","false")' \
'bt_seed_unverified:or("true","false")' \
'bt_stop_timeout:uinteger' \
'bt_tracker:list(string)' \
'ca_certificate:file' \
'certificate:file' \
'check_certificate:or("true","false"):true' \
'check_integrity:or("true","false")' \
'connect_timeout:uinteger' \
'dht_listen_port:string' \
'dir:string' \
'disable_ipv6:or("true","false")' \
'disk_cache:string' \
'enable_dht:or("true","false"):true' \
'enable_dht6:or("true","false")' \
'enable_peer_exchange:or("true","false")' \
'event_poll:or("epoll","kqueue","port","poll","select")' \
'file_allocation:or("none","prealloc","trunc","falloc")' \
'follow_torrent:or("true","false","mem")' \
'force_save:or("true","false")' \
'http_accept_gzip:or("true","false")' \
'http_no_cache:or("true","false")' \
'listen_port:string' \
'log:string' \
'log_level:or("debug","info","notice","warn","error")' \
'lowest_speed_limit:string' \
'max_concurrent_downloads:uinteger' \
'max_connection_per_server:uinteger' \
'max_download_limit:string' \
'max_overall_download_limit:string' \
'max_overall_upload_limit:string' \
'max_tries:uinteger' \
'max_upload_limit:string' \
'min_split_size:string' \
'pause:or("true","false")' \
'pause_metadata:or("true","false")' \
'peer_id_prefix:string' \
'private_key:file' \
'retry_wait:uinteger' \
'rpc_auth_method:or("none","user_pass","token")' \
'rpc_certificate:file' \
'rpc_listen_port:range(1024,65535)' \
'rpc_passwd:string' \
'rpc_private_key:file' \
'rpc_secret:string' \
'rpc_secure:or("true","false")' \
'rpc_user:string' \
'save_session_interval:uinteger' \
'seed_ratio:ufloat' \
'seed_time:ufloat' \
'split:uinteger' \
'timeout:uinteger' \
'user_agent:string'
}
aria2_start() {
local section="$1"
[ "$2" = "0" ] || { _err "Validation failed."; return 1; }
[ "$enabled" = "1" ] || { _info "Instance \"$section\" disabled."; return 1; }
[ -n "$dir" ] || { _err "Please set download dir."; return 1; }
[ -d "$dir" ] || { _err "Please create download dir first."; return 1; }
config_file="$config_dir/$NAME.conf.$section"
config_file_tmp="$config_dir/$NAME.conf.tmp"
session_file="$config_dir/$NAME.session.$section"
_make_dir "$config_dir" || {
_err "Can't create config dir: $config_dir"
return 1
}
_create_file "$session_file" "$config_file" "$config_file_tmp" || {
_err "Can't create files: $session_file, $config_file, $config_file_tmp"
return 1
}
# create tmp file
cat >"$config_file_tmp" <<-EOF
# Auto generated file, changes to this file will be lost.
EOF
append_setting "dir=$dir"
append_setting "enable-rpc=true"
append_setting "rpc-allow-origin-all=true"
append_setting "rpc-listen-all=true"
append_setting "quiet=true"
append_setting "continue=true"
append_setting "input-file=$session_file"
append_setting "save-session=$session_file"
if [ -z "$enable_logging" ]; then
append_options "log" "log_level"
elif [ "$enable_logging" = "1" ]; then
log=${log:-"/var/log/aria2.log"}
local log_dir
log_dir="$(dirname "$log")"
_make_dir "$log_dir" || {
_err "Can't create log dir: $log_dir"
return 1
}
# create or clear log file
echo >"$log"
append_setting "log=$log"
append_options "log_level"
fi
if [ -z "$enable_proxy" ] || [ "$enable_proxy" = "1" ]; then
append_options "all_proxy" "all_proxy_user" "all_proxy_passwd"
fi
unset_auth_method() {
uci -q batch <<-EOF
set $NAME.$section.rpc_auth_method=""
commit $NAME
EOF
}
if [ -z "$rpc_auth_method" ]; then
if [ -n "$rpc_secret" ]; then
append_setting "rpc-secret=$rpc_secret"
elif [ -n "$rpc_user" ]; then
append_setting "rpc-user=$rpc_user"
append_setting "rpc-passwd=$rpc_passwd"
else
_info "It is recommended to set RPC secret."
fi
elif [ "$rpc_auth_method" = "token" ]; then
if [ -n "$rpc_secret" ]; then
append_setting "rpc-secret=$rpc_secret"
else
unset_auth_method
fi
elif [ "$rpc_auth_method" = "user_pass" ]; then
if [ -n "$rpc_user" ]; then
append_setting "rpc-user=$rpc_user"
append_setting "rpc-passwd=$rpc_passwd"
else
_info "Please set RPC user."
unset_auth_method
fi
fi
if [ ."$rpc_secure" = ."true" ] && [ -n "$rpc_certificate" ]; then
append_setting "rpc-secure=true"
append_options "rpc_certificate" "rpc_private_key"
fi
if [ ."$check_certificate" = ."true" ]; then
append_setting "check-certificate=true"
append_options "ca_certificate"
elif [ ."$check_certificate" = ."false" ]; then
append_setting "check-certificate=false"
fi
if [ ."$enable_dht" = ."true" ]; then
dht_file="$config_dir/dht.dat.$section"
_create_file "$dht_file" || {
_err "Can't create DHT file: $dht_file"
return 1
}
append_setting "enable-dht=true"
append_setting "dht-file-path=$dht_file"
fi
if [ ."$enable_dht6" = ."true" ] && [ ."$disable_ipv6" != ."true" ]; then
dht6_file="$config_dir/dht6.dat.$section"
_create_file "$dht6_file" || {
_err "Can't create DHT6 file: $dht6_file"
return 1
}
append_setting "enable-dht6=true"
append_setting "dht-file-path6=$dht6_file"
fi
if [ -n "$bt_tracker" ]; then
local bt_tracker_list; local t
for t in $bt_tracker; do
if [ -z "$bt_tracker_list" ]; then
bt_tracker_list="$t"
else
bt_tracker_list="$bt_tracker_list,$t"
fi
done
append_setting "bt-tracker=$bt_tracker_list"
fi
append_options "auto_save_interval" "bt_enable_lpd" "bt_max_open_files" "bt_max_peers" \
"bt_remove_unselected_file" "bt_request_peer_speed_limit" "bt_prioritize_piece" \
"bt_stop_timeout" "bt_detach_seed_only" "bt_save_metadata" "bt_load_saved_metadata" \
"bt_seed_unverified" "certificate" "check_integrity" "connect_timeout" "dht_listen_port" \
"disable_ipv6" "disk_cache" "enable_peer_exchange" "event_poll" "file_allocation" \
"follow_torrent" "force_save" "http_accept_gzip" "http_no_cache" "listen_port" \
"lowest_speed_limit" "max_concurrent_downloads" "max_connection_per_server" \
"max_download_limit" "max_overall_download_limit" "max_overall_upload_limit" "max_tries" \
"max_upload_limit" "min_split_size" "pause" "pause_metadata" "peer_id_prefix" "private_key" \
"retry_wait" "rpc_listen_port" "save_session_interval" "seed_ratio" "seed_time" "split" "timeout" \
"user_agent"
config_list_foreach "$section" "header" append_header
config_list_foreach "$section" "extra_settings" append_setting
sed '/^$/d' "$config_file_tmp" >"$config_file"
rm -f "$config_file_tmp"
_reset_dir_mode "$config_dir"
_change_file_mode 600 "$config_file"
if [ -n "$user" ]; then
if ( user_exists "$user" && _change_owner "$user" "$config_dir" "$log" ); then
_info "Aria2 will run with user '$user'."
if [ "$user" != "root" ]; then
_info "Please make sure user '$user' has write access to download dir: $dir"
fi
else
_info "Setting run user to '$user' failed, default user will be used."
user=
fi
fi
procd_open_instance "$NAME.$section"
procd_set_param command "$PROG"
procd_append_param command --conf-path="$config_file"
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param file "$config_file"
[ -n "$user" ] && \
procd_set_param user "$user"
procd_add_jail "$NAME.$section" log
procd_add_jail_mount "/usr/lib"
procd_add_jail_mount "$ca_certificate" "$certificate" "$rpc_certificate" "$rpc_private_key"
procd_add_jail_mount_rw "$dir" "$config_dir" "$log"
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger "$NAME"
procd_add_validation aria2_validate
}
start_service() {
config_load "$NAME"
config_foreach aria2_validate "aria2" aria2_start
}
from aria2.
@ArielHeleneto
Idk why it's not fixed with you, this temporary fix is fine and working flawlessly
from aria2.
@ArielHeleneto
Yes, that's mandatory for workaround to work
from aria2.
Downgrade to v1.36.0 fix the issue
from aria2.
Related Issues (20)
- Failed to download file from ipv6 server HOT 2
- Using aria2c with yt-dlp returns Unrecognized URI HOT 4
- Aria2 Download queue
- aria2.session cannot write and this issue leads not to dowload
- Why is the executable file called 'aria2c' (instead of 'aria2') HOT 1
- Aria2c RPC Method changeUri doesn't work HOT 1
- 关于开启https无法访问的问题 HOT 8
- How to request SFTP compression?
- Aria2 control files regularly fail to rename from aria2__temp to aria2 and do not get deleted post-download
- Support file uri scheme
- msys2-mingw64 提示 error: 'gettimeofday' was not declared in this scope; did you mean 'gettimeofday_ms'?
- HLS fragments
- Problem compiling in mingw static. undefined reference to `libiconv_set_ relocation_prefix HOT 2
- option --follow-torrent=false doesn't work
- aria2c incompatible with most CDNs
- Subfolder support for metalink HOT 1
- File Version property shouldn't be empty
- OSError: [Errno 99] Cannot assign requested address HOT 1
- OSX10.7 aria2
- Fail to resume download, where some files have been done and others not.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aria2.