| Viewing file:  metarefresh.php (4.61 KB)      -rwxr-xr-x Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#!/usr/bin/env php<?php
 
 /*
 * This script can be used to generate metadata for simpleSAMLphp
 * based on an XML metadata file.
 */
 
 
 /* This is the base directory of the simpleSAMLphp installation. */
 $baseDir = dirname(dirname(dirname(dirname(__FILE__))));
 
 /* Add library autoloader. */
 require_once($baseDir . '/lib/_autoload.php');
 
 SimpleSAML_Session::useTransientSession(); /* No need to try to create a session here. */
 
 if(!SimpleSAML_Module::isModuleEnabled('metarefresh')) {
 echo("You need to enable the metarefresh module before this script can be used.\n");
 echo("You can enable it by running the following command:\n");
 echo('  echo >"' . $baseDir . '/modules/metarefresh/enable' . "\"\n");
 exit(1);
 }
 
 /* Initialize the configuration. */
 SimpleSAML_Configuration::setConfigDir($baseDir . '/config');
 
 /* $outputDir contains the directory we will store the generated metadata in. */
 $outputDir = $baseDir . '/metadata-generated';
 
 
 /* $toStdOut is a boolean telling us wheter we will print the output to stdout instead
 * of writing it to files in $outputDir.
 */
 $toStdOut = FALSE;
 
 /* $validateFingerprint contains the fingerprint of the certificate which should have been used
 * to sign the EntityDescriptor in the metadata, or NULL if fingerprint validation shouldn't be
 * done.
 */
 $validateFingerprint = NULL;
 
 
 /* This variable contains the files we will parse. */
 $files = array();
 
 /* Parse arguments. */
 
 $progName = array_shift($argv);
 
 foreach($argv as $a) {
 if(strlen($a) === 0) {
 continue;
 }
 
 if($a[0] !== '-') {
 /* Not an option. Assume that it is a file we should parse. */
 $files[] = $a;
 continue;
 }
 
 if(strpos($a, '=') !== FALSE) {
 $p = strpos($a, '=');
 $v = substr($a, $p + 1);
 $a = substr($a, 0, $p);
 } else {
 $v = NULL;
 }
 
 /* Map short options to long options. */
 $shortOptMap = array(
 '-h' => '--help',
 '-o' => '--out-dir',
 '-s' => '--stdout',
 );
 if(array_key_exists($a, $shortOptMap)) {
 $a = $shortOptMap[$a];
 }
 
 switch($a) {
 case '--validate-fingerprint':
 if($v === NULL || strlen($v) === 0) {
 echo('The --validate-fingerprint option requires an parameter.' . "\n");
 echo('Please run `' . $progName . ' --help` for usage information.' . "\n");
 exit(1);
 }
 $validateFingerprint = $v;
 break;
 case '--help':
 printHelp();
 exit(0);
 case '--out-dir':
 if($v === NULL || strlen($v) === 0) {
 echo('The --out-dir option requires an parameter.' . "\n");
 echo('Please run `' . $progName . ' --help` for usage information.' . "\n");
 exit(1);
 }
 $outputDir =   $baseDir . ($v[0] == '/' ? $v : '/' .  $v);
 break;
 case '--stdout':
 $toStdOut = TRUE;
 break;
 default:
 echo('Unknown option: ' . $a . "\n");
 echo('Please run `' . $progName . ' --help` for usage information.' . "\n");
 exit(1);
 }
 }
 
 if(count($files) === 0) {
 echo($progName . ': Missing input files. Please run `' . $progName . ' --help` for usage information.' . "\n");
 exit(1);
 }
 
 
 
 
 /* The metadata global variable will be filled with the metadata we extract. */
 $metaloader = new sspmod_metarefresh_MetaLoader();
 
 foreach($files as $f) {
 $source = array('src' => $f);
 if (isset($validateFingerprint)) $source['validateFingerprint'] = $validateFingerprint;
 $metaloader->loadSource($source);
 }
 
 if($toStdOut) {
 $metaloader->dumpMetadataStdOut();
 } else {
 $metaloader->writeMetadataFiles($outputDir);
 }
 
 exit(0);
 
 /**
 * This function prints the help output.
 */
 function printHelp() {
 global $progName;
 
 /*   '======================================================================' */
 echo('Usage: ' . $progName . ' [options] [files]' . "\n");
 echo("\n");
 echo('This program parses a SAML metadata files and output pieces that can' . "\n");
 echo('be added to the metadata files in metadata/.' . "\n");
 echo("\n");
 echo('Options:' . "\n");
 echo(' --validate-fingerprint=<FINGERPRINT>' . "\n");
 echo('                              Check the signature of the metadata,' . "\n");
 echo('                              and check the fingerprint of the' . "\n");
 echo('                              certificate against <FINGERPRINT>.' . "\n");
 echo(' -h, --help                   Print this help.' . "\n");
 echo(' -o=<DIR>, --out-dir=<DIR>    Write the output to this directory. The' . "\n");
 echo('                              default directory is metadata-generated/.' . "\n");
 echo('                              Path will be relative to the simpleSAMLphp' . "\n");
 echo('                              base directory.' . "\n");
 echo(' -s, --stdout                 Write the output to stdout instead of' . "\n");
 echo('                              seperate files in the output directory.' . "\n");
 echo("\n");
 }
 
 
 
 
 
 
 |