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