blob: 7a8d5a9602578b2e04781fbd523e7f1258936279 [file] [log] [blame]
#!/usr/bin/env python3
import json
import os
import sys
file = __file__.split(':/cygwin')[-1]
http_root = os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(file))))
sys.path.insert(0, http_root)
from urllib.parse import unquote, unquote_to_bytes
query = os.environ.get('QUERY_STRING', '')
split_query = {}
for pair in query.split('&'):
split_query[unquote(pair.split('=')[0])] = '='.join(pair.split('=')[1:])
sys.stdout.write('Content-Type: text/html\r\n')
origin = split_query.get('origin', 'none')
if origin != 'none' and '%00' not in origin:
sys.stdout.write('Access-Control-Allow-Origin: ')
sys.stdout.flush()
sys.stdout.buffer.write(unquote_to_bytes(origin))
sys.stdout.write('\r\n')
headers = split_query.get('headers')
if headers:
sys.stdout.write('Access-Control-Allow-Headers: ')
sys.stdout.flush()
sys.stdout.buffer.write(unquote_to_bytes(headers))
sys.stdout.write('\r\n')
methods = split_query.get('methods')
if methods:
sys.stdout.write('Access-Control-Allow-Methods: ')
sys.stdout.flush()
sys.stdout.buffer.write(unquote_to_bytes(methods))
sys.stdout.write('\r\n')
sys.stdout.write('\r\n')
headers = {}
headers['get_value'] = unquote(split_query.get('get_value', ''))
for headername, headervalue in os.environ.items():
if headername in ['CONTENT_TYPE', 'CONTENT_LENGTH']:
headers[headername.lower().replace('_', '-')] = headervalue
if not headername.startswith('HTTP_'):
continue
headers[headername[5:].lower().replace('_', '-')] = headervalue
sys.stdout.write(json.dumps(headers))