#!/bin/sh /etc/rc.common # Copyright (C) 2014-2016 nanpuyue # Copyright (C) 2016 kuoruan START=99 SERVICE_WRITE_PID=1 SERVICE_DAEMONIZE=1 append_params() { local p; local v; local s="$1"; shift for p in $*; do config_get v "$s" "$p" [ -n "$v" ] && ( p=$(echo "$p" | sed -e 's|_|-|g'); echo "$p=$v" >> $config_file ) done } section_enabled() { local result config_get_bool result "$1" 'enabled' 0 [ $result -eq 1 ] } option_disabled() { local result config_get_bool result "$1" "$2" 1 [ $result -eq 0 ] } start_instance() { local s="$1" local user section_enabled "$s" || return 1 config_get config_dir "$s" 'config_dir' '/var/etc/aria2' config_get dir "$s" 'dir' config_get user "$s" 'user' config_file="$config_dir/aria2.conf" session_file="$config_dir/aria2.session" dht_file="$config_dir/dht.dat" log_file="$config_dir/aria2.log" [ -d "$config_dir" ] || { mkdir -m 0755 -p "$config_dir" touch "$config_file" } [ -d "$dir" ] || { mkdir -m 0755 -p "$dir" # create download dir touch "$dir" } touch "$session_file" # create session file echo -e "enable-rpc=true\nrpc-allow-origin-all=true\nrpc-listen-all=true\nquiet=true" > $config_file echo -e "continue=true\ninput-file=$session_file\nsave-session=$session_file" >> $config_file option_disabled "$s" 'enable_dht' || echo "dht-file-path=$dht_file" >> $config_file option_disabled "$s" 'enable_log' || { [ -f "$log_file" ] && echo > $log_file # if log file exist, clear it echo -e "log=$log_file" >> $config_file } # if user is set, change dir owner [ -z "$user" ] || { chown -R $user:$user $config_dir chown -R $user:$user $dir } append_params "$s" \ file_allocation bt_enable_lpd enable_dht rpc_user rpc_passwd rpc_listen_port dir bt_tracker disk_cache \ max_overall_download_limit max_overall_upload_limit max_download_limit max_upload_limit max_concurrent_downloads \ max_connection_per_server min_split_size split save_session_interval follow_torrent listen_port bt_max_peers \ peer_id_prefix user_agent rpc_secret log_level config_list_foreach "$s" extra_settings append_extrasettings SERVICE_UID="$user" \ service_start /usr/bin/aria2c --conf-path="$config_file" # start service } append_extrasettings() { echo "$1" >> $config_file } start() { logger -t ARIA2C 'Starting aria2c service' config_load 'aria2' config_foreach start_instance 'aria2' return 0 } stop() { if [ -n "`pidof aria2c`" ]; then logger -t ARIA2C 'Shutting down aria2c service' service_stop /usr/bin/aria2c fi return 0 } restart() { logger -t ARIA2C 'Restarting aria2c service' stop sleep 2 # give time to shutdown start }