list2form : gestion des erreurs et des petits fichiers (merci cgi.py…)
[progfou.git] / renater / renater-metadata.py
CommitLineData
246fe8bb
P
1#!/usr/bin/python3
2# -*- coding: utf-8 -*-
3# Debian-Depends: python3 python3-lxml
4"""
5Outil pour extraire des metadonnées de la Fédération RENATER
6
7Copyright : Agence universitaire de la Francophonie
8Licence : GNU General Public Licence, version 2
9Auteur : Progfou <jean-christophe.andre@auf.org>
10Date de création : 9 décembre 2015
11"""
12
13#RENATER_METADATA_URL = "http://federation.renater.fr/renater/renater-metadata.xml"
14RENATER_METADATA_URL = "http://federation.renater.fr/renater/sps-renater-metadata.xml"
15
16XMLNS_SAML20 = "{urn:oasis:names:tc:SAML:2.0:metadata}"
17
18import sys
19import urllib.request
20from lxml import etree
21
22if len(sys.argv) != 2:
23 print("Usage : {0} <service-provider-ID>".format(*sys.argv))
24 sys.exit(1)
25sp_id = sys.argv[1]
26
27metadata = urllib.request.urlopen(RENATER_METADATA_URL)
28tree = etree.parse(metadata)
29root = tree.getroot()
30
31sp_path = "EntityDescriptor[@entityID='{}']".format(sp_id)
32child = root.find(XMLNS_SAML20 + sp_path)
33if child is None:
34 print("Non trouvé.")
35 sys.exit(2)
36
9f1535ec
P
37s = etree.tostring(child, encoding='unicode',
38 pretty_print=True, with_tail=False)
39# compatibilité Python 3.1 (Debian Squeeze)
40if type(s) == bytes:
41 s = str(s, 'utf16')
42
43print(s)
246fe8bb 44sys.exit(0)