class clamav::daemon {

  $domain_hash           = hiera('domain')
  $domain                = $domain_hash['full_suffix']

  package { [ 'clamav-daemon', 'arj' ]:
    ensure => installed;
  }

  service {
    'clamav-daemon':
      ensure     => running,
      name       => clamav-daemon,
      pattern    => '/usr/sbin/clamd',
      enable     => true,
      hasrestart => true,
      subscribe  => File['/etc/default/clamav-daemon'],
      require    => Package['clamav-daemon'];
  }

  file {
    '/var/run/clamav':
      ensure  => directory,
      mode    => '0750',
      owner   => clamav,
      group   => postfix,
      require => [Package['postfix'], Package['clamav-daemon']];

    '/var/lib/clamav':
      mode    => '0755',
      owner   => clamav,
      group   => clamav,
      require => Package['clamav-daemon'];

    '/etc/default/clamav-daemon':
      source => 'puppet:///modules/clamav/clamav-daemon_default',
      mode   => '0644',
      owner  => root,
      group  => root;

    # this file contains additional domains that we want the clamav
    # phishing process to look for (our domain)
    '/var/lib/clamav/local.pdb':
      content => template('clamav/local.pdb.erb'),
      mode    => '0644',
      owner   => clamav,
      group   => clamav,
      require => Package['clamav-daemon'];
  }

  file_line {
    'clamav_daemon_tmp':
      path    => '/etc/clamav/clamd.conf',
      line    => 'TemporaryDirectory /var/tmp',
      require => Package['clamav-daemon'],
      notify  => Service['clamav-daemon'];

     'enable_phishscanurls':
      path    => '/etc/clamav/clamd.conf',
      match   => 'PhishingScanURLs no',
      line    => 'PhishingScanURLs yes',
      require => Package['clamav-daemon'],
      notify  => Service['clamav-daemon'];

    'clamav_LogSyslog_true':
      path    => '/etc/clamav/clamd.conf',
      match   => '^LogSyslog false',
      line    => 'LogSyslog true',
      require => Package['clamav-daemon'],
      notify  => Service['clamav-daemon'];

    'clamav_MaxThreads':
      path    => '/etc/clamav/clamd.conf',
      match   => 'MaxThreads 20',
      line    => 'MaxThreads 100',
      require => Package['clamav-daemon'],
      notify  => Service['clamav-daemon'];
  }

  # remove LogFile line
  file_line {
    'clamav_LogFile':
      path    => '/etc/clamav/clamd.conf',
      match   => '^LogFile .*',
      line    => '',
      require => Package['clamav-daemon'],
      notify  => Service['clamav-daemon'];
  }

}