summaryrefslogtreecommitdiffstats
path: root/debian/perl-framework/t/htdocs/modules/h2/upload.pl
diff options
context:
space:
mode:
Diffstat (limited to 'debian/perl-framework/t/htdocs/modules/h2/upload.pl')
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/upload.pl47
1 files changed, 47 insertions, 0 deletions
diff --git a/debian/perl-framework/t/htdocs/modules/h2/upload.pl b/debian/perl-framework/t/htdocs/modules/h2/upload.pl
new file mode 100755
index 0000000..71880f1
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/h2/upload.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+import cgi, os
+import cgitb; cgitb.enable()
+
+status = '200 Ok'
+
+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
+except ImportError:
+ pass
+
+form = cgi.FieldStorage()
+
+# Test if the file was uploaded
+if 'file' in form:
+ # A nested FieldStorage instance holds the file
+ fileitem = form['file']
+
+ # strip leading path from file name to avoid directory traversal attacks
+ fn = os.path.basename(fileitem.filename)
+ open('./files/' + fn, 'wb').write(fileitem.file.read())
+ message = 'The file "' + fn + '" was uploaded successfully'
+
+elif 'remove' in form:
+ remove = form['remove'].value
+ try:
+ fn = os.path.basename(remove)
+ os.remove('./files/' + fn)
+ message = 'The file "' + fn + '" was removed successfully'
+ except OSError, e:
+ message = 'Error removing ' + fn + ': ' + e.strerror
+ status = '404 File Not Found'
+else:
+ message = '''\
+ Upload File<form method="POST" enctype="multipart/form-data">
+ <input type="file" name="file">
+ <button type="submit">Upload</button></form>
+ '''
+
+print "Status: %s" % (status,)
+print """\
+ Content-Type: text/html\n
+ <html><body>
+ <p>%s</p>
+ </body></html>""" % (message,)