/** * cron hook to update aggregator2 metadata. * * @param array &$croninfo Output */ function aggregator2_hook_cron(&$croninfo) { assert('is_array($croninfo)'); assert('array_key_exists("summary", $croninfo)'); assert('array_key_exists("tag", $croninfo)'); $cronTag = $croninfo['tag']; $config = SimpleSAML_Configuration::getConfig('module_aggregator2.php'); $config = $config->toArray(); foreach ($config as $id => $c) { if (!isset($c['cron.tag'])) { continue; } if ($c['cron.tag'] !== $cronTag) { continue; } try { $a = sspmod_aggregator2_Aggregator::getAggregator($id); $a->updateCache(); } catch (Exception $e) { $croninfo['summary'][] = 'Error during aggregator2 cacheupdate: ' . $e->getMessage(); } } }
<?php if (!isset($_REQUEST['id'])) { throw new SimpleSAML_Error_BadRequest('Missing required id-parameter.'); } $id = (string) $_REQUEST['id']; $aggregator = sspmod_aggregator2_Aggregator::getAggregator($id); $xml = $aggregator->getMetadata(); header('Content-Type: application/samlmetadata+xml'); header('Content-Length: ' . strlen($xml)); /* * At this point, if the ID was forged, getMetadata() would * have failed to find a valid metadata set, so we can trust it. */ header('Content-Disposition: filename=' . $id . '.xml'); echo $xml;