summaryrefslogtreecommitdiff
path: root/manifests/transmission.pp
blob: d618b68fd6bbea7d800e9559d3e15e3863a970bc (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
73
74
75
76
77
78
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,
  }

  # https://github.com/transmission/transmission/wiki/Editing-Configuration-File
  file { '/var/lib/transmission/.config/transmission-daemon/settings.json':
    notify  => Service['transmission'],
    content => epp('profiles/transmission.json.epp', {
      rpc_username  => 'hugo',
      # '{' + sha1(password + salt)
      # But I don't know how I managed to generate it, since
      # transmission rolls its own crypto
      rpc_password  => '{eb43101d3b9aa02223466d7f98c5329c841c7967/Zr2tFpn',
      download_dir  => '/usr/net/',
      rpc_whitelist => ['127.0.0.1', '::1'],
      rpc_port      => $transmission_port,
      rpc_url       => "${transmission_url}/",
      msg_level     => case $msg_level {
                            'None':   { 0 }
                            'Error':  { 1 }
                            'Info':   { 2 }
                            'Debug':  { 3 }
                          },
    }),
  }

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