diff --git a/mdproxy.py b/mdproxy.py index d4bf9cde18c44645fdef774d3f2402ca43dfbd3d..4d78f0af729c2a40c5e03f8255734fe5fabe82e4 100755 --- a/mdproxy.py +++ b/mdproxy.py @@ -87,31 +87,31 @@ def serve_all(realm): @app.route('/<realm>/entities/<path:eid>', methods=['GET']) def serve_one(realm, eid): - entityID = unquote(eid) - if entityID[:6] == "{sha1}": - entityID = entityID[6:] + entity = unquote(eid) + if entity[:6] == "{sha1}": + sha1 = entity[6:] else: - entityID = hasher(entityID) + sha1 = hasher(entity) response = Response() response.headers['Content-Type'] = "application/samlmetadata+xml" response.headers['Content-Disposition'] = "filename = \"metadata.xml\"" cached[realm] = cached.get(realm, {}) - if entityID in cached[realm]: - if cached[realm][entityID].expires > datetime.now(tz.tzutc()): - print(f"cache {entityID}") - max_age = int((cached[realm][entityID].expires - + if sha1 in cached[realm]: + if cached[realm][sha1].expires > datetime.now(tz.tzutc()): + print(f"cache {sha1}") + max_age = int((cached[realm][sha1].expires - datetime.now(tz.tzutc())).total_seconds()) - last_modified = cached[realm][entityID].last_modified + last_modified = cached[realm][sha1].last_modified response.headers['Cache-Control'] = f"max-age={max_age}" response.headers['Last-Modified'] = last_modified - response.data = cached[realm][entityID].md + response.data = cached[realm][sha1].md return response - print(f"request {entityID}") + print(f"request {sha1}") request = requests.get(f"{config[realm]['signer']}/{realm}" - f"/entities/{{sha1}}{entityID}") + f"/entities/{{sha1}}{sha1}") data = request.text last_modified = request.headers.get('Last-Modified', formatdate(timeval=None, @@ -130,12 +130,13 @@ def serve_one(realm, eid): cached_entity.valid_until) cached_entity.last_modified = last_modified if cached_entity.expires > datetime.now(tz.tzutc()): - cached[realm][entityID] = cached_entity + cached[realm][sha1] = cached_entity max_age = int((cached_entity.expires - datetime.now(tz.tzutc())).total_seconds()) else: raise KeyError - except Exception: + except KeyError as e: + print(f" {sha1} {e}") data = "No valid metadata\n" max_age = 60 response.headers['Content-type'] = "text/html" diff --git a/utils.py b/utils.py index 2ade1b63410ef8d752a675d99189e2ad3e5a727a..d584d7fdbac94e1f23e301b9eeac20ee6a2f3f5f 100755 --- a/utils.py +++ b/utils.py @@ -182,9 +182,8 @@ class Realm: data.md = signed_xml else: raise KeyError - except Exception as e: - print(sha1) - print(f" {e}") + except KeyError as e: + print(f" {sha1} {e}") data.max_age = int((signed_entity.expires - datetime.now(tz.tzutc())).total_seconds())