aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/policies/payload.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/hydrilla/proxy/policies/payload.py')
-rw-r--r--src/hydrilla/proxy/policies/payload.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/hydrilla/proxy/policies/payload.py b/src/hydrilla/proxy/policies/payload.py
index 8aaf845..76a1202 100644
--- a/src/hydrilla/proxy/policies/payload.py
+++ b/src/hydrilla/proxy/policies/payload.py
@@ -49,12 +49,12 @@ class PayloadAwarePolicy(base.Policy):
"""...."""
payload_data: state.PayloadData
- def _assets_base_url(self, request_url: ParsedUrl):
+ def _assets_base_url(self, url: ParsedUrl) -> str:
token = self.payload_data.unique_token
base_path_segments = (*self.payload_data.pattern_path_segments, token)
- return f'{request_url.url_without_path}/{"/".join(base_path_segments)}/'
+ return f'{url.url_without_path}/{"/".join(base_path_segments)}/'
def _payload_details_to_signed_query_string(
self,
@@ -110,6 +110,10 @@ class PayloadInjectPolicy(PayloadAwarePolicy):
priority: t.ClassVar[base.PolicyPriority] = base.PolicyPriority._TWO
+ @property
+ def current_popup_settings(self) -> state.PopupSettings:
+ return self.haketilo_settings.default_popup_payloadon
+
def _csp_to_clear(self, http_info: http_messages.FullHTTPInfo) \
-> t.Sequence[str]:
return ['script-src']
@@ -141,8 +145,12 @@ class PayloadInjectPolicy(PayloadAwarePolicy):
http_info: http_messages.FullHTTPInfo,
encoding: t.Optional[str]
) -> t.Union[bytes, str]:
+ markup = super()._modify_response_document(http_info, encoding)
+ if isinstance(markup, str):
+ encoding = None
+
soup = bs4.BeautifulSoup(
- markup = http_info.response_info.body,
+ markup = markup,
from_encoding = encoding,
features = 'html5lib'
)
@@ -236,22 +244,23 @@ class PayloadPolicyFactory(PayloadAwarePolicyFactory):
"""...."""
def make_policy(self, haketilo_state: state.HaketiloState) \
-> t.Optional[base.Policy]:
- """...."""
+ haketilo_settings = haketilo_state.get_settings()
+
try:
payload_data = self.payload_ref.get_data()
except:
return None
if payload_data.explicitly_enabled:
- return PayloadInjectPolicy(payload_data)
+ return PayloadInjectPolicy(haketilo_settings, payload_data)
- mode = haketilo_state.get_settings().mapping_use_mode
+ mode = haketilo_settings.mapping_use_mode
if mode == state.MappingUseMode.QUESTION:
- return PayloadSuggestPolicy(payload_data)
+ return PayloadSuggestPolicy(haketilo_settings, payload_data)
if mode == state.MappingUseMode.WHEN_ENABLED:
return None
# mode == state.MappingUseMode.AUTO
- return AutoPayloadInjectPolicy(payload_data)
+ return AutoPayloadInjectPolicy(haketilo_settings, payload_data)