diff --git a/manifests/list.pp b/manifests/list.pp index 3b92a42c8bd57179a84ea8b3dd7c9bc199b1ec4a..163f1dce0a6ff9bcc47e99691adf2238db5a2ddb 100644 --- a/manifests/list.pp +++ b/manifests/list.pp @@ -1,59 +1,60 @@ # a small wrapper to manage init member keys and a schleuder_list -define schleuder::list( - $ensure = present, - $admin = undef, - $admin_publickey = undef, - $admin_publickey_from_wkd = false, - $send_list_key = true, -){ +define schleuder::list ( + $ensure = present, + $admin = undef, + $admin_publickey = undef, + $admin_publickey_from_wkd = false, + $send_list_key = true, +) { if ($ensure == 'present') and !$admin { fail("Must pass adminaddress to Schleuder::List[${name}]") } + $list_name = assert_type(Schleuder::Listname, $name) include schleuder - schleuder_list{ - $name: + schleuder_list { + $list_name: ensure => $ensure, } if $ensure == present { if $schleuder::gpg_use_tor { - $parts = split($name,'@') + $parts = split($list_name,'@') # every gnupg homedir needs this config - file{"/var/lib/schleuder/lists/${parts[1]}/${parts[0]}/dirmngr.conf": + file { "/var/lib/schleuder/lists/${parts[1]}/${parts[0]}/dirmngr.conf": source => '/var/lib/schleuder/.gnupg/dirmngr.conf', owner => 'schleuder', group => 'schleuder', mode => '0600', - require => Schleuder_list[$name], + require => Schleuder_list[$list_name], } } $global_search = "${schleuder::adminkeys_path}/${admin}.pub" $admin_publickey_missing = - !$admin_publickey and (file($global_search, '/dev/null') == '') + !$admin_publickey and (file($global_search, '/dev/null') == '') unless $admin_publickey_missing { if $admin_publickey =~ /^\// { $real_admin_publickey = $admin_publickey } else { $real_admin_publickey = "/var/lib/schleuder/adminkeys/${name}_${admin}.pub" - file{$real_admin_publickey: + file { $real_admin_publickey: owner => 'root', group => 'schleuder', mode => '0640', seltype => 'schleuder_data_t', } if !$admin_publickey { - File[$real_admin_publickey]{ - source => "puppet:///${global_search}", + File[$real_admin_publickey] { + source => "puppet:///modules/${global_search}", } } elsif $admin_publickey =~ /^puppet:\/\// { - File[$real_admin_publickey]{ + File[$real_admin_publickey] { source => $admin_publickey, } } else { - File[$real_admin_publickey]{ + File[$real_admin_publickey] { content => $admin_publickey, } } @@ -61,20 +62,20 @@ define schleuder::list( } if $admin_publickey_missing and !$admin_publickey_from_wkd { - fail("no public key source for admin of $name") + fail("no public key source for admin of ${list_name}") } - Schleuder_list[$name]{ + Schleuder_list[$list_name] { admin_publickey => $real_admin_publickey, admin_publickey_from_wkd => $admin_publickey_from_wkd, admin => $admin, } if $send_list_key { - exec{"schleuder-cli lists send-list-key-to-subscriptions ${name}": + exec { "schleuder-cli lists send-list-key-to-subscriptions ${name}": environment => ['HOME=/root'], tag => 'schleuder-cli-send-list-key-to-subscriptions', refreshonly => true, - subscribe => Schleuder_list[$name], + subscribe => Schleuder_list[$list_name], } } } diff --git a/types/listname.pp b/types/listname.pp new file mode 100644 index 0000000000000000000000000000000000000000..d008ef87cc5ec67cd301869f5036ab732d0c6961 --- /dev/null +++ b/types/listname.pp @@ -0,0 +1 @@ +type Schleuder::Listname = Pattern[/^[a-z0-9_\-]+@(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/]