aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/state_impl
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-10-25 11:30:45 +0200
committerWojtek Kosior <koszko@koszko.org>2022-10-25 11:30:45 +0200
commit37b3cf9fb2a56cfa980844f527d834916b38cca8 (patch)
tree288a3b3ddc7e1fe115d568480f44313173183c2d /src/hydrilla/proxy/state_impl
parent44c09ab27ce8407f4fc5c75df9cdf309df8463eb (diff)
downloadhaketilo-hydrilla-37b3cf9fb2a56cfa980844f527d834916b38cca8.tar.gz
haketilo-hydrilla-37b3cf9fb2a56cfa980844f527d834916b38cca8.zip
[proxy] make Haketilo popup functional
* Ad hoc payload creation was additionally fixed in this commit. * Addition on newly created script blocking/allowing rules to pattern tree was additionally fixed in this commit. It is no longer necessary to restart Haketilo for new rules to come into effect.
Diffstat (limited to 'src/hydrilla/proxy/state_impl')
-rw-r--r--src/hydrilla/proxy/state_impl/concrete_state.py2
-rw-r--r--src/hydrilla/proxy/state_impl/rules.py18
2 files changed, 20 insertions, 0 deletions
diff --git a/src/hydrilla/proxy/state_impl/concrete_state.py b/src/hydrilla/proxy/state_impl/concrete_state.py
index 5df7c34..a5c547f 100644
--- a/src/hydrilla/proxy/state_impl/concrete_state.py
+++ b/src/hydrilla/proxy/state_impl/concrete_state.py
@@ -367,6 +367,8 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields):
ref = payload_ref,
explicitly_enabled = enabled_status == 'E',
unique_token = token,
+ mapping_identifier = identifier,
+ pattern = pattern,
pattern_path_segments = pattern_path_segments,
eval_allowed = eval_allowed,
cors_bypass_allowed = cors_bypass_allowed,
diff --git a/src/hydrilla/proxy/state_impl/rules.py b/src/hydrilla/proxy/state_impl/rules.py
index 2fed2c1..1761b04 100644
--- a/src/hydrilla/proxy/state_impl/rules.py
+++ b/src/hydrilla/proxy/state_impl/rules.py
@@ -148,6 +148,8 @@ class ConcreteRuleStore(st.RuleStore):
(rule_id,), = cursor.fetchall()
+ self.state.rebuild_structures(payloads=False)
+
return ConcreteRuleRef(str(rule_id), self.state)
def get_display_infos(self, allow: t.Optional[bool] = None) \
@@ -176,3 +178,19 @@ class ConcreteRuleStore(st.RuleStore):
result.append(st.RuleDisplayInfo(ref, pattern, allow_scripts))
return result
+
+ def get_by_pattern(self, pattern: str) -> st.RuleRef:
+ with self.state.cursor() as cursor:
+ cursor.execute(
+ 'SELECT rule_id FROM rules WHERE pattern = ?;',
+ (url_patterns.normalize_pattern(pattern),)
+ )
+
+ rows = cursor.fetchall()
+
+ if rows == []:
+ raise st.MissingItemError()
+
+ (rule_id,), = rows
+
+ return ConcreteRuleRef(str(rule_id), self.state)