hgweb: use computed base URL from parsed request
Let's not reinvent URL construction in a function that runs the
templater.
Differential Revision: https://phab.mercurial-scm.org/D2735
--- a/mercurial/hgweb/hgweb_mod.py Sat Mar 10 10:20:51 2018 -0800
+++ b/mercurial/hgweb/hgweb_mod.py Thu Mar 08 12:59:25 2018 -0800
@@ -142,21 +142,9 @@
if typ in allowed or self.configbool('web', 'allow%s' % typ):
yield {'type': typ, 'extension': spec[2], 'node': nodeid}
- def templater(self, wsgireq):
+ def templater(self, wsgireq, req):
# determine scheme, port and server name
# this is needed to create absolute urls
-
- proto = wsgireq.env.get('wsgi.url_scheme')
- if proto == 'https':
- proto = 'https'
- default_port = '443'
- else:
- proto = 'http'
- default_port = '80'
-
- port = wsgireq.env[r'SERVER_PORT']
- port = port != default_port and (r':' + port) or r''
- urlbase = r'%s://%s%s' % (proto, wsgireq.env[r'SERVER_NAME'], port)
logourl = self.config('web', 'logourl')
logoimg = self.config('web', 'logoimg')
staticurl = (self.config('web', 'staticurl')
@@ -194,7 +182,7 @@
'logourl': logourl,
'logoimg': logoimg,
'staticurl': staticurl,
- 'urlbase': urlbase,
+ 'urlbase': req.advertisedbaseurl,
'repo': self.reponame,
'encoding': encoding.encoding,
'motd': motd,
@@ -396,7 +384,7 @@
# process the web interface request
try:
- tmpl = rctx.templater(wsgireq)
+ tmpl = rctx.templater(wsgireq, req)
ctype = tmpl('mimetype', encoding=encoding.encoding)
ctype = templater.stringify(ctype)