Esempio n. 1
0
 def test_get_request(
     self,
     monkeypatch: pytest.MonkeyPatch,
 ) -> None:
     request = Request({})
     request.set_var("site_id", "NO_SITE")
     request.set_var("to_delete", "['x/y/z.txt', 'abc.ending', '/ä/☃/☕']")
     request.set_var("config_generation", "123")
     request.files = werkzeug_datastructures.ImmutableMultiDict({
         "sync_archive":
         werkzeug_datastructures.FileStorage(
             stream=io.BytesIO(b"some data"),
             filename="sync_archive",
             name="sync_archive",
         )
     })
     monkeypatch.setattr(
         activate_changes,
         "_request",
         request,
     )
     assert (activate_changes.AutomationReceiveConfigSync().get_request() ==
             activate_changes.ReceiveConfigSyncRequest(
                 site_id=SiteId("NO_SITE"),
                 sync_archive=b"some data",
                 to_delete=["x/y/z.txt", "abc.ending", "/ä/☃/☕"],
                 config_generation=123,
             ))
Esempio n. 2
0
class URLChecker:
    def __init__(self):
        self._user_id = user.ident
        self._request = Request(create_environ())

    def _set_query_vars(self, query_vars: QueryVars) -> None:
        for name, vals in query_vars.items():
            self._request.set_var(name, vals[0])

    def is_permitted(self, url: str) -> bool:
        file_name, query_vars = file_name_and_query_vars_from_url(url)
        self._set_query_vars(query_vars)
        try:
            with RequestContext(html_obj=html(self._request),
                                req=self._request):
                with UserContext(self._user_id):
                    page_handler = get_page_handler(file_name)
                    if page_handler:
                        page_handler()
            return True
        except MKAuthException:
            return False
Esempio n. 3
0
class URLChecker:
    def __init__(self):
        self._user_id = user.ident
        self._request = Request(create_environ())
        from cmk.gui.wato.pages.hosts import ModeEditHost
        self._mode_edit_host = ModeEditHost

    def _set_query_vars(self, query_vars: QueryVars) -> None:
        for name, vals in query_vars.items():
            self._request.set_var(name, vals[0])

    def is_permitted(self, url: str) -> bool:
        is_host_url = "mode=edit_host" in url
        file_name, query_vars = file_name_and_query_vars_from_url(url)
        self._set_query_vars(query_vars)
        try:
            with AppContext(current_app), \
                 RequestContext(html_obj=html(self._request), req=self._request), \
                 UserContext(self._user_id):
                if is_host_url:
                    self._try_host()
                else:
                    self._try_page(file_name)
            return True
        except MKAuthException:
            return False

    @staticmethod
    def _try_page(file_name: str) -> None:
        page_handler = get_page_handler(file_name)
        if page_handler:
            page_handler()

    # TODO: Find a better solution here. We treat hosts separately because calling the page takes
    #  very long in this case and is not necessary (the initializer already throws an exception).
    def _try_host(self) -> None:
        self._mode_edit_host()