diff options
Diffstat (limited to 'test/modules/http2/htdocs/cgi/env.py')
-rw-r--r-- | test/modules/http2/htdocs/cgi/env.py | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/test/modules/http2/htdocs/cgi/env.py b/test/modules/http2/htdocs/cgi/env.py index 5c9c0b1adb..3af576496a 100644 --- a/test/modules/http2/htdocs/cgi/env.py +++ b/test/modules/http2/htdocs/cgi/env.py @@ -1,28 +1,45 @@ #!/usr/bin/env python3 -import cgi, os -import cgitb; cgitb.enable() +import os, sys +import multipart +from urllib import parse + + +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() status = '200 Ok' try: - form = cgi.FieldStorage() - input = form['name'] + ename = forms['name'] # Test if the file was uploaded - if input.value is not None: - val = os.environ[input.value] if input.value in os.environ else "" + if ename is not None: + val = os.environ[ename] if ename in os.environ else "" print("Status: 200") print("""\ Content-Type: text/plain\n""") - print("{0}={1}".format(input.value, val)) + print(f"{ename}={val}") else: print("Status: 400 Parameter Missing") print("""\ Content-Type: text/html\n <html><body> - <p>No name was specified: %s</p> - </body></html>""" % (count.value)) + <p>No name was specified: name</p> + </body></html>""") except KeyError: print("Status: 200 Ok") |