1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-24 06:59:52 +01:00

routing/proxy: pass in hostpaths to proxy routing

add PYWB_HOST_NAME env var to allow overriding default hostname
add request_hostname jinja filter
This commit is contained in:
Ilya Kreymer 2014-03-07 10:29:11 -08:00
parent 702e5e0143
commit a60ab1f118
4 changed files with 16 additions and 7 deletions

View File

@ -19,7 +19,6 @@ from handlers import DebugEchoHandler, DebugEchoEnvHandler
import os import os
import yaml
import logging import logging
@ -115,7 +114,12 @@ def create_wb_router(passed_config = {}):
routes = [] routes = []
hostpaths = config.get('hostpaths') # TODO: examine this more
hostname = os.environ.get('PYWB_HOST_NAME')
if hostname:
hostpaths = [hostname]
else:
hostpaths = config.get('hostpaths')
port = config.get('port') port = config.get('port')

View File

@ -39,6 +39,7 @@ class J2TemplateView:
jinja_env = Environment(loader = loader, trim_blocks = True) jinja_env = Environment(loader = loader, trim_blocks = True)
jinja_env.filters['format_ts'] = J2TemplateView.format_ts jinja_env.filters['format_ts'] = J2TemplateView.format_ts
jinja_env.filters['host'] = J2TemplateView.get_host jinja_env.filters['host'] = J2TemplateView.get_host
jinja_env.filters['request_hostname'] = J2TemplateView.request_hostname
return jinja_env return jinja_env
def render_to_string(self, **kwargs): def render_to_string(self, **kwargs):
@ -65,6 +66,10 @@ class J2TemplateView:
return urlparse.urlsplit(url).netloc return urlparse.urlsplit(url).netloc
@staticmethod
def request_hostname(env):
return env.get('HTTP_HOST', 'localhost')
# cdx index view # cdx index view

View File

@ -37,16 +37,16 @@ class ArchivalRouter(object):
if result: if result:
return result return result
# Home Page # Default Home Page
if env['REL_REQUEST_URI'] in ['/', '/index.html', '/index.htm']: if env['REL_REQUEST_URI'] in ['/', '/index.html', '/index.htm']:
return self.render_home_page() return self.render_home_page(env)
return self.fallback(env, self.routes) if self.fallback else None return self.fallback(env, self.routes) if self.fallback else None
def render_home_page(self): def render_home_page(self, env):
# render the homepage! # render the homepage!
if self.home_view: if self.home_view:
return self.home_view.render_response(routes=self.routes) return self.home_view.render_response(env=env, routes=self.routes)
else: else:
# default home page template # default home page template
text = '\n'.join(map(str, self.routes)) text = '\n'.join(map(str, self.routes))

View File

@ -62,7 +62,7 @@ class ProxyRouter:
request_uri=url, request_uri=url,
wb_url_str=url, wb_url_str=url,
#rel_prefix=url, #rel_prefix=url,
#host_prefix=self.hostpaths[0], host_prefix=self.hostpaths[0],
wburl_class=self.handler.get_wburl_type(), wburl_class=self.handler.get_wburl_type(),
urlrewriter_class=ProxyHttpsUrlRewriter, urlrewriter_class=ProxyHttpsUrlRewriter,
use_abs_prefix=False, use_abs_prefix=False,