lede-packages-rs

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

transmission.init (3880B)


      1 #!/bin/sh /etc/rc.common
      2 # Copyright (C) 2010-2015 OpenWrt.org
      3 
      4 START=99
      5 USE_PROCD=1
      6 
      7 
      8 LIST_SEP="
      9 "
     10 
     11 append_params() {
     12 	local p; local v; local s="$1"; shift
     13 	for p in $*; do
     14 		config_get v "$s" "$p"
     15 		IFS="$LIST_SEP"
     16 		for v in $v; do
     17 			[ -n "$v" ] && (
     18 				echo "\""$p"\": "$v"," | sed -e 's|_|-|g' >> $config_file
     19 			)
     20 		done
     21 		unset IFS
     22 	done
     23 }
     24 
     25 append_params_quotes() {
     26 	local p; local v; local s="$1"; shift
     27 	for p in $*; do
     28 		config_get v "$s" "$p"
     29 		IFS="$LIST_SEP"
     30 		for v in $v; do
     31 			[ -n "$v" ] && (
     32 				echo -n "\""$p | sed -e 's|/|\\/|g;s|_|-|g' >> $config_file; \
     33 				echo "\": \""$v"\"," >> $config_file
     34 			)
     35 		done
     36 		unset IFS
     37 	done
     38 }
     39 
     40 section_enabled() {
     41 	config_get_bool enabled "$1" 'enabled' 0
     42 	[ $enabled -gt 0 ]
     43 }
     44 
     45 transmission() {
     46 	local cfg="$1"
     47 	local USE
     48 
     49 	local user
     50 	local download_dir config_dir
     51 	local mem_percentage
     52 	local config_overwrite nice ionice_flags
     53 	local cmdline
     54 
     55 	section_enabled "$section" || return 1
     56 
     57 	config_get config_dir "$cfg" 'config_dir' '/var/etc/transmission'
     58 	config_get user "$cfg" 'user'
     59 	config_get download_dir "$cfg" 'download_dir' '/var/etc/transmission'
     60 	config_get mem_percentage "$cfg" 'mem_percentage' '50'
     61 	config_get config_overwrite "$cfg" config_overwrite 1
     62 	config_get nice "$cfg" nice 0
     63 	config_get ionice_flags "$cfg" ionice_flags ''
     64 	which ionice > /dev/null || ionice_flags=''
     65 
     66 	local MEM=$(sed -ne 's!^MemTotal:[[:space:]]*\([0-9]*\) kB$!\1!p' /proc/meminfo)
     67 	if test "$MEM" -gt 1;then
     68 		USE=$(expr $MEM \* $mem_percentage \* 10)
     69 	fi
     70 
     71 	config_file="$config_dir/settings.json"
     72 	[ -d $config_dir ] || {
     73 		mkdir -m 0755 -p "$config_dir"
     74 		touch $config_file
     75 		[ -z "$user" ] || chown -R $user $config_dir
     76 	}
     77 
     78 	[ "$config_overwrite" == 0 ] || {
     79 
     80 		echo "{" > $config_file
     81 
     82 		append_params "$cfg" \
     83 			alt_speed_down alt_speed_enabled alt_speed_time_begin alt_speed_time_day \
     84 			alt_speed_time_enabled alt_speed_time_end alt_speed_up blocklist_enabled \
     85 			cache_size_mb download_queue_enabled download_queue_size \
     86 			dht_enabled encryption idle_seeding_limit idle_seeding_limit_enabled \
     87 			incomplete_dir_enabled lazy_bitfield_enabled lpd_enabled message_level \
     88 			peer_limit_global peer_limit_per_torrent peer_port \
     89 			peer_port_random_high peer_port_random_low peer_port_random_on_start \
     90 			pex_enabled port_forwarding_enabled preallocation prefetch_enabled \
     91 			ratio_limit ratio_limit_enabled rename_partial_files rpc_authentication_required \
     92 			rpc_enabled rpc_port rpc_whitelist_enabled queue_stalled_enabled \
     93 			queue_stalled_minutes scrape_paused_torrents_enabled script_torrent_done_enabled \
     94 			seed_queue_enabled seed_queue_size \
     95 			speed_limit_down speed_limit_down_enabled speed_limit_up \
     96 			speed_limit_up_enabled start_added_torrents trash_original_torrent_files \
     97 			umask upload_slots_per_torrent utp_enabled scrape_paused_torrents \
     98 			watch_dir_enabled
     99 
    100 		append_params_quotes "$cfg" \
    101 			blocklist_url bind_address_ipv4 bind_address_ipv6 download_dir incomplete_dir \
    102 			peer_congestion_algorithm peer_socket_tos rpc_bind_address rpc_password rpc_url \
    103 			rpc_username rpc_whitelist script_torrent_done_filename watch_dir
    104 
    105 		echo "\""invalid-key"\": false" >> $config_file
    106 		echo "}" >> $config_file
    107 
    108 	}
    109 
    110 	cmdline="/usr/bin/transmission-daemon -g $config_dir -f"
    111 	[ "$ionice_flags" ] && cmdline="ionice $ionice_flags $cmdline"
    112 	procd_open_instance
    113 	procd_set_param command $cmdline
    114 	procd_set_param respawn retry=60
    115 	procd_set_param user "$user"
    116 	procd_set_param nice "$nice"
    117 	if test -z "$USE";then
    118 		procd_set_param limits core="0 0"
    119 	else
    120 		procd_set_param limits core="0 0" as="$USE $USE"
    121 		logger -t transmission "Starting with $USE virt mem"
    122 	fi
    123 
    124 	procd_add_jail transmission log
    125 	procd_add_jail_mount $config_file
    126 	procd_add_jail_mount_rw $download_dir
    127 	procd_close_instance
    128 }
    129 
    130 start_service() {
    131 	config_load 'transmission'
    132 	config_foreach transmission 'transmission'
    133 }
    134