1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-15 00:03:28 +01:00

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
This commit is contained in:
Ilya Kreymer 2015-12-12 21:58:12 -08:00
parent 64fe49d703
commit e9b11fcbf2
2 changed files with 20 additions and 5 deletions

View File

@ -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:

View File

@ -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