Outil pour extraire des metadonnées de la fédération RENATER
authorProgfou <jean-christophe.andre@auf.org>
Wed, 9 Dec 2015 19:53:15 +0000 (14:53 -0500)
committerProgfou <jean-christophe.andre@auf.org>
Wed, 9 Dec 2015 19:53:15 +0000 (14:53 -0500)
renater/renater-metadata.py [new file with mode: 0755]

diff --git a/renater/renater-metadata.py b/renater/renater-metadata.py
new file mode 100755 (executable)
index 0000000..28df693
--- /dev/null
@@ -0,0 +1,39 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Debian-Depends: python3 python3-lxml
+"""
+Outil pour extraire des metadonnées de la Fédération RENATER
+
+Copyright : Agence universitaire de la Francophonie
+Licence : GNU General Public Licence, version 2
+Auteur : Progfou <jean-christophe.andre@auf.org>
+Date de création : 9 décembre 2015
+"""
+
+#RENATER_METADATA_URL = "http://federation.renater.fr/renater/renater-metadata.xml"
+RENATER_METADATA_URL = "http://federation.renater.fr/renater/sps-renater-metadata.xml"
+
+XMLNS_SAML20 = "{urn:oasis:names:tc:SAML:2.0:metadata}"
+
+import sys
+import urllib.request
+from lxml import etree
+
+if len(sys.argv) != 2:
+    print("Usage : {0} <service-provider-ID>".format(*sys.argv))
+    sys.exit(1)
+sp_id = sys.argv[1]
+
+metadata = urllib.request.urlopen(RENATER_METADATA_URL)
+tree = etree.parse(metadata)
+root = tree.getroot()
+
+sp_path = "EntityDescriptor[@entityID='{}']".format(sp_id)
+child = root.find(XMLNS_SAML20 + sp_path)
+if child is None:
+    print("Non trouvé.")
+    sys.exit(2)
+
+print(etree.tostring(child, encoding='unicode',
+                                pretty_print=True, with_tail=False))
+sys.exit(0)