53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
from __future__ import absolute_import
|
|
import sys
|
|
from eventlet.green import socket
|
|
from eventlet.green import SocketServer
|
|
|
|
from BaseHTTPServer import (DEFAULT_ERROR_MESSAGE, _quote_html, __version__, __all__,
|
|
BaseHTTPRequestHandler as __BaseHTTPRequestHandler)
|
|
|
|
class HTTPServer(SocketServer.TCPServer):
|
|
|
|
allow_reuse_address = 1 # Seems to make sense in testing environment
|
|
|
|
def server_bind(self):
|
|
"""Override server_bind to store the server name."""
|
|
SocketServer.TCPServer.server_bind(self)
|
|
host, port = self.socket.getsockname()[:2]
|
|
self.server_name = socket.getfqdn(host)
|
|
self.server_port = port
|
|
|
|
|
|
class BaseHTTPRequestHandler(__BaseHTTPRequestHandler):
|
|
|
|
def address_string(self):
|
|
host, port = self.client_address[:2]
|
|
return socket.getfqdn(host)
|
|
|
|
|
|
def test(HandlerClass = BaseHTTPRequestHandler,
|
|
ServerClass = HTTPServer, protocol="HTTP/1.0"):
|
|
"""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
|
|
httpd = ServerClass(server_address, HandlerClass)
|
|
|
|
sa = httpd.socket.getsockname()
|
|
print "Serving HTTP on", sa[0], "port", sa[1], "..."
|
|
httpd.serve_forever()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
test()
|