diff --git a/mdserver.py b/mdserver.py index 86af27fde3d107647d0e1cd5c90165fdb230fb1f..a1338796428bab63e943c2ce075c0a23351e42f7 100755 --- a/mdserver.py +++ b/mdserver.py @@ -4,7 +4,7 @@ import copy import signal from lxml import etree as ET -from flask import Flask +from flask import Flask, Response from urllib.parse import unquote from dateutil import parser, tz from datetime import datetime @@ -34,13 +34,14 @@ def sign(eid): else: sha1 = hasher(entityID) + response = Response() + response.headers['Content-Type'] = "application/samlmetadata+xml" + if sha1 in signed: signed_entity = signed[sha1] if signed_entity.valid_until > datetime.now(tz.tzutc()): - print(f"serve {sha1}") - return signed[sha1].md - - if sha1 in idps: + response.data = signed[sha1].md + elif sha1 in idps: try: print(f"sign {sha1}") valid_until = idps[sha1].valid_until @@ -51,14 +52,19 @@ def sign(eid): signed_entity.md = signed_xml signed_entity.valid_until = idps[sha1].valid_until signed[sha1] = signed_entity - return signed_xml + response.data = signed_xml except Exception as e: print(sha1) print(f" {e}") traceback.print_exc() + else: + response.data = "No valid metadata\n" + response.headers['Content-type'] = "text/html" + response.status = 404 + return response - return "No valid metadata\n", 404 - + print(f"serve {sha1}") + return response def read_metadata(signum, frm): print("\n--- SIGHUP ---")