From e9b11fcbf27a14511342df476813d319a5328b7e Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 12 Dec 2015 21:58:12 -0800 Subject: [PATCH] proxy: default to cookie resolver, which allows switching collections and datetime, instead of auth resolver auth resolver can be used by setting 'cookie_resolver: false' explicitly. when using auth resolver, don't set proxy magic path as switching collections or datetime is not possible with auth resolver closes #160 --- pywb/framework/proxy.py | 13 ++++++++----- pywb/framework/proxy_resolvers.py | 12 ++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/pywb/framework/proxy.py b/pywb/framework/proxy.py index 463b19e9..b4d796dd 100644 --- a/pywb/framework/proxy.py +++ b/pywb/framework/proxy.py @@ -88,13 +88,15 @@ class ProxyRouter(object): self.extra_headers = self.EXTRA_HEADERS proxy_options['extra_headers'] = self.extra_headers - res_type = proxy_options.get('cookie_resolver') - if res_type == True or res_type == 'cookie': - self.resolver = CookieResolver(routes, proxy_options) + res_type = proxy_options.get('cookie_resolver', True) + if res_type == 'auth' or not res_type: + self.resolver = ProxyAuthResolver(routes, proxy_options) elif res_type == 'ip': self.resolver = IPCacheResolver(routes, proxy_options) + #elif res_type == True or res_type == 'cookie': + # self.resolver = CookieResolver(routes, proxy_options) else: - self.resolver = ProxyAuthResolver(routes, proxy_options) + self.resolver = CookieResolver(routes, proxy_options) self.use_banner = proxy_options.get('use_banner', True) self.use_wombat = proxy_options.get('use_client_rewrite', True) @@ -171,7 +173,8 @@ class ProxyRouter(object): env['pywb.proxy_req_uri'] += '?' + parts.query env['pywb.proxy_query'] = parts.query - env['pywb_proxy_magic'] = self.magic_name + if self.resolver.supports_switching: + env['pywb_proxy_magic'] = self.magic_name # route (static) and other resources to archival replay if env['pywb.proxy_host'] == self.magic_name: diff --git a/pywb/framework/proxy_resolvers.py b/pywb/framework/proxy_resolvers.py index 44c32144..f30ecfd6 100644 --- a/pywb/framework/proxy_resolvers.py +++ b/pywb/framework/proxy_resolvers.py @@ -76,6 +76,10 @@ class ProxyAuthResolver(BaseCollResolver): def pre_connect(self): return True + @property + def supports_switching(self): + return False + def get_proxy_coll_ts(self, env): proxy_auth = env.get('HTTP_PROXY_AUTHORIZATION') @@ -117,6 +121,10 @@ class IPCacheResolver(BaseCollResolver): self.cache = create_cache(config.get('redis_cache_key')) self.magic_name = config['magic_name'] + @property + def supports_switching(self): + return True + def _get_ip(self, env): ip = env['REMOTE_ADDR'] qs = env.get('pywb.proxy_query') @@ -186,6 +194,10 @@ class CookieResolver(BaseCollResolver): self.cache = create_cache() + @property + def supports_switching(self): + return True + def get_proxy_coll_ts(self, env): coll, ts, sesh_id = self.get_coll(env) return coll, ts