From 822c6289308e67f926265cd84f2f14a975564988 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Thu, 21 Mar 2013 12:13:28 +0100 Subject: [PATCH] pffedportal: create_loginhtml.py script --- virtualenv/pffedportal/create_loginhtml.py | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 virtualenv/pffedportal/create_loginhtml.py diff --git a/virtualenv/pffedportal/create_loginhtml.py b/virtualenv/pffedportal/create_loginhtml.py new file mode 100755 index 0000000..aec7662 --- /dev/null +++ b/virtualenv/pffedportal/create_loginhtml.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python + +''' +output a merge of idp + geo informations from discojuice +''' + +# initialise django environnement for pffedportal +# (the script is launched into the pffedportal directory) +import os +os.environ['DJANGO_SETTINGS_MODULE'] = "settings" + +from authentic2.saml.common import get_idp_list_sorted +import sys +import json +import math +import urllib + +def geo2idp(filename): + idps = {} + try: + f = open(filename) + except IOError, e: + print >> sys.stderr, e + return {} + try: + idp_list = json.load(f) + except ValueError, e: + f.close() + print >> sys.stderr, 'reading %s: %s' % (filename, e) + return {} + f.close() + if not idp_list or not isinstance(idp_list, list): + print >> sys.stderr, '%s does not contain a list' % filename + return {} + for idp in idp_list: + try: + idps[idp['entityID']] = idp + except Exception, e: + print >> sys.stderr, 'bad geo information in %s (%s)' % (filename, idp) + return idps + +geo_idps = {} +for geofile in sys.argv[1:]: + geo_idps.update(geo2idp(geofile)) + + +print """{% extends "login0.html" %} +{% block idps %} +""" +n = 0 +for idp in get_idp_list_sorted(): + n += 1 + entity_id = idp['entity_id'] + name = idp['name'] + geo = geo_idps.get(entity_id, {}).get('geo', { 'lat': 47.0 + 2.0*math.sin(n), 'lon': 2.5 + 3.0*math.cos(n) }) + href = '/sso?' + urllib.urlencode([('entity_id', entity_id)]) + li = u'
  • %s
  • ' % \ + (href, geo['lat'], geo['lon'], entity_id, name, name) + print li.encode("utf-8") + +print "{% endblock %}" +