diff options
Diffstat (limited to 'src/hydrilla/proxy/state_impl/concrete_state.py')
-rw-r--r-- | src/hydrilla/proxy/state_impl/concrete_state.py | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/src/hydrilla/proxy/state_impl/concrete_state.py b/src/hydrilla/proxy/state_impl/concrete_state.py index d2d6e56..83522cf 100644 --- a/src/hydrilla/proxy/state_impl/concrete_state.py +++ b/src/hydrilla/proxy/state_impl/concrete_state.py @@ -198,12 +198,29 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields): def _rebuild_structures(self, cursor: sqlite3.Cursor) -> None: new_policy_tree = base.PolicyTree() - ui_factory = policies.WebUIPolicyFactory(builtin=True) - web_ui_pattern = 'http*://hkt.mitm.it/***' - for parsed_pattern in url_patterns.parse_pattern(web_ui_pattern): + web_ui_main_pattern = 'http*://hkt.mitm.it/***' + web_ui_main_factory = policies.WebUIMainPolicyFactory(builtin=True) + + for parsed_pattern in url_patterns.parse_pattern(web_ui_main_pattern): + new_policy_tree = new_policy_tree.register( + parsed_pattern = parsed_pattern, + item = web_ui_main_factory + ) + + web_ui_landing_pattern = f'{self.efective_listen_addr}/***' + web_ui_landing_factory = policies.WebUILandingPolicyFactory( + builtin = True + ) + + try: + parsed_pattern, = url_patterns.parse_pattern(web_ui_landing_pattern) + except url_patterns.HaketiloURLException: + fmt = _('warn.proxy.failed_to_register_landing_page_at_{}') + self.logger.warn(fmt.format(web_ui_landing_pattern)) + else: new_policy_tree = new_policy_tree.register( - parsed_pattern, - ui_factory + parsed_pattern = parsed_pattern, + item = web_ui_landing_factory ) # Put script blocking/allowing rules in policy tree. @@ -346,7 +363,12 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields): self.settings = load_settings(cursor) @staticmethod - def make(store_dir: Path) -> 'ConcreteHaketiloState': + def make( + store_dir: Path, + listen_host: str, + listen_port: int, + logger: st.Logger + ) -> 'ConcreteHaketiloState': store_dir.mkdir(parents=True, exist_ok=True) connection = sqlite3.connect( @@ -360,7 +382,10 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields): global_settings = load_settings(connection.cursor()) return ConcreteHaketiloState( - store_dir = store_dir, - connection = connection, - settings = global_settings + store_dir = store_dir, + _logger = logger, + _listen_host = listen_host, + _listen_port = listen_port, + connection = connection, + settings = global_settings ) |