lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

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