Source code

Revision control

Copy as Markdown

Other Tools

import json
SUBDOMAIN_TUPLE_TO_ALLOWED_ORIGINS_MAP = {
("", "web-platform"): [],
("www", "web-platform"): [
{
"scriptOrigin": "https://web-platform.test",
"contextOrigin": ["https://web-platform.test"],
},
{
"scriptOrigin": "https://www.web-platform.test",
"contextOrigin": "*",
},
],
("www1", "web-platform"): [
{
"scriptOrigin": [
],
"contextOrigin": "https://web-platform.test",
},
{
"scriptOrigin": "https://www.web-platform.test",
"contextOrigin": ["*"],
},
],
("www2", "web-platform"): [],
("", "not-web-platform"): [],
("www", "not-web-platform"): [],
("www1", "not-web-platform"): [],
("www2", "not-web-platform"): [],
}
def get_host(request):
return request.url_parts.netloc.split(":")[0]
def get_port(request):
if len(request.url_parts.netloc.split(":")) > 1:
return request.url_parts.netloc.split(":")[1]
return 0
def get_subdomain_tuple(request):
host = get_host(request)
host_list = host.split(".")
if len(host_list) == 0 or len(host_list) > 3:
raise ValueError("Invalid host " + host)
if len(host_list) == 1:
return ("", host_list[0])
return (host_list[0], host_list[1])
def get_allowed_origins(request):
subdomain_tuple = get_subdomain_tuple(request)
origin_list = SUBDOMAIN_TUPLE_TO_ALLOWED_ORIGINS_MAP[subdomain_tuple]
origins_string = json.dumps(origin_list)
test_with_port = ".test:" + str(get_port(request))
origins_with_ports = origins_string.replace(".test", test_with_port)
return origins_with_ports
def get_json(request, response):
response.status = (200, b"OK")
response.headers.set(b"Content-Type", b"application/json")
response.headers.set(b"Access-Control-Allow-Origin", b"*")
response.content = get_allowed_origins(request)