1#!/bin/sh /etc/rc.common 2 3START=99 4BIN=/usr/bin/transmission-daemon 5SSD=start-stop-daemon 6 7LIST_SEP=" 8" 9append_params() { 10 local p; local v; local s="$1"; shift 11 for p in $*; do 12 config_get v "$s" "$p" 13 IFS="$LIST_SEP" 14 for v in $v; do 15 [ -n "$v" ] && ( 16 echo "\""$p"\": "$v"," | sed -e 's|_|-|g' >> $config_dir/settings.json 17 ) 18 done 19 unset IFS 20 done 21} 22 23append_params_quotes() { 24 local p; local v; local s="$1"; shift 25 for p in $*; do 26 config_get v "$s" "$p" 27 IFS="$LIST_SEP" 28 for v in $v; do 29 [ -n "$v" ] && ( 30 echo -n "\""$p | sed -e 's|/|\\/|g;s|_|-|g' >> $config_dir/settings.json; \ 31 echo "\": \""$v"\"," >> $config_dir/settings.json 32 ) 33 done 34 unset IFS 35 done 36} 37 38start_service() { 39 local s="$1" 40 local enable=0 41 local enabled=0 42 local run_as_usr='root' 43 local open_file_limit=0 44 local ulimit_files=`ulimit -n` 45 46 # disabled? 47 config_get_bool enable "$s" enable 0 # compatibility with prev version 48 config_get_bool enabled "$s" enabled 0 49 [ "$enabled" == 0 -a "$enable" == 0 ] && return 0 50 config_get config_dir "$s" config_dir '/tmp/transmission' 51 mkdir -p "$config_dir" 52 config_get run_as_usr "$s" run_daemon_as_user 'root' 53 54 echo "{" > $config_dir/settings.json 55 56 append_params "$s" \ 57 alt_speed_down alt_speed_enabled alt_speed_time_begin alt_speed_time_day \ 58 alt_speed_time_enabled alt_speed_time_end alt_speed_up blocklist_enabled \ 59 cache_size_mb dht_enabled encryption idle_seeding_limit idle_seeding_limit_enabled \ 60 incomplete_dir_enabled lazy_bitfield_enabled lpd_enabled message_level \ 61 open_file_limit peer_limit_global peer_limit_per_torrent peer_port \ 62 peer_port_random_high peer_port_random_low peer_port_random_on_start \ 63 peer_socket_tos pex_enabled port_forwarding_enabled preallocation prefetch_enabled \ 64 ratio_limit ratio_limit_enabled rename_partial_files rpc_authentication_required \ 65 rpc_enabled rpc_port rpc_whitelist_enabled script_torrent_done_enabled \ 66 speed_limit_down speed_limit_down_enabled speed_limit_up \ 67 speed_limit_up_enabled start_added_torrents trash_original_torrent_files \ 68 umask upload_slots_per_torrent utp_enabled watch_dir_enabled 69 70 append_params_quotes "$s" \ 71 blocklist_url bind_address_ipv4 bind_address_ipv6 download_dir incomplete_dir \ 72 peer_congestion_algorithm rpc_bind_address rpc_password rpc_url \ 73 rpc_username rpc_whitelist script_torrent_done_filename watch_dir 74 75 echo "\""invalid-key"\": false" >> $config_dir/settings.json 76 echo "}" >> $config_dir/settings.json 77 78 chown -R $run_as_usr $config_dir 79 80 config_get open_file_limit "$s" open_file_limit 32 81 let open_limit_files="$open_file_limit + 8" 82 83 if [ ${open_file_limit} -gt ${ulimit_files} ]; then 84 ulimit -n $open_limit_files 85 fi 86 87 eval "$SSD -c $run_as_usr -q -b -x $BIN -S -- -g $config_dir" 88} 89 90start() { 91 config_load transmission 92 config_foreach start_service transmission 93} 94 95stop() { 96 service_kill $(basename $BIN) 97} 98 99restart() { 100 stop; sleep 5; start 101} 102