Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/server.py @ 29553:cd3e58862cab
hgweb: pass ui into preparehttpserver
Upcoming patches will need the built-in HTTPS server to be more
configurable.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 13 Jul 2016 00:14:50 -0700 |
parents | 33770d2b6cf9 |
children | 121d11814c62 |
comparison
equal
deleted
inserted
replaced
29552:db26925bdbb0 | 29553:cd3e58862cab |
---|---|
56 class _httprequesthandler(BaseHTTPServer.BaseHTTPRequestHandler): | 56 class _httprequesthandler(BaseHTTPServer.BaseHTTPRequestHandler): |
57 | 57 |
58 url_scheme = 'http' | 58 url_scheme = 'http' |
59 | 59 |
60 @staticmethod | 60 @staticmethod |
61 def preparehttpserver(httpserver, ssl_cert): | 61 def preparehttpserver(httpserver, ui): |
62 """Prepare .socket of new HTTPServer instance""" | 62 """Prepare .socket of new HTTPServer instance""" |
63 pass | 63 pass |
64 | 64 |
65 def __init__(self, *args, **kargs): | 65 def __init__(self, *args, **kargs): |
66 self.protocol_version = 'HTTP/1.1' | 66 self.protocol_version = 'HTTP/1.1' |
220 """HTTPS handler based on Python's ssl module""" | 220 """HTTPS handler based on Python's ssl module""" |
221 | 221 |
222 url_scheme = 'https' | 222 url_scheme = 'https' |
223 | 223 |
224 @staticmethod | 224 @staticmethod |
225 def preparehttpserver(httpserver, ssl_cert): | 225 def preparehttpserver(httpserver, ui): |
226 try: | 226 try: |
227 import ssl | 227 import ssl |
228 ssl.wrap_socket | 228 ssl.wrap_socket |
229 except ImportError: | 229 except ImportError: |
230 raise error.Abort(_("SSL support is unavailable")) | 230 raise error.Abort(_("SSL support is unavailable")) |
231 | |
232 certfile = ui.config('web', 'certificate') | |
231 httpserver.socket = ssl.wrap_socket( | 233 httpserver.socket = ssl.wrap_socket( |
232 httpserver.socket, server_side=True, | 234 httpserver.socket, server_side=True, |
233 certfile=ssl_cert, ssl_version=ssl.PROTOCOL_TLSv1) | 235 certfile=certfile, ssl_version=ssl.PROTOCOL_TLSv1) |
234 | 236 |
235 def setup(self): | 237 def setup(self): |
236 self.connection = self.request | 238 self.connection = self.request |
237 self.rfile = socket._fileobject(self.request, "rb", self.rbufsize) | 239 self.rfile = socket._fileobject(self.request, "rb", self.rbufsize) |
238 self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) | 240 self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) |
262 def __init__(self, ui, app, addr, handler, **kwargs): | 264 def __init__(self, ui, app, addr, handler, **kwargs): |
263 BaseHTTPServer.HTTPServer.__init__(self, addr, handler, **kwargs) | 265 BaseHTTPServer.HTTPServer.__init__(self, addr, handler, **kwargs) |
264 self.daemon_threads = True | 266 self.daemon_threads = True |
265 self.application = app | 267 self.application = app |
266 | 268 |
267 handler.preparehttpserver(self, ui.config('web', 'certificate')) | 269 handler.preparehttpserver(self, ui) |
268 | 270 |
269 prefix = ui.config('web', 'prefix', '') | 271 prefix = ui.config('web', 'prefix', '') |
270 if prefix: | 272 if prefix: |
271 prefix = '/' + prefix.strip('/') | 273 prefix = '/' + prefix.strip('/') |
272 self.prefix = prefix | 274 self.prefix = prefix |