Skip to content
Snippets Groups Projects
Commit 116fa91f authored by Martin van Es's avatar Martin van Es
Browse files

Equalize variables between server and proxy

parent 7df4d4f5
No related branches found
No related tags found
No related merge requests found
...@@ -87,31 +87,31 @@ def serve_all(realm): ...@@ -87,31 +87,31 @@ def serve_all(realm):
@app.route('/<realm>/entities/<path:eid>', @app.route('/<realm>/entities/<path:eid>',
methods=['GET']) methods=['GET'])
def serve_one(realm, eid): def serve_one(realm, eid):
entityID = unquote(eid) entity = unquote(eid)
if entityID[:6] == "{sha1}": if entity[:6] == "{sha1}":
entityID = entityID[6:] sha1 = entity[6:]
else: else:
entityID = hasher(entityID) sha1 = hasher(entity)
response = Response() response = Response()
response.headers['Content-Type'] = "application/samlmetadata+xml" response.headers['Content-Type'] = "application/samlmetadata+xml"
response.headers['Content-Disposition'] = "filename = \"metadata.xml\"" response.headers['Content-Disposition'] = "filename = \"metadata.xml\""
cached[realm] = cached.get(realm, {}) cached[realm] = cached.get(realm, {})
if entityID in cached[realm]: if sha1 in cached[realm]:
if cached[realm][entityID].expires > datetime.now(tz.tzutc()): if cached[realm][sha1].expires > datetime.now(tz.tzutc()):
print(f"cache {entityID}") print(f"cache {sha1}")
max_age = int((cached[realm][entityID].expires - max_age = int((cached[realm][sha1].expires -
datetime.now(tz.tzutc())).total_seconds()) 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['Cache-Control'] = f"max-age={max_age}"
response.headers['Last-Modified'] = last_modified response.headers['Last-Modified'] = last_modified
response.data = cached[realm][entityID].md response.data = cached[realm][sha1].md
return response return response
print(f"request {entityID}") print(f"request {sha1}")
request = requests.get(f"{config[realm]['signer']}/{realm}" request = requests.get(f"{config[realm]['signer']}/{realm}"
f"/entities/{{sha1}}{entityID}") f"/entities/{{sha1}}{sha1}")
data = request.text data = request.text
last_modified = request.headers.get('Last-Modified', last_modified = request.headers.get('Last-Modified',
formatdate(timeval=None, formatdate(timeval=None,
...@@ -130,12 +130,13 @@ def serve_one(realm, eid): ...@@ -130,12 +130,13 @@ def serve_one(realm, eid):
cached_entity.valid_until) cached_entity.valid_until)
cached_entity.last_modified = last_modified cached_entity.last_modified = last_modified
if cached_entity.expires > datetime.now(tz.tzutc()): if cached_entity.expires > datetime.now(tz.tzutc()):
cached[realm][entityID] = cached_entity cached[realm][sha1] = cached_entity
max_age = int((cached_entity.expires - max_age = int((cached_entity.expires -
datetime.now(tz.tzutc())).total_seconds()) datetime.now(tz.tzutc())).total_seconds())
else: else:
raise KeyError raise KeyError
except Exception: except KeyError as e:
print(f" {sha1} {e}")
data = "No valid metadata\n" data = "No valid metadata\n"
max_age = 60 max_age = 60
response.headers['Content-type'] = "text/html" response.headers['Content-type'] = "text/html"
......
...@@ -182,9 +182,8 @@ class Realm: ...@@ -182,9 +182,8 @@ class Realm:
data.md = signed_xml data.md = signed_xml
else: else:
raise KeyError raise KeyError
except Exception as e: except KeyError as e:
print(sha1) print(f" {sha1} {e}")
print(f" {e}")
data.max_age = int((signed_entity.expires - data.max_age = int((signed_entity.expires -
datetime.now(tz.tzutc())).total_seconds()) datetime.now(tz.tzutc())).total_seconds())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment