404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.143.4.178: ~ $
"""Collects and displays information to the user."""
import collections
import logging
import queue
import sys
import textwrap

from certbot import configuration
from certbot import util

logger = logging.getLogger(__name__)


class Reporter:
    """Collects and displays information to the user.

    :ivar `queue.PriorityQueue` messages: Messages to be displayed to
        the user.

    """

    HIGH_PRIORITY = 0
    """High priority constant. See `add_message`."""
    MEDIUM_PRIORITY = 1
    """Medium priority constant. See `add_message`."""
    LOW_PRIORITY = 2
    """Low priority constant. See `add_message`."""

    _msg_type = collections.namedtuple('_msg_type', 'priority text on_crash')

    def __init__(self, config: configuration.NamespaceConfig) -> None:
        self.messages: queue.PriorityQueue[Reporter._msg_type] = queue.PriorityQueue()
        self.config = config

    def add_message(self, msg: str, priority: int, on_crash: bool = True) -> None:
        """Adds msg to the list of messages to be printed.

        :param str msg: Message to be displayed to the user.

        :param int priority: One of `HIGH_PRIORITY`, `MEDIUM_PRIORITY`,
            or `LOW_PRIORITY`.

        :param bool on_crash: Whether or not the message should be
            printed if the program exits abnormally.

        """
        assert self.HIGH_PRIORITY <= priority <= self.LOW_PRIORITY
        self.messages.put(self._msg_type(priority, msg, on_crash))
        logger.debug("Reporting to user: %s", msg)

    def print_messages(self) -> None:
        """Prints messages to the user and clears the message queue.

        If there is an unhandled exception, only messages for which
        ``on_crash`` is ``True`` are printed.

        """
        bold_on = False
        if not self.messages.empty():
            no_exception = sys.exc_info()[0] is None
            bold_on = sys.stdout.isatty()
            if not self.config.quiet:
                if bold_on:
                    print(util.ANSI_SGR_BOLD)
                print('IMPORTANT NOTES:')
            first_wrapper = textwrap.TextWrapper(
                initial_indent=' - ',
                subsequent_indent=(' ' * 3),
                break_long_words=False,
                break_on_hyphens=False)
            next_wrapper = textwrap.TextWrapper(
                initial_indent=first_wrapper.subsequent_indent,
                subsequent_indent=first_wrapper.subsequent_indent,
                break_long_words=False,
                break_on_hyphens=False)
        while not self.messages.empty():
            msg = self.messages.get()
            if self.config.quiet:
                # In --quiet mode, we only print high priority messages that
                # are flagged for crash cases
                if not (msg.priority == self.HIGH_PRIORITY and msg.on_crash):
                    continue
            if no_exception or msg.on_crash:
                if bold_on and msg.priority > self.HIGH_PRIORITY:
                    if not self.config.quiet:
                        sys.stdout.write(util.ANSI_SGR_RESET)
                        bold_on = False
                lines = msg.text.splitlines()
                print(first_wrapper.fill(lines[0]))
                if len(lines) > 1:
                    print("\n".join(
                        next_wrapper.fill(line) for line in lines[1:]))
        if bold_on and not self.config.quiet:
            sys.stdout.write(util.ANSI_SGR_RESET)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
cli Folder 0755
display Folder 0755
plugins Folder 0755
__init__.py File 184 B 0644
account.py File 15.89 KB 0644
auth_handler.py File 19.96 KB 0644
cert_manager.py File 18.39 KB 0644
client.py File 33.2 KB 0644
constants.py File 6.92 KB 0644
eff.py File 4.81 KB 0644
error_handler.py File 7.29 KB 0644
hooks.py File 8.42 KB 0644
lock.py File 9.91 KB 0644
log.py File 14.73 KB 0644
main.py File 61.22 KB 0644
renewal.py File 23.24 KB 0644
reporter.py File 3.4 KB 0644
snap_config.py File 3.51 KB 0644
storage.py File 48.9 KB 0644
updater.py File 4.64 KB 0644