mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Expose --bind argument for http.server, enable http.server to bind to a user
specified network interface. Patch contributed by Malte Swart. Addresses issue #17764. HG :Enter commit message. Lines beginning with 'HG:' are removed.
This commit is contained in:
parent
5642ff9d8e
commit
defe7f4c62
3 changed files with 21 additions and 5 deletions
|
@ -368,6 +368,15 @@ the previous example, this serves files relative to the current directory. ::
|
||||||
|
|
||||||
python -m http.server 8000
|
python -m http.server 8000
|
||||||
|
|
||||||
|
By default, server binds itself to all interfaces. To restrict it to bind to a
|
||||||
|
particular interface only, ``--bind ADDRESS`` argument can be used. For e.g, to
|
||||||
|
restrict the server to bind only to localhost. ::
|
||||||
|
|
||||||
|
python -m http.server 8000 --bind 127.0.0.1
|
||||||
|
|
||||||
|
.. versionadded:: 3.4
|
||||||
|
``--bind`` argument was introduced.
|
||||||
|
|
||||||
|
|
||||||
.. class:: CGIHTTPRequestHandler(request, client_address, server)
|
.. class:: CGIHTTPRequestHandler(request, client_address, server)
|
||||||
|
|
||||||
|
|
|
@ -1186,15 +1186,15 @@ class CGIHTTPRequestHandler(SimpleHTTPRequestHandler):
|
||||||
self.log_message("CGI script exited OK")
|
self.log_message("CGI script exited OK")
|
||||||
|
|
||||||
|
|
||||||
def test(HandlerClass = BaseHTTPRequestHandler,
|
def test(HandlerClass=BaseHTTPRequestHandler,
|
||||||
ServerClass = HTTPServer, protocol="HTTP/1.0", port=8000):
|
ServerClass=HTTPServer, protocol="HTTP/1.0", port=8000, bind=""):
|
||||||
"""Test the HTTP request handler class.
|
"""Test the HTTP request handler class.
|
||||||
|
|
||||||
This runs an HTTP server on port 8000 (or the first command line
|
This runs an HTTP server on port 8000 (or the first command line
|
||||||
argument).
|
argument).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
server_address = ('', port)
|
server_address = (bind, port)
|
||||||
|
|
||||||
HandlerClass.protocol_version = protocol
|
HandlerClass.protocol_version = protocol
|
||||||
httpd = ServerClass(server_address, HandlerClass)
|
httpd = ServerClass(server_address, HandlerClass)
|
||||||
|
@ -1212,12 +1212,16 @@ if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('--cgi', action='store_true',
|
parser.add_argument('--cgi', action='store_true',
|
||||||
help='Run as CGI Server')
|
help='Run as CGI Server')
|
||||||
|
parser.add_argument('--bind', '-b', default='', metavar='ADDRESS',
|
||||||
|
help='Specify alternate bind address '
|
||||||
|
'[default: all interfaces]')
|
||||||
parser.add_argument('port', action='store',
|
parser.add_argument('port', action='store',
|
||||||
default=8000, type=int,
|
default=8000, type=int,
|
||||||
nargs='?',
|
nargs='?',
|
||||||
help='Specify alternate port [default: 8000]')
|
help='Specify alternate port [default: 8000]')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
if args.cgi:
|
if args.cgi:
|
||||||
test(HandlerClass=CGIHTTPRequestHandler, port=args.port)
|
handler_class = CGIHTTPRequestHandler
|
||||||
else:
|
else:
|
||||||
test(HandlerClass=SimpleHTTPRequestHandler, port=args.port)
|
handler_class = SimpleHTTPRequestHandler
|
||||||
|
test(HandlerClass=handler_class, port=args.port, bind=args.bind)
|
||||||
|
|
|
@ -12,6 +12,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #17764: Enable http.server to bind to a user specified network
|
||||||
|
interface. Patch contributed by Malte Swart.
|
||||||
|
|
||||||
- Issue #18937: Add an assertLogs() context manager to unittest.TestCase
|
- Issue #18937: Add an assertLogs() context manager to unittest.TestCase
|
||||||
to ensure that a block of code emits a message using the logging module.
|
to ensure that a block of code emits a message using the logging module.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue