diff options
author | Wojtek Kosior <koszko@koszko.org> | 2022-10-21 21:42:56 +0200 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2022-10-21 21:42:56 +0200 |
commit | fe43bd552aaacd649b0e00afada01d07ad8dae9a (patch) | |
tree | 6244f66250706ec0d4a7dae23e270aefc97b02dd /src/hydrilla/proxy/policies/payload_resource.py | |
parent | d4895218cf8a3a16b74f42c530d78106062cf95b (diff) | |
download | haketilo-hydrilla-fe43bd552aaacd649b0e00afada01d07ad8dae9a.tar.gz haketilo-hydrilla-fe43bd552aaacd649b0e00afada01d07ad8dae9a.zip |
[proxy] facilitate injecting non-payload script to all pages
Diffstat (limited to 'src/hydrilla/proxy/policies/payload_resource.py')
-rw-r--r-- | src/hydrilla/proxy/policies/payload_resource.py | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/hydrilla/proxy/policies/payload_resource.py b/src/hydrilla/proxy/policies/payload_resource.py index 07226cb..d8e5ea5 100644 --- a/src/hydrilla/proxy/policies/payload_resource.py +++ b/src/hydrilla/proxy/policies/payload_resource.py @@ -56,12 +56,9 @@ import dataclasses as dc import typing as t import json -from threading import Lock from base64 import b64encode from urllib.parse import quote, parse_qs, urlparse, urlencode, urljoin -import jinja2 - from ...translations import smart_gettext as _ from ...url_patterns import ParsedUrl from ...versions import haketilo_version @@ -71,15 +68,6 @@ from . import base from .payload import PayloadAwarePolicy, PayloadAwarePolicyFactory -loader = jinja2.PackageLoader(__package__, package_path='injectable_scripts') -jinja_env = jinja2.Environment( - loader = loader, - lstrip_blocks = True, - autoescape = False -) -jinja_lock = Lock() - - def encode_string_for_js(string: str) -> str: return b64encode(quote(string).encode()).decode() @@ -274,8 +262,10 @@ class PayloadResourcePolicy(PayloadAwarePolicy): request_info: http_messages.RequestInfo ) -> MessageInfo: if path[0] == 'page_init_script.js': - with jinja_lock: - template = jinja_env.get_template('page_init_script.js.jinja') + with base.jinja_lock: + template = base.jinja_env.get_template( + 'page_init_script.js.jinja' + ) token = self.payload_data.unique_token base_url = self._assets_base_url(request_info.url) ver_str = json.dumps(haketilo_version) @@ -396,14 +386,16 @@ class PayloadResourcePolicyFactory(PayloadAwarePolicyFactory): def make_policy(self, haketilo_state: state.HaketiloState) \ -> t.Union[PayloadResourcePolicy, BlockedResponsePolicy]: """....""" + haketilo_settings = haketilo_state.get_settings() + try: payload_data = self.payload_ref.get_data() except state.MissingItemError: - return BlockedResponsePolicy() + return BlockedResponsePolicy(haketilo_settings) if not payload_data.explicitly_enabled and \ - haketilo_state.get_settings().mapping_use_mode != \ + haketilo_settings.mapping_use_mode != \ state.MappingUseMode.AUTO: - return BlockedResponsePolicy() + return BlockedResponsePolicy(haketilo_settings) - return PayloadResourcePolicy(payload_data) + return PayloadResourcePolicy(haketilo_settings, payload_data) |