summaryrefslogtreecommitdiff
path: root/manifests/transmission.pp
blob: e381fb32b22e70f82d364e77769fb1ace7021dc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class profiles::transmission (
  Optional[String] $nginx_server = undef,
  Enum['None', 'Error', 'Info', 'Debug'] $msg_level = 'Error',
) {

  $transmission_url = '/transmission'
  $transmission_port = 9091

  if ($nginx_server) {
    require ::nginx

    nginx::resource::location { $transmission_url:
      proxy            => "http://localhost:${transmission_port}${transmission_url}",
      proxy_set_header => [],
      server           => $nginx_server,
      ssl              => true,
      ssl_only         => true,
    }
  }

  ensure_packages(['transmission-cli'],
    { ensure => installed })

  systemd::dropin_file { 'transmission-after.conf':
    unit    => 'transmission.service',
    content => @(EOF)
    [Unit]
    After=network-online.target
    | EOF
  }

  systemd::dropin_file { 'transmission-flags.conf':
    unit    => 'transmission.service',
    content => @(EOF)
    [Service]
    ExecStart=
    ExecStart=/usr/bin/transmission-daemon -f
    | EOF
  }

  # TODO whitelists are currently disabled, since they don't seem to
  # work. Possibly turn them on again some day.

  file { [
    '/var/lib/transmission',
    '/var/lib/transmission/.config',
    '/var/lib/transmission/.config/transmission-daemon',
  ]:
    ensure => directory,
  }

  augeas { 'Transmission configuration':
    lens    => 'json.lns',
    incl    => '/var/lib/transmission/.config/transmission-daemon/settings.json',
    changes => [
      "set dict/entry['download-dir']/string /usr/net/",
      "set dict/entry['rpc-username']/string hugo",
      "set dict/entry['rpc-password']/string  {eb43101d3b9aa02223466d7f98c5329c841c7967/Zr2tFpn",
      "set dict/entry['rpc-whitelist']/string 127.0.0.1,::1",
      "set dict/entry['rpc-port']/number ${transmission_port}",
      "set dict/entry['rpc-url']/string ${transmission_url}/",
    ],
    notify  => Service['transmission'],
  }

  # https://github.com/transmission/transmission/wiki/Editing-Configuration-File

  service { 'transmission':
    ensure => 'running',
    enable => true,
  }
}