Skip to content

Commit 4bb1576

Browse files
AethylredAaron Hicks
authored andcommitted
Download metadata and metadata certificate from provider.
1 parent bfc2c7c commit 4bb1576

1 file changed

Lines changed: 48 additions & 2 deletions

File tree

manifests/mod/shib/metadata.pp

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,60 @@
1+
# Currently this can only create a _single_ metadata provider
2+
# it will need to be modified to permit multiple metadata providers
13
define 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

Comments
 (0)