PHP Classes

File: web/SSO/modules/metarefresh/bin/metarefresh.php

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/SSO/modules/metarefresh/bin/metarefresh.php   Download  
File: web/SSO/modules/metarefresh/bin/metarefresh.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 4,722 bytes
 

Contents

Class file image Download
#!/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");
}