diff options
author | Senthil Kumaran <senthil@uthcode.com> | 2012-06-03 16:15:54 +0800 |
---|---|---|
committer | Senthil Kumaran <senthil@uthcode.com> | 2012-06-03 16:15:54 +0800 |
commit | 1251fafcc57091d952bb1cc9b1e1a77f39c59b7b (patch) | |
tree | 9c769f7853d95b57d296f4220006d6aeb807cca5 | |
parent | c68e1368b52eb3b6b192593b988e882579827694 (diff) | |
download | cpython-git-1251fafcc57091d952bb1cc9b1e1a77f39c59b7b.tar.gz |
Issue 14989: http.server --cgi option can enable the CGI http server.
-rw-r--r-- | Doc/library/http.server.rst | 6 | ||||
-rw-r--r-- | Lib/http/server.py | 22 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 24 insertions, 7 deletions
diff --git a/Doc/library/http.server.rst b/Doc/library/http.server.rst index d947ed2a5b..04ec746e2d 100644 --- a/Doc/library/http.server.rst +++ b/Doc/library/http.server.rst @@ -400,3 +400,9 @@ the previous example, this serves files relative to the current directory. :: Note that CGI scripts will be run with UID of user nobody, for security reasons. Problems with the CGI script will be translated to error 403. + +:class:`CGIHTTPRequestHandler` can be enabled in the command line by passing +the ``--cgi`` option.:: + + python -m http.server --cgi 8000 + diff --git a/Lib/http/server.py b/Lib/http/server.py index cb66f2b63c..c4ac703d2d 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -100,6 +100,8 @@ import sys import time import urllib.parse import copy +import argparse + # Default error message template DEFAULT_ERROR_MESSAGE = """\ @@ -1173,18 +1175,13 @@ class CGIHTTPRequestHandler(SimpleHTTPRequestHandler): def test(HandlerClass = BaseHTTPRequestHandler, - ServerClass = HTTPServer, protocol="HTTP/1.0"): + ServerClass = HTTPServer, protocol="HTTP/1.0", port=8000): """Test the HTTP request handler class. This runs an HTTP server on port 8000 (or the first command line argument). """ - - if sys.argv[1:]: - port = int(sys.argv[1]) - else: - port = 8000 server_address = ('', port) HandlerClass.protocol_version = protocol @@ -1200,4 +1197,15 @@ def test(HandlerClass = BaseHTTPRequestHandler, sys.exit(0) if __name__ == '__main__': - test(HandlerClass=SimpleHTTPRequestHandler) + parser = argparse.ArgumentParser() + parser.add_argument('--cgi', action='store_true', + help='Run as CGI Server') + parser.add_argument('port', action='store', + default=8000, type=int, + nargs='?', + help='Specify alternate port [default: 8000]') + args = parser.parse_args() + if args.cgi: + test(HandlerClass=CGIHTTPRequestHandler, port=args.port) + else: + test(HandlerClass=SimpleHTTPRequestHandler, port=args.port) @@ -10,6 +10,9 @@ What's New in Python 3.3.0 Beta 1? Library ------- +- Issue #14989: Make the CGI enable option to http.server available via command + line. + - Issue #14987: Add a missing import statement to inspect. - Issue #1079: email.header.decode_header now correctly parses all the examples |