1+ # Currently this can only create a _single_ metadata provider
2+ # it will need to be modified to permit multiple metadata providers
13define apache::mod::shib::metadata (
24 $provider_uri ,
35 $cert_uri ,
4- $backing_file_dir = $apache::mod::shib::shib_conf_dir,
5- $backing_file_name = inline_template(" <%= provider_uri.split('/').last %>" )
6+ $backing_file_dir = $apache::mod::shib::shib_conf_dir,
7+ $backing_file_name = inline_template(" <%= provider_uri.split('/').last %>" ),
8+ $cert_dir = $apache::mod::shib::shib_conf_dir ,
9+ $cert_file_name = inline_template(" <%= cert_uri.split('/').last %>" ),
10+ $provider_type = ' XML' ,
11+ $provider_reload_interval = " 7200" ,
12+ $metadata_filter_max_validity_interval = " 2419200"
613){
714
815 require apache::mod::shib
916
1017 $backing_file = " ${backing_file_dir} /${backing_file_name} "
18+ $cert_file = " ${cert_dir} /${cert_file_name} "
1119
20+ # Get the Metadata signing certificate
21+ exec {'get_${name}_metadata_cert' :
22+ path => [' /usr/bin' ],
23+ command => " wget ${cert_uri} -O ${cert_file} " ,
24+ creates => $cert_file ,
25+ notify => Service[' httpd' ],
26+ }
1227
28+ # This puts the MetadataProvider entry in the 'right' place
29+ augeas {"shib_${name}_create_metadata_provider" :
30+ lens => ' Xml.lns' ,
31+ incl => $apache::mod::shib::shib_conf ,
32+ context => " /files${apache::mod::shib::shib_conf} /SPConfig/ApplicationDefaults" ,
33+ changes => [
34+ " ins MetadataProvider after Errors" ,
35+ ],
36+ onlyif => ' match MetadataProvider/#attribute/uri size == 0' ,
37+ notify => Service[' httpd' ],
38+ require => Exec[' get_${name}_metadata_cert' ],
39+ }
40+
41+ # This will update the attributes and child nodes if they change
42+ augeas {"shib_${name}_metadata_provider" :
43+ lens => ' Xml.lns' ,
44+ incl => $apache::mod::shib::shib_conf ,
45+ context => " /files${apache::mod::shib::shib_conf} /SPConfig/ApplicationDefaults" ,
46+ changes => [
47+ " set MetadataProvider/#attribute/type ${provider_type} " ,
48+ " set MetadataProvider/#attribute/uri ${provider_uri} " ,
49+ " set MetadataProvider/#attribute/backingFilePath ${backing_file} " ,
50+ " set MetadataProvider/#attribute/reloadInterva ${provider_reload_interval} " ,
51+ " set MetadataProvider/MetadataFilter[1]/#attribute/type RequireValidUntil" ,
52+ " set MetadataProvider/MetadataFilter[1]/#attribute/maxValidityInterval ${metadata_filter_max_validity_interval} " ,
53+ " set MetadataProvider/MetadataFilter[2]/#attribute/type Signature" ,
54+ " set MetadataProvider/MetadataFilter[2]/#attribute/certificate ${cert_file} " ,
55+ ],
56+ notify => Service[' httpd' ],
57+ require => [Exec[' get_${name}_metadata_cert' ],Augeas[" shib_${name} _create_metadata_provider" ]],
58+ }
1359
1460}
0 commit comments