Skip to content
Snippets Groups Projects
Commit df5a47fe authored by Olav Morken's avatar Olav Morken
Browse files

metarefresh: Add support for 'serialize' metadata format.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1453 44740490-163a-0410-bde0-09ae8108e29a
parent 80cd321c
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,12 @@ $config = array( ...@@ -20,6 +20,12 @@ $config = array(
), ),
'expireAfter' => 60*60*24*4, // Maximum 4 days cache time. 'expireAfter' => 60*60*24*4, // Maximum 4 days cache time.
'outputDir' => 'metadata/metadata-kalmar-consuming/', 'outputDir' => 'metadata/metadata-kalmar-consuming/',
/*
* Which output format the metadata should be saved as.
* Can be 'flatfile' or 'serialize'. 'flatfile' is the default.
*/
'outputFormat' => 'flatfile',
), ),
), ),
); );
......
...@@ -41,7 +41,16 @@ function metarefresh_hook_cron(&$croninfo) { ...@@ -41,7 +41,16 @@ function metarefresh_hook_cron(&$croninfo) {
$outputDir = $set->getString('outputDir'); $outputDir = $set->getString('outputDir');
$outputDir = $config->resolvePath($outputDir); $outputDir = $config->resolvePath($outputDir);
$metaloader->writeMetadataFiles($outputDir); $outputFormat = $set->getValueValidate('outputFormat', array('flatfile', 'serialize'), 'flatfile');
switch ($outputFormat) {
case 'flatfile':
$metaloader->writeMetadataFiles($outputDir);
break;
case 'serialize':
$metaloader->writeMetadataSerialize($outputDir);
break;
}
} }
} catch (Exception $e) { } catch (Exception $e) {
......
...@@ -184,6 +184,49 @@ class sspmod_metarefresh_MetaLoader { ...@@ -184,6 +184,49 @@ class sspmod_metarefresh_MetaLoader {
} }
} }
/**
* Save metadata for loading with the 'serialize' metadata loader.
*
* @param string $outputDir The directory we should save the metadata to.
*/
public function writeMetadataSerialize($outputDir) {
assert('is_string($outputDir)');
$metaHandler = new SimpleSAML_Metadata_MetaDataStorageHandlerSerialize(array('directory' => $outputDir));
/* First we add all the metadata entries to the metadata handler. */
foreach ($this->metadata as $set => $elements) {
foreach ($elements as $m) {
$entityId = $m['metadata']['entityid'];
SimpleSAML_Logger::debug('metarefresh: Add metadata entry ' .
var_export($entityId, TRUE) . ' in set ' . var_export($set, TRUE) . '.');
$metaHandler->saveMetadata($entityId, $set, $m['metadata']);
}
}
/* Then we delete old entries which should no longer exist. */
$ct = time();
foreach ($metaHandler->getMetadataSets() as $set) {
foreach ($metaHandler->getMetadataSet($set) as $entityId => $metadata) {
if (!array_key_exists('expire', $metadata)) {
SimpleSAML_Logger::warning('metarefresh: Metadata entry without expire ' .
'timestamp: ' . var_export($entityId, TRUE) . ' in set ' .
var_export($set, TRUE) . '.');
}
if ($metadata['expire'] > $ct) {
continue;
}
SimpleSAML_Logger::debug('metarefresh: Delete expired metadata entry ' .
var_export($entityId, TRUE) . ' in set ' . var_export($set, TRUE) . '.');
$metaHandler->deleteMetadata($entityId, $set);
}
}
}
private function getTime() { private function getTime() {
/* The current date, as a string. */ /* The current date, as a string. */
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment