Esempio n. 1
0
 def _page_menu_entries_related(self) -> Iterable[PageMenuEntry]:
     yield PageMenuEntry(
         title=_("Hosts"),
         icon_name="folder",
         item=make_simple_link(
             makeuri_contextless(
                 request,
                 [("mode", "folder")],
                 filename="wato.py",
             )),
     )
Esempio n. 2
0
    def _page_menu_entries_related(self) -> Iterator[PageMenuEntry]:
        yield PageMenuEntry(
            title=_("Tags"),
            icon_name="tag",
            item=make_simple_link(watolib.folder_preserving_link([("mode", "tags")])),
        )

        yield PageMenuEntry(
            title=_("Custom host attributes"),
            icon_name="custom_attr",
            item=make_simple_link(watolib.folder_preserving_link([("mode", "host_attrs")])),
        )

        if config.user.may("wato.dcd_connections"):
            yield PageMenuEntry(
                title=_("Dynamic host management"),
                icon_name="dcd_connections",
                item=make_simple_link(watolib.folder_preserving_link([("mode", "dcd_connections")
                                                                     ])),
            )
Esempio n. 3
0
 def _page_menu_entries_details(self) -> Iterator[PageMenuEntry]:
     yield PageMenuEntry(
         title=_("Show all settings")
         if self._show_only_modified else _("Show only modified settings"),
         icon_name="checkbox",
         item=make_simple_link(
             html.makeactionuri([
                 ("_show_only_modified",
                  "0" if self._show_only_modified else "1"),
             ])),
     )
Esempio n. 4
0
def _page_menu_entries_related() -> Iterator[PageMenuEntry]:
    yield PageMenuEntry(
        title=_("Change password"),
        icon_name="topic_change_password",
        item=make_simple_link("user_change_pw.py"),
    )

    yield PageMenuEntry(
        title=_("Edit profile"),
        icon_name="topic_profile",
        item=make_simple_link("user_profile.py"),
    )

    if rulebased_notifications_enabled() and user.may(
            "general.edit_notifications"):
        yield PageMenuEntry(
            title=_("Notification rules"),
            icon_name="topic_events",
            item=make_simple_link("wato.py?mode=user_notifications_p"),
        )
Esempio n. 5
0
 def _page_menu_entries_details(self) -> Iterator[PageMenuEntry]:
     yield PageMenuEntry(
         title=_("Show all settings"),
         icon_name="checked_checkbox"
         if self._show_only_modified else "checkbox",
         item=make_simple_link(
             makeactionuri(request, transactions, [
                 ("_show_only_modified",
                  "0" if self._show_only_modified else "1"),
             ])),
     )
Esempio n. 6
0
 def _page_menu_entries_related(self) -> Iterator[PageMenuEntry]:
     back_url = self._back_url()
     # Small hack to not have a "up" and "back" link both pointing to the parent mode
     if back_url and "mode=background_jobs_overview" not in back_url:
         yield PageMenuEntry(
             title=_("Back"),
             icon_name="back",
             item=make_simple_link(back_url),
             is_shortcut=True,
             is_suggested=True,
         )
Esempio n. 7
0
    def _page_menu_entries_all_sites(self) -> Iterator[PageMenuEntry]:
        if not self._may_activate_changes():
            return

        yield PageMenuEntry(
            title=_("Discard all pending changes"),
            icon_name="delete",
            item=make_simple_link(html.makeactionuri([("_action", "discard")])),
            name="discard_changes",
            is_enabled=self.has_changes() and self._get_last_wato_snapshot_file(),
        )
Esempio n. 8
0
    def _page_menu_entries_hosts_in_folder(self) -> Iterator[PageMenuEntry]:
        if not self._folder.locked_hosts() and config.user.may(
                "wato.manage_hosts") and self._folder.may("write"):
            yield PageMenuEntry(
                title=_("Add host"),
                icon_name="new",
                item=make_simple_link(self._folder.url([("mode", "newhost")])),
                is_shortcut=True,
                is_suggested=True,
            )
            yield PageMenuEntry(
                title=_("Add cluster"),
                icon_name="new_cluster",
                item=make_simple_link(
                    self._folder.url([("mode", "newcluster")])),
            )
            yield PageMenuEntry(
                title=_("Import hosts via CSV file"),
                icon_name="bulk_import",
                item=make_simple_link(
                    self._folder.url([("mode", "bulk_import")])),
            )

        if config.user.may("wato.services"):
            yield PageMenuEntry(
                title=_("Discover services"),
                icon_name="services",
                item=make_simple_link(
                    self._folder.url([("mode", "bulkinventory"),
                                      ("all", "1")])),
            )

        if config.user.may("wato.rename_hosts"):
            yield PageMenuEntry(
                title=_("Rename multiple hosts"),
                icon_name="rename_host",
                item=make_simple_link(
                    self._folder.url([("mode", "bulk_rename_host")])),
            )

        if not self._folder.locked_hosts() and config.user.may(
                "wato.parentscan") and self._folder.may("write"):
            yield PageMenuEntry(
                title=_("Detect network parent hosts"),
                icon_name="parentscan",
                item=make_simple_link(
                    self._folder.url([("mode", "parentscan"), ("all", "1")])),
            )

        if config.user.may("wato.random_hosts"):
            yield PageMenuEntry(
                title=_("Add random hosts"),
                icon_name="random",
                item=make_simple_link(
                    self._folder.url([("mode", "random_hosts")])),
            )
Esempio n. 9
0
def page_menu_all_hosts_entries(should_use_dns_cache: bool) -> Iterator[PageMenuEntry]:
    if should_use_dns_cache:
        yield PageMenuEntry(
            title=_("Update DNS cache"),
            icon_name="update",
            item=make_simple_link(
                makeactionuri(request, transactions, [("_update_dns_cache", "1")])
            ),
            shortcut_title=_("Update site DNS cache"),
            is_shortcut=True,
            is_suggested=True,
        )
Esempio n. 10
0
    def _page_menu_entries_synchronized_users(self) -> Iterator[PageMenuEntry]:
        if userdb.sync_possible():
            if not self._job_snapshot.is_active():
                yield PageMenuEntry(
                    title=_("Start user synchronization"),
                    icon_name="replicate",
                    item=make_simple_link(html.makeactionuri([("_sync", 1)])),
                )

                yield PageMenuEntry(
                    title=_("Last synchronization result"),
                    icon_name="background_job_details",
                    item=make_simple_link(self._job.detail_url()),
                )

        yield PageMenuEntry(
            title=_("LDAP & Active Directory"),
            icon_name="ldap",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "ldap_config")])),
        )
Esempio n. 11
0
def _page_menu_entries_ack_all_werks() -> Iterator[PageMenuEntry]:
    if not may_acknowledge():
        return

    yield PageMenuEntry(
        title=_("Acknowledge all"),
        icon_name="werk_ack",
        is_shortcut=True,
        is_suggested=True,
        item=make_simple_link(html.makeactionuri([("_ack_all", "1")])),
        is_enabled=bool(unacknowledged_incompatible_werks()),
    )
Esempio n. 12
0
    def _page_menu_entries_related(self) -> Iterable[PageMenuEntry]:
        if not self._host:
            return

        yield PageMenuEntry(
            title=_("Host log files"),
            icon_name="logwatch",
            item=make_simple_link(
                html.makeuri_contextless([("host", self._hostname)],
                                         filename="logwatch.py")),
        )

        if self._item:
            yield PageMenuEntry(
                title=("Show log file"),
                icon_name="logwatch",
                item=make_simple_link(
                    html.makeuri_contextless([("host", self._hostname),
                                              ("file", self._item)],
                                             filename="logwatch.py")),
            )
Esempio n. 13
0
    def _page_menu_entries_this_folder(self) -> Iterator[PageMenuEntry]:
        if self._folder.may("read"):
            yield PageMenuEntry(
                title=_("Properties"),
                icon_name="edit",
                item=make_simple_link(self._folder.edit_url(backfolder=self._folder)),
            )

        if not self._folder.locked_subfolders() and not self._folder.locked():
            if self._folder.may("write") and config.user.may("wato.manage_folders"):
                yield PageMenuEntry(
                    title=_("Add subfolder"),
                    icon_name="newfolder",
                    item=make_simple_link(self._folder.url([("mode", "newfolder")])),
                    is_shortcut=True,
                    is_suggested=True,
                )

        yield make_folder_status_link(watolib.Folder.current(), view_name="allhosts")

        if config.user.may("wato.rulesets") or config.user.may("wato.seeall"):
            yield PageMenuEntry(
                title=_("Rules"),
                icon_name="rulesets",
                item=make_simple_link(
                    watolib.folder_preserving_link([
                        ("mode", "rule_search"),
                        ("filled_in", "rule_search"),
                        ("folder", watolib.Folder.current().path()),
                        ("search_p_ruleset_used", DropdownChoice.option_id(True)),
                        ("search_p_ruleset_used_USE", "on"),
                    ])),
            )

        if config.user.may("wato.auditlog"):
            yield PageMenuEntry(
                title=_("Audit log"),
                icon_name="auditlog",
                item=make_simple_link(make_object_audit_log_url(self._folder.object_ref())),
            )
Esempio n. 14
0
    def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
        if not self._may_edit_config():
            return PageMenu(dropdowns=[], breadcrumb=breadcrumb)

        return PageMenu(
            dropdowns=[
                PageMenuDropdown(
                    name="keys",
                    title=_("Keys"),
                    topics=[
                        PageMenuTopic(
                            title=_("Add key"),
                            entries=[
                                PageMenuEntry(
                                    title=_("Add key"),
                                    icon_name="new",
                                    item=make_simple_link(
                                        makeuri_contextless(
                                            request,
                                            [("mode", self.edit_mode)])),
                                    is_shortcut=True,
                                    is_suggested=True,
                                ),
                                PageMenuEntry(
                                    title=_("Upload key"),
                                    icon_name="upload",
                                    item=make_simple_link(
                                        makeuri_contextless(
                                            request,
                                            [("mode", self.upload_mode)])),
                                    is_shortcut=True,
                                    is_suggested=True,
                                ),
                            ],
                        ),
                    ],
                ),
            ],
            breadcrumb=breadcrumb,
        )
Esempio n. 15
0
def make_host_status_link(host_name: str, view_name: str) -> PageMenuEntry:
    return PageMenuEntry(
        title=_("Monitoring status"),
        icon_name="status",
        item=make_simple_link(
            html.makeuri_contextless([
                ("view_name", view_name),
                ("filename", watolib.Folder.current().path() + "/hosts.mk"),
                ("host", host_name),
                ("site", ""),
            ],
                                     filename="view.py")),
    )
Esempio n. 16
0
def _page_menu_entries_ack_werk(
        werk: Dict[str, Any]) -> Iterator[PageMenuEntry]:
    if not may_acknowledge():
        return

    ack_url = html.makeactionuri([("_werk_ack", werk["id"])],
                                 filename="version.py")
    yield PageMenuEntry(
        title=_("Acknowledge"),
        icon_name="werk_ack",
        item=make_simple_link(ack_url),
        is_enabled=werk["compatible"] == "incomp_unack",
    )
Esempio n. 17
0
    def page_menu_entries_related_monitoring(
            self, crash_info: CrashInfo,
            site_id: SiteId) -> Iterator[PageMenuEntry]:
        host = crash_info["details"]["host"]
        service = crash_info["details"]["description"]

        host_url = makeuri(
            request,
            [
                ("view_name", "hoststatus"),
                ("host", host),
                ("site", site_id),
            ],
            filename="view.py",
        )
        yield PageMenuEntry(
            title=_("Host status"),
            icon_name="status",
            item=make_simple_link(host_url),
        )

        service_url = makeuri(
            request,
            [
                ("view_name", "service"),
                ("host", host),
                ("service", service),
                (
                    "site",
                    site_id,
                ),
            ],
            filename="view.py",
        )
        yield PageMenuEntry(
            title=_("Service status"),
            icon_name="status",
            item=make_simple_link(service_url),
        )
Esempio n. 18
0
 def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="timeperiods",
                 title=_("Time periods"),
                 topics=[
                     PageMenuTopic(
                         title=_("Add time period"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Add time period"),
                                 icon_name="new",
                                 item=make_simple_link(
                                     watolib.folder_preserving_link([
                                         ("mode", "edit_timeperiod")
                                     ])),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                             PageMenuEntry(
                                 title=_("Import iCalendar"),
                                 icon_name="ical",
                                 item=make_simple_link(
                                     watolib.folder_preserving_link([
                                         ("mode", "import_ical")
                                     ])),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
         inpage_search=PageMenuSearch(),
     )
Esempio n. 19
0
def make_folder_status_link(folder: watolib.CREFolder,
                            view_name: str) -> PageMenuEntry:
    return PageMenuEntry(
        title=_("Status"),
        icon_name="status",
        item=make_simple_link(
            html.makeuri_contextless(
                [
                    ("view_name", view_name),
                    ("wato_folder", folder.path()),
                ],
                filename="view.py",
            )),
    )
Esempio n. 20
0
 def _page_menu_entries_details(self) -> Iterator[PageMenuEntry]:
     for toggle_id, title, setting in [
         ("_show_host_tags", _("host tags"), config.user.wato_folders_show_tags),
         ("_show_explicit_labels", _("explicit host labels"),
          config.user.wato_folders_show_labels),
     ]:
         yield PageMenuEntry(
             title=_("Show %s" % title),
             icon_name="checked_checkbox" if setting else "checkbox",
             item=make_simple_link(
                 makeuri(global_request, [
                     (toggle_id, "" if setting else "1"),
                 ])),
         )
Esempio n. 21
0
def _page_menu_entries_related(
        page_name: str,
        show_shortcuts: bool = True) -> Iterator[PageMenuEntry]:
    if page_name != "user_change_pw":
        yield PageMenuEntry(
            title=_("Change password"),
            icon_name="topic_change_password",
            item=make_simple_link("user_change_pw.py"),
            is_shortcut=show_shortcuts,
        )

    if page_name != "user_two_factor_overview" and user.may(
            "general.manage_2fa"):
        yield PageMenuEntry(
            title=_("Edit two-factor authentication"),
            icon_name="topic_2fa",
            item=make_simple_link("user_two_factor_overview.py"),
            is_shortcut=show_shortcuts,
        )

    if page_name != "user_profile":
        yield PageMenuEntry(
            title=_("Edit profile"),
            icon_name="topic_profile",
            item=make_simple_link("user_profile.py"),
            is_shortcut=show_shortcuts,
        )

    if (page_name != "user_notifications_p"
            and rulebased_notifications_enabled()
            and user.may("general.edit_notifications")):
        yield PageMenuEntry(
            title=_("Notification rules"),
            icon_name="topic_events",
            item=make_simple_link("wato.py?mode=user_notifications_p"),
            is_shortcut=show_shortcuts,
        )
Esempio n. 22
0
def make_service_status_link(host_name: str, service_name: str) -> PageMenuEntry:
    return PageMenuEntry(
        title=_("Monitoring status"),
        icon_name="status",
        item=make_simple_link(
            makeuri_contextless(
                request,
                [
                    ("view_name", "service"),
                    ("host", host_name),
                    ("service", service_name),
                ],
                filename="view.py",
            )),
    )
Esempio n. 23
0
def _page_menu_entries_ack_werk(werk: Dict[str, Any]) -> Iterator[PageMenuEntry]:
    if not may_acknowledge():
        return

    ack_url = makeactionuri(
        request, transactions, [("_werk_ack", werk["id"])], filename="change_log.py"
    )
    yield PageMenuEntry(
        title=_("Acknowledge"),
        icon_name="werk_ack",
        item=make_simple_link(ack_url),
        is_enabled=werk["compatible"] == "incomp_unack",
        is_shortcut=True,
        is_suggested=True,
    )
Esempio n. 24
0
    def _page_menu_entries_actions(self) -> Iterator[PageMenuEntry]:
        if not self._log_exists():
            return

        if not config.user.may("wato.auditlog"):
            return

        if not config.user.may("wato.edit"):
            return

        if config.user.may("wato.clear_auditlog"):
            yield PageMenuEntry(
                title=_("Clear log"),
                icon_name="trash",
                item=make_simple_link(html.makeactionuri([("_action", "clear")])),
            )
Esempio n. 25
0
 def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="users",
                 title=_("Users"),
                 topics=[
                     PageMenuTopic(
                         title=_("Add user"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Add user"),
                                 icon_name="new",
                                 item=make_simple_link(
                                     watolib.folder_preserving_link([
                                         ("mode", "edit_user")
                                     ])),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                     PageMenuTopic(
                         title=_("Synchronized users"),
                         entries=list(
                             self._page_menu_entries_synchronized_users()),
                     ),
                     PageMenuTopic(
                         title=_("Notify users"),
                         entries=list(
                             self._page_menu_entries_notify_users()),
                     ),
                 ],
             ),
             PageMenuDropdown(
                 name="related",
                 title=_("Related"),
                 topics=[
                     PageMenuTopic(
                         title=_("Setup"),
                         entries=list(self._page_menu_entries_related()),
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Esempio n. 26
0
def _page_menu_entries_ack_all_werks() -> Iterator[PageMenuEntry]:
    if not may_acknowledge():
        return

    yield PageMenuEntry(
        title=_("Acknowledge all"),
        icon_name="werk_ack",
        is_shortcut=True,
        is_suggested=True,
        item=make_simple_link(
            make_confirm_link(
                url=makeactionuri(request, transactions, [("_ack_all", "1")]),
                message=_("Do you really want to acknowledge <b>all</b> incompatible werks?"),
            )
        ),
        is_enabled=bool(unacknowledged_incompatible_werks()),
    )
Esempio n. 27
0
    def _extend_display_dropdown(self, menu: PageMenu) -> None:
        display_dropdown = menu.get_dropdown_by_name(
            "display", make_display_options_dropdown())

        display_dropdown.topics.insert(
            0,
            PageMenuTopic(
                title=_("Filter"),
                entries=[
                    PageMenuEntry(
                        title=_("Filter view"),
                        icon_name="filters_set"
                        if html.form_submitted("options") else "filter",
                        item=PageMenuSidePopup(self._render_filter_form()),
                        name="filters",
                        is_shortcut=True,
                    ),
                ],
            ),
        )

        display_dropdown.topics.insert(
            0,
            PageMenuTopic(
                title=_("Details"),
                entries=[
                    PageMenuEntry(
                        title=_("Show details"),
                        icon_name="checked_checkbox"
                        if self._show_details else "checkbox",
                        item=make_simple_link(
                            makeactionuri(
                                request,
                                transactions,
                                [
                                    ("show_details",
                                     "0" if self._show_details else "1"),
                                ],
                            )),
                        name="show_details",
                        css_classes=["toggle"],
                    )
                ],
            ),
        )
Esempio n. 28
0
    def _page_menu_entries_export(self) -> Iterator[PageMenuEntry]:
        if not self._log_exists():
            return

        if not config.user.may("wato.auditlog"):
            return

        if not config.user.may("wato.edit"):
            return

        if not config.user.may("general.csv_export"):
            return

        yield PageMenuEntry(
            title=_("Export CSV"),
            icon_name="download_csv",
            item=make_simple_link(html.makeactionuri([("_action", "csv")])),
        )
Esempio n. 29
0
def _extend_display_dropdown(menu: PageMenu) -> None:
    display_dropdown = menu.get_dropdown_by_name("display", make_display_options_dropdown())
    context_hidden = html.request.var('_hidecontext', 'no') == 'yes'
    display_dropdown.topics.insert(
        0,
        PageMenuTopic(
            title=_("Context"),
            entries=[
                PageMenuEntry(
                    title=_("Show context"),
                    icon_name="checkbox" if context_hidden else "checked_checkbox",
                    item=make_simple_link(
                        makeactionuri(request, transactions, [
                            ("_show_backlog", "no") if context_hidden else ("_hidecontext", "yes"),
                        ])),
                ),
            ],
        ))
Esempio n. 30
0
def render_page_confirm(acktime, failed_notifications):
    title = _("Confirm failed notifications")
    breadcrumb = make_simple_page_breadcrumb(
        mega_menu_registry.menu_monitoring(), title)

    confirm_url = make_simple_link(
        make_confirm_link(
            url=makeactionuri(request, transactions,
                              [("acktime", str(acktime)), ("_confirm", "1")]),
            message=
            _("Do you really want to acknowledge all failed notifications up to %s?"
              ) % cmk.utils.render.date_and_time(acktime),
        ))

    page_menu = PageMenu(
        dropdowns=[
            PageMenuDropdown(
                name="actions",
                title=_("Actions"),
                topics=[
                    PageMenuTopic(
                        title=_("Actions"),
                        entries=[
                            PageMenuEntry(
                                title=_("Confirm"),
                                icon_name="save",
                                item=confirm_url,
                                is_shortcut=True,
                                is_suggested=True,
                                is_enabled=failed_notifications,
                            ),
                        ],
                    ),
                ],
            ),
        ],
        breadcrumb=breadcrumb,
    )
    html.header(title, breadcrumb, page_menu)

    render_notification_table(failed_notifications)

    html.footer()