summaryrefslogtreecommitdiff
path: root/test/modules/http2/htdocs
diff options
context:
space:
mode:
Diffstat (limited to 'test/modules/http2/htdocs')
-rw-r--r--test/modules/http2/htdocs/cgi/echo.py3
-rw-r--r--test/modules/http2/htdocs/cgi/echohd.py24
-rw-r--r--test/modules/http2/htdocs/cgi/env.py35
-rw-r--r--test/modules/http2/htdocs/cgi/hecho.py29
-rw-r--r--test/modules/http2/htdocs/cgi/mnot164.py31
-rw-r--r--test/modules/http2/htdocs/cgi/necho.py40
-rw-r--r--test/modules/http2/htdocs/cgi/upload.py62
7 files changed, 156 insertions, 68 deletions
diff --git a/test/modules/http2/htdocs/cgi/echo.py b/test/modules/http2/htdocs/cgi/echo.py
index 58d811c42d..c9083e1d53 100644
--- a/test/modules/http2/htdocs/cgi/echo.py
+++ b/test/modules/http2/htdocs/cgi/echo.py
@@ -1,5 +1,6 @@
#!/usr/bin/env python3
-import sys, cgi, os
+import os, sys
+import multipart
status = '200 Ok'
diff --git a/test/modules/http2/htdocs/cgi/echohd.py b/test/modules/http2/htdocs/cgi/echohd.py
index 371ae8b0f7..2a138cd844 100644
--- a/test/modules/http2/htdocs/cgi/echohd.py
+++ b/test/modules/http2/htdocs/cgi/echohd.py
@@ -1,11 +1,25 @@
#!/usr/bin/env python3
-import cgi, os
-import cgitb; cgitb.enable()
+import os, sys
+import multipart
+from urllib import parse
-status = '200 Ok'
-form = cgi.FieldStorage()
-name = form.getvalue('name')
+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()
+name = forms['name'] if 'name' in forms else None
if name:
print("Status: 200")
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")
diff --git a/test/modules/http2/htdocs/cgi/hecho.py b/test/modules/http2/htdocs/cgi/hecho.py
index 5c1f79a302..fb9e330b60 100644
--- a/test/modules/http2/htdocs/cgi/hecho.py
+++ b/test/modules/http2/htdocs/cgi/hecho.py
@@ -1,18 +1,35 @@
#!/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()
-
+
# A nested FieldStorage instance holds the file
- name = form['name'].value
+ name = forms['name']
value = ''
try:
- value = form['value'].value
+ value = forms['value']
except KeyError:
value = os.environ.get("HTTP_"+name, "unset")
diff --git a/test/modules/http2/htdocs/cgi/mnot164.py b/test/modules/http2/htdocs/cgi/mnot164.py
index 0e5d107246..c29ccc185b 100644
--- a/test/modules/http2/htdocs/cgi/mnot164.py
+++ b/test/modules/http2/htdocs/cgi/mnot164.py
@@ -1,19 +1,26 @@
#!/usr/bin/env python3
+import os, sys
+import multipart
+from urllib import parse
-import cgi
-import cgitb; cgitb.enable()
-import os
-import sys
-try:
- form = cgi.FieldStorage()
- count = form['count'].value
- text = form['text'].value
-except KeyError:
- text="a"
- count=77784
+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
-count = int(count)
+
+forms, files = get_request_params()
+text = forms['text'] if 'text' in forms else "a"
+count = int(forms['count']) if 'count' in forms else 77784
print("Status: 200 OK")
print("Content-Type: text/html")
diff --git a/test/modules/http2/htdocs/cgi/necho.py b/test/modules/http2/htdocs/cgi/necho.py
index b9249b8969..78e2aad302 100644
--- a/test/modules/http2/htdocs/cgi/necho.py
+++ b/test/modules/http2/htdocs/cgi/necho.py
@@ -1,33 +1,49 @@
#!/usr/bin/env python3
-import cgi, os
import time
-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()
- count = form['count']
- text = form['text']
+ count = forms['count']
+ text = forms['text']
- waitsec = float(form['wait1'].value) if 'wait1' in form else 0.0
+ waitsec = float(forms['wait1']) if 'wait1' in forms else 0.0
if waitsec > 0:
time.sleep(waitsec)
- if int(count.value):
+ if int(count):
print("Status: 200")
print("""\
Content-Type: text/plain\n""")
- waitsec = float(form['wait2'].value) if 'wait2' in form else 0.0
+ waitsec = float(forms['wait2']) if 'wait2' in forms else 0.0
if waitsec > 0:
time.sleep(waitsec)
i = 0;
- for i in range(0, int(count.value)):
- print("%s" % (text.value))
+ for i in range(0, int(count)):
+ print("%s" % (text))
- waitsec = float(form['wait3'].value) if 'wait3' in form else 0.0
+ waitsec = float(forms['wait3']) if 'wait3' in forms else 0.0
if waitsec > 0:
time.sleep(waitsec)
@@ -37,7 +53,7 @@ Content-Type: text/plain\n""")
Content-Type: text/html\n
<html><body>
<p>No count was specified: %s</p>
- </body></html>""" % (count.value))
+ </body></html>""" % (count))
except KeyError:
print("Status: 200 Ok")
diff --git a/test/modules/http2/htdocs/cgi/upload.py b/test/modules/http2/htdocs/cgi/upload.py
index 2c8d63aa10..59fbb5866d 100644
--- a/test/modules/http2/htdocs/cgi/upload.py
+++ b/test/modules/http2/htdocs/cgi/upload.py
@@ -1,42 +1,58 @@
#!/usr/bin/env python3
-import cgi, os
-import cgitb
-cgitb.enable()
+import os
+import sys
+import multipart
+from urllib import parse
-status = '200 Ok'
-try: # Windows needs stdio set for binary mode.
+try: # Windows needs stdio set for binary mode.
import msvcrt
- msvcrt.setmode (0, os.O_BINARY) # stdin = 0
- msvcrt.setmode (1, os.O_BINARY) # stdout = 1
+
+ msvcrt.setmode(0, os.O_BINARY) # stdin = 0
+ msvcrt.setmode(1, os.O_BINARY) # stdout = 1
except ImportError:
pass
-form = cgi.FieldStorage()
+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'
# Test if the file was uploaded
-if 'file' in form:
- fileitem = form['file']
+if 'file' in files:
+ fitem = files['file']
# strip leading path from file name to avoid directory traversal attacks
- fn = os.path.basename(fileitem.filename)
- f = open(('%s/files/%s' % (os.environ["DOCUMENT_ROOT"], fn)), 'wb');
- f.write(fileitem.file.read())
- f.close()
- message = "The file %s was uploaded successfully" % (fn)
+ fname = fitem.filename
+ fpath = f'{os.environ["DOCUMENT_ROOT"]}/files/{fname}'
+ fitem.save_as(fpath)
+ message = "The file %s was uploaded successfully" % (fname)
print("Status: 201 Created")
print("Content-Type: text/html")
- print("Location: %s://%s/files/%s" % (os.environ["REQUEST_SCHEME"], os.environ["HTTP_HOST"], fn))
+ print("Location: %s://%s/files/%s" % (os.environ["REQUEST_SCHEME"], os.environ["HTTP_HOST"], fname))
print("")
print("<html><body><p>%s</p></body></html>" % (message))
-
-elif 'remove' in form:
- remove = form['remove'].value
+
+elif 'remove' in forms:
+ remove = forms['remove']
try:
- fn = os.path.basename(remove)
- os.remove('./files/' + fn)
- message = 'The file "' + fn + '" was removed successfully'
+ fname = os.path.basename(remove)
+ os.remove('./files/' + fname)
+ message = 'The file "' + fname + '" was removed successfully'
except OSError as e:
- message = 'Error removing ' + fn + ': ' + e.strerror
+ message = 'Error removing ' + fname + ': ' + e.strerror
status = '404 File Not Found'
print("Status: %s" % (status))
print("""