font.py (4367B)
1 import os, sys 2 from base64 import decodebytes 3 4 from wptserve.utils import isomorphic_decode 5 import importlib 6 subresource = importlib.import_module("common.security-features.subresource.subresource") 7 8 9 def generate_payload(request, server_data): 10 data = (u'{"headers": %(headers)s}') % server_data 11 if b"id" in request.GET: 12 request.server.stash.put(request.GET[b"id"], data) 13 # Simple base64 encoded .tff font 14 return decodebytes(b"AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW" 15 b"QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA" 16 b"AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx" 17 b"QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA" 18 b"ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm" 19 b"1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z" 20 b"dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA" 21 b"AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA" 22 b"AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA" 23 b"AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA" 24 b"AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg" 25 b"kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg" 26 b"/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA" 27 b"AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA" 28 b"BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA" 29 b"AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA" 30 b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA" 31 b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 32 b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 33 b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 34 b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 35 b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 36 b"AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA" 37 b"ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx" 38 b"AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M" 39 b"fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh" 40 b"FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA" 41 b"4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC" 42 b"AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA" 43 b"AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE" 44 b"CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA" 45 b"EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD" 46 b"AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA" 47 b"AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA" 48 b"aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE" 49 b"NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA" 50 b"ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ" 51 b"AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A" 52 b"MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm" 53 b"tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW" 54 b"AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX" 55 b"JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA" 56 b"AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA" 57 b"AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4" 58 b"Lm0AAAAAxTgubQ==") 59 60 def generate_report_headers_payload(request, server_data): 61 stashed_data = request.server.stash.take(request.GET[b"id"]) 62 return stashed_data 63 64 def main(request, response): 65 handler = lambda data: generate_payload(request, data) 66 content_type = b'application/x-font-truetype' 67 68 if b"report-headers" in request.GET: 69 handler = lambda data: generate_report_headers_payload(request, data) 70 content_type = b'application/json' 71 72 subresource.respond(request, 73 response, 74 payload_generator = handler, 75 content_type = content_type, 76 access_control_allow_origin = b"*")