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, } }