From a4efa58d1e17c567ec28c0c394be28eabd660cb3 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 30 Sep 2016 11:33:30 -0700 Subject: [PATCH] proxy mode: add special 'proxy_js' rewriter which defaults to none rewriter, but supports custom rules from rules.yaml, to avoid inserting WB_wombat_ overrides in proxy mode #198 --- pywb/rewrite/rewrite_content.py | 7 ++++++- pywb/rewrite/rewriterules.py | 13 ++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/pywb/rewrite/rewrite_content.py b/pywb/rewrite/rewrite_content.py index 6ae183a5..ea359911 100644 --- a/pywb/rewrite/rewrite_content.py +++ b/pywb/rewrite/rewrite_content.py @@ -156,7 +156,12 @@ class RewriteContent(object): text_type, stream) - rewriter_class = rule.rewriters[text_type] + # for proxy mode: use special js_proxy rewriter + # which may be none rewriter + custom rules (if any) + if text_type == 'js' and not urlrewriter.prefix: + rewriter_class = rule.rewriters['js_proxy'] + else: + rewriter_class = rule.rewriters[text_type] # for html, need to perform header insert, supply js, css, xml # rewriters diff --git a/pywb/rewrite/rewriterules.py b/pywb/rewrite/rewriterules.py index d8b2d280..4c8d10c6 100644 --- a/pywb/rewrite/rewriterules.py +++ b/pywb/rewrite/rewriterules.py @@ -45,8 +45,11 @@ class RewriteRules(BaseRule): # set js class, using either default or override from config self.rewriters['js'] = config.get('js_class', js_default_class) + self.rewriters['js_proxy'] = JSNoneRewriter + # add any regexs for js rewriter - self._add_custom_regexs('js', config) + self._add_custom_regexs('js', 'js_regexs', config) + self._add_custom_regexs('js_proxy', 'js_regexs', config) # cookie rewrite scope self.cookie_scope = config.get('cookie_scope', 'default') @@ -57,12 +60,12 @@ class RewriteRules(BaseRule): self.req_cookie_rewrite = req_cookie_rewrite - def _add_custom_regexs(self, field, config): - regexs = config.get(field + '_regexs') + def _add_custom_regexs(self, rw_id, field, config): + regexs = config.get(field) if not regexs: return - rewriter_cls = self.rewriters[field] + rewriter_cls = self.rewriters[rw_id] #rule_def_tuples = RegexRewriter.parse_rules_from_config(regexs) parse_rules_func = RegexRewriter.parse_rules_from_config(regexs) @@ -71,4 +74,4 @@ class RewriteRules(BaseRule): rule_def_tuples = parse_rules_func(urlrewriter) return rewriter_cls(urlrewriter, rule_def_tuples) - self.rewriters[field] = extend_rewriter_with_regex + self.rewriters[rw_id] = extend_rewriter_with_regex