aria2.init (2725B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2014-2016 nanpuyue <nanpuyue@gmail.com> 3 # Copyright (C) 2016 kuoruan <kuoruan@gmail.com> 4 5 START=99 6 SERVICE_WRITE_PID=1 7 SERVICE_DAEMONIZE=1 8 9 10 append_params() { 11 local p; local v; local s="$1"; shift 12 for p in $*; do 13 config_get v "$s" "$p" 14 [ -n "$v" ] && ( 15 p=$(echo "$p" | sed -e 's|_|-|g'); 16 echo "$p=$v" >> $config_file 17 ) 18 done 19 } 20 21 section_enabled() { 22 local result 23 config_get_bool result "$1" 'enabled' 0 24 [ $result -eq 1 ] 25 } 26 27 option_disabled() { 28 local result 29 config_get_bool result "$1" "$2" 1 30 [ $result -eq 0 ] 31 } 32 33 start_instance() { 34 local s="$1" 35 local user 36 37 section_enabled "$s" || return 1 38 39 config_get config_dir "$s" 'config_dir' '/var/etc/aria2' 40 config_get dir "$s" 'dir' 41 config_get user "$s" 'user' 42 43 config_file="$config_dir/aria2.conf" 44 session_file="$config_dir/aria2.session" 45 dht_file="$config_dir/dht.dat" 46 log_file="$config_dir/aria2.log" 47 48 [ -d "$config_dir" ] || { 49 mkdir -m 0755 -p "$config_dir" 50 touch "$config_file" 51 } 52 53 [ -d "$dir" ] || { 54 mkdir -m 0755 -p "$dir" # create download dir 55 touch "$dir" 56 } 57 58 touch "$session_file" # create session file 59 60 echo -e "enable-rpc=true\nrpc-allow-origin-all=true\nrpc-listen-all=true\nquiet=true" > $config_file 61 echo -e "continue=true\ninput-file=$session_file\nsave-session=$session_file" >> $config_file 62 63 option_disabled "$s" 'enable_dht' || echo "dht-file-path=$dht_file" >> $config_file 64 option_disabled "$s" 'enable_log' || { 65 [ -f "$log_file" ] && echo > $log_file # if log file exist, clear it 66 echo -e "log=$log_file" >> $config_file 67 } 68 69 # if user is set, change dir owner 70 [ -z "$user" ] || { 71 chown -R $user:$user $config_dir 72 chown -R $user:$user $dir 73 } 74 75 append_params "$s" \ 76 file_allocation bt_enable_lpd enable_dht rpc_user rpc_passwd rpc_listen_port dir bt_tracker disk_cache \ 77 max_overall_download_limit max_overall_upload_limit max_download_limit max_upload_limit max_concurrent_downloads \ 78 max_connection_per_server min_split_size split save_session_interval follow_torrent listen_port bt_max_peers \ 79 peer_id_prefix user_agent rpc_secret log_level 80 81 config_list_foreach "$s" extra_settings append_extrasettings 82 83 SERVICE_UID="$user" \ 84 service_start /usr/bin/aria2c --conf-path="$config_file" # start service 85 } 86 87 append_extrasettings() { 88 echo "$1" >> $config_file 89 } 90 91 start() { 92 logger -t ARIA2C 'Starting aria2c service' 93 config_load 'aria2' 94 config_foreach start_instance 'aria2' 95 return 0 96 } 97 98 stop() { 99 if [ -n "`pidof aria2c`" ]; then 100 logger -t ARIA2C 'Shutting down aria2c service' 101 service_stop /usr/bin/aria2c 102 fi 103 return 0 104 } 105 106 restart() { 107 logger -t ARIA2C 'Restarting aria2c service' 108 stop 109 sleep 2 # give time to shutdown 110 start 111 } 112