noddos: Noddos v0.5.0 with mDNS / DNS-SD support
[feed/packages.git] / net / aria2 / files / aria2.init
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