mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 08:04:49 +01:00
proxy mode: cookie based selector using session to coll
ui: add proxy_selector html, add switch link to error and banner
This commit is contained in:
parent
fc6ffc6c11
commit
96d9f4dcad
@ -65,8 +65,8 @@ class ProxyRouter(object):
|
||||
if proxy_options:
|
||||
proxy_options = proxy_options.get('proxy_options', {})
|
||||
|
||||
self.resolver = ProxyAuthResolver(routes, proxy_options)
|
||||
#self.resolver = CookieResolver(routes, proxy_options)
|
||||
#self.resolver = ProxyAuthResolver(routes, proxy_options)
|
||||
self.resolver = CookieResolver(routes, proxy_options)
|
||||
|
||||
self.magic_name = proxy_options.get('magic_name', 'pywb-proxy.com')
|
||||
|
||||
|
@ -124,7 +124,6 @@ class CookieResolver(BaseCollResolver): # pragma: no cover
|
||||
self.proxy_select_view = config.get('proxy_select_view')
|
||||
|
||||
if uwsgi_cache:
|
||||
print 'UWSGI CACHE'
|
||||
self.cache = UwsgiCache()
|
||||
else:
|
||||
self.cache = {}
|
||||
|
@ -135,11 +135,14 @@ class WSGIApp(object):
|
||||
logging.info(err_msg)
|
||||
err_details = None
|
||||
|
||||
is_proxy_mode = env.get('pywb.proxy_host') is not None
|
||||
|
||||
if error_view:
|
||||
return error_view.render_response(exc_type=type(exc).__name__,
|
||||
err_msg=err_msg,
|
||||
err_details=err_details,
|
||||
status=status,
|
||||
is_proxy_mode=is_proxy_mode,
|
||||
err_url=err_url)
|
||||
else:
|
||||
return WbResponse.text_response(status + ' Error: ' + err_msg,
|
||||
|
@ -69,6 +69,10 @@ function init_banner() {
|
||||
var capture_str = (wbinfo ? wbinfo.capture_str : "");
|
||||
|
||||
text += "<b id='_wb_capture_info'>" + capture_str + "</b>";
|
||||
|
||||
if (wbinfo.is_proxy_mode && wbinfo.url) {
|
||||
text += '<br/><a href="//select.pywb-proxy.com/' + wbinfo.url + '">Switch Collection</a>';
|
||||
}
|
||||
|
||||
banner.innerHTML = text;
|
||||
|
||||
|
@ -9,3 +9,10 @@
|
||||
</pre>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if is_proxy_mode and err_url and status == '404 Not Found' %}
|
||||
<p>
|
||||
<a href="//select.pywb-proxy.com/{{ err_url }}">Try Different Collections</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
{% if rule.js_rewrite_location and include_wombat %}
|
||||
<script src='{{ wbrequest.host_prefix }}/{{ static_path }}/wombat.js'> </script>
|
||||
<script>
|
||||
{% set urlsplit = cdx['original'] | urlsplit %}
|
||||
{% set urlsplit = cdx.original | urlsplit %}
|
||||
WB_wombat_init("{{ wbrequest.wb_prefix}}",
|
||||
"{{ cdx['timestamp'] if include_ts else ''}}",
|
||||
"{{ urlsplit.scheme }}",
|
||||
@ -12,6 +12,7 @@
|
||||
{% endif %}
|
||||
<script>
|
||||
wbinfo = {}
|
||||
wbinfo.url = "{{ cdx.original }}";
|
||||
wbinfo.timestamp = "{{ cdx.timestamp }}";
|
||||
wbinfo.capture_str = "{{ cdx.timestamp | format_ts }}";
|
||||
wbinfo.prefix = "{{ wbrequest.wb_prefix }}";
|
||||
|
25
pywb/ui/proxy_select.html
Normal file
25
pywb/ui/proxy_select.html
Normal file
@ -0,0 +1,25 @@
|
||||
<html>
|
||||
<body>
|
||||
<h2>Pywb Proxy Collection Selector</h1>
|
||||
{% if coll %}
|
||||
<p>
|
||||
Current collection is: <b>{{ coll }}</b>
|
||||
</p>
|
||||
{% else %}
|
||||
<p>You have attempted to load the url <b>{{ url }}</b>, but there are multiple collections available.</p>
|
||||
{% endif %}
|
||||
|
||||
<p>Please select which collection you would like to use (You will be redirected back to <b>{{ url }}</b>):
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
{% for route in routes %}
|
||||
{% if route | is_wb_handler %}
|
||||
<li><a href="{{ route_temp | format(route.path) }}">{{ route.path }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<p>(Once selected, you will not be prompted again, however you can return to this page to switch collections.)</p>
|
||||
</body>
|
||||
</html>
|
@ -33,6 +33,7 @@ DEFAULTS = {
|
||||
'search_html': 'ui/search.html',
|
||||
'home_html': 'ui/index.html',
|
||||
'error_html': 'ui/error.html',
|
||||
'proxy_select_html': 'ui/proxy_select.html',
|
||||
|
||||
'template_globals': {'static_path': 'static/default'},
|
||||
|
||||
@ -218,14 +219,19 @@ def create_wb_router(passed_config={}):
|
||||
# Check for new proxy mode!
|
||||
if config.get('enable_http_proxy', False):
|
||||
router = ProxyArchivalRouter
|
||||
|
||||
view = J2TemplateView.create_template(
|
||||
config.get('proxy_select_html'),
|
||||
'Proxy Coll Selector')
|
||||
|
||||
if not 'proxy_options' in passed_config:
|
||||
passed_config['proxy_options'] = {}
|
||||
|
||||
passed_config['proxy_options']['proxy_select_view'] = view
|
||||
|
||||
else:
|
||||
router = ArchivalRouter
|
||||
|
||||
if config.get('proxy_select_html'):
|
||||
temp = J2TemplateView.create_template(config.get('proxy_select_html'),
|
||||
'Proxy Coll Selector')
|
||||
config.get('proxy_options')['proxy_select_view'] = temp
|
||||
|
||||
# Finally, create wb router
|
||||
return router(
|
||||
routes,
|
||||
@ -243,6 +249,5 @@ def create_wb_router(passed_config={}):
|
||||
|
||||
error_view=J2TemplateView.create_template(config.get('error_html'),
|
||||
'Error Page'),
|
||||
|
||||
config=config
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user