aboutsummaryrefslogtreecommitdiffstats
path: root/modules/sympa/manifests/list.pp
blob: ed0d55e2ef57278acaaa9045aa29167e3feaba2a (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
define sympa::list( $subject,
                    $language = 'en',
                    $topics = false,
                    $reply_to = false,
                    $sender_subscriber = false,
                    $sender_email = false,
                    $sender_ldap_group = false,
                    $subscriber_ldap_group = false,
                    $public_archive = true,
                    $subscription_open = false) {

    include sympa::variable
    $ldap_password = extlookup('sympa_ldap','x')
    $custom_subject = $name

    $xml_file = "/etc/sympa/lists_xml/${name}.xml"

    file { $xml_file:
        content => template('sympa/list.xml'),
        require => Package[sympa],
    }

    exec { "sympa.pl --create_list --robot=$sympa::variable::vhost --input_file=${xml_file}":
        require => File[$xml_file],
        creates => "/var/lib/sympa/expl/${name}",
        before  => File["/var/lib/sympa/expl/${name}/config"],
    }

    file { "/var/lib/sympa/expl/${name}/config":
        owner   => 'sympa',
        group   => 'sympa',
        mode    => '0750',
        content => template('sympa/config'),
        notify  => Service['sympa'],
    }

    sympa::scenario::sender_restricted { $name:
        ldap_group              => $sender_ldap_group,
        email                   => $sender_email,
        allow_subscriber        => $sender_subscriber,
    }

    if $subscriber_ldap_group {
        if ! defined(Sympa::Search_filter::Ldap[$subscriber_ldap_group]) {
            sympa::search_filter::ldap { $subscriber_ldap_group: }
        }
    }
}