From cf82d4b355cec8e18bb9c3c25b5b2c867aa8795c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20=C3=85kre=20Solberg?= <andreas.solberg@uninett.no>
Date: Tue, 22 Sep 2009 06:40:00 +0000
Subject: [PATCH] Add links to metadata entries in the federation tab to view
 the raw content of the remote metadata entries...

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1765 44740490-163a-0410-bde0-09ae8108e29a
---
 .../templates/frontpage_federation.tpl.php    | 33 +++++++++++++++--
 modules/core/templates/show_metadata.tpl.php  | 18 ++++++++++
 modules/core/www/show_metadata.php            | 36 +++++++++++++++++++
 3 files changed, 85 insertions(+), 2 deletions(-)
 create mode 100644 modules/core/templates/show_metadata.tpl.php
 create mode 100644 modules/core/www/show_metadata.php

diff --git a/modules/core/templates/frontpage_federation.tpl.php b/modules/core/templates/frontpage_federation.tpl.php
index ba809c07f..874de7ec7 100644
--- a/modules/core/templates/frontpage_federation.tpl.php
+++ b/modules/core/templates/frontpage_federation.tpl.php
@@ -75,12 +75,15 @@ foreach($this->data['metaentries']['remote'] AS $setkey => $set) {
 	echo '<ul>';
 	foreach($set AS $entry) {
 		echo '<li>';
+		echo ('<a href="' . 
+			SimpleSAML_Module::getModuleURL('core/show_metadata.php?entityid=' . urlencode($entry['entityid']) . '&amp;set=' . urlencode($setkey) ) . 
+			'">');
 		if (array_key_exists('name', $entry)) {
 			echo $this->getTranslation(SimpleSAML_Utilities::arrayize($entry['name'], 'en'));
 		} else {
 			echo $entry['entityid'];
 		}
-		
+		echo '</a>';
 		if (array_key_exists('expire', $entry)) {
 			if ($entry['expire'] < $now) {
 				echo('<span style="color: #500; font-weight: bold"> (expired ' . number_format(($now - $entry['expire'])/3600, 1) . ' hours ago)</span>');
@@ -112,13 +115,39 @@ foreach($this->data['metaentries']['remote'] AS $setkey => $set) {
 ?>
 </ul>
 
+<?php
 
+if ($this->data['isadmin']) {
 
+?>
 
+<fieldset class="fancyfieldset"><legend>Lookup metadata</legend>
+	<form action="<?php echo SimpleSAML_Module::getModuleURL('core/show_metadata.php'); ?>" method="get" >
+		<p style="margin: 1em 2em ">Look up metadata for entity:
+			<select name="set">
+				
+				<?php
+					if (is_array($this->data['metaentries']['remote']) && count($this->data['metaentries']['remote']) > 0) {
+						foreach($this->data['metaentries']['remote'] AS $setkey => $set) {
+							echo '<option value="' . htmlspecialchars($setkey) . '">' . $this->t(mtype($setkey)) . '</option>';
+						}
+					}
+				
+				?>
+				
+				
+			</select>
+			<input type="text" name="entityid">
+			<input type="submit" value="Lookup">
+		</p>
+	</form>
+</fieldset>
 
+<?php
 
+}
 
-
+?>
 
 
 
diff --git a/modules/core/templates/show_metadata.tpl.php b/modules/core/templates/show_metadata.tpl.php
new file mode 100644
index 000000000..bdef18d8a
--- /dev/null
+++ b/modules/core/templates/show_metadata.tpl.php
@@ -0,0 +1,18 @@
+<?php 
+
+
+
+$this->includeAtTemplateBase('includes/header.php'); 
+	
+
+echo('<pre style="font-size: 110%">');
+
+echo(htmlentities(var_export($this->data['m'])));
+
+echo('</pre>');
+
+echo('<p>[ <a href="' . $this->data['backlink'] . '"> back </a> ]</p>');
+
+
+$this->includeAtTemplateBase('includes/footer.php'); 
+
diff --git a/modules/core/www/show_metadata.php b/modules/core/www/show_metadata.php
new file mode 100644
index 000000000..e7647d2e4
--- /dev/null
+++ b/modules/core/www/show_metadata.php
@@ -0,0 +1,36 @@
+<?php
+
+
+
+/* Load simpleSAMLphp, configuration */
+$config = SimpleSAML_Configuration::getInstance();
+$session = SimpleSAML_Session::getInstance();
+
+SimpleSAML_Utilities::requireAdmin();
+
+
+if (!array_key_exists('entityid', $_REQUEST))
+	throw new Exception('required parameter [entityid] missing');
+if (!array_key_exists('set', $_REQUEST))
+	throw new Exception('required parameter [set] missing');
+if (!in_array($_REQUEST['set'], array('saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote')))
+	throw new Exception('Invalid set');
+
+
+$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
+
+$m = $metadata->getMetadata($_REQUEST['entityid'], $_REQUEST['set']);
+
+// echo('<pre>'); print_r($m);
+// exit;
+
+
+$t = new SimpleSAML_XHTML_Template($config, 'core:show_metadata.tpl.php');
+$t->data['pageid'] = 'show_metadata';
+$t->data['header'] = 'simpleSAMLphp Show Metadata';
+$t->data['backlink'] = SimpleSAML_Module::getModuleURL('core/frontpage_federation.php');
+$t->data['m'] = $m;
+
+
+$t->show();
+
-- 
GitLab