"""Certbot client errors."""
from typing import Set
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from certbot.achallenges import AnnotatedChallenge
[docs]class Error(Exception):
"""Generic Certbot client error."""
[docs]class AccountStorageError(Error):
"""Generic `.AccountStorage` error."""
[docs]class AccountNotFound(AccountStorageError):
"""Account not found error."""
[docs]class ReverterError(Error):
"""Certbot Reverter error."""
[docs]class SubprocessError(Error):
"""Subprocess handling error."""
[docs]class CertStorageError(Error):
"""Generic `.CertStorage` error."""
[docs]class HookCommandNotFound(Error):
"""Failed to find a hook command in the PATH."""
[docs]class SignalExit(Error):
"""A Unix signal was received while in the ErrorHandler context manager."""
[docs]class OverlappingMatchFound(Error):
"""Multiple lineages matched what should have been a unique result."""
[docs]class LockError(Error):
"""File locking error."""
# Auth Handler Errors
[docs]class AuthorizationError(Error):
"""Authorization error."""
[docs]class FailedChallenges(AuthorizationError):
"""Failed challenges error.
:ivar set failed_achalls: Failed `.AnnotatedChallenge` instances.
"""
def __init__(self, failed_achalls: Set['AnnotatedChallenge']) -> None:
assert failed_achalls
self.failed_achalls = failed_achalls
super().__init__()
def __str__(self) -> str:
return "Failed authorization procedure. {0}".format(
", ".join(
"{0} ({1}): {2}".format(achall.domain, achall.typ, achall.error)
for achall in self.failed_achalls if achall.error is not None))
# Plugin Errors
[docs]class PluginError(Error):
"""Certbot Plugin error."""
[docs]class PluginEnhancementAlreadyPresent(Error):
""" Enhancement was already set """
[docs]class PluginSelectionError(Error):
"""A problem with plugin/configurator selection or setup"""
[docs]class NoInstallationError(PluginError):
"""Certbot No Installation error."""
[docs]class MisconfigurationError(PluginError):
"""Certbot Misconfiguration error."""
[docs]class NotSupportedError(PluginError):
"""Certbot Plugin function not supported error."""
[docs]class PluginStorageError(PluginError):
"""Certbot Plugin Storage error."""
[docs]class StandaloneBindError(Error):
"""Standalone plugin bind error."""
def __init__(self, socket_error: OSError, port: int) -> None:
super().__init__(
"Problem binding to port {0}: {1}".format(port, socket_error))
self.socket_error = socket_error
self.port = port
[docs]class ConfigurationError(Error):
"""Configuration sanity error."""
# NoninteractiveDisplay error:
[docs]class MissingCommandlineFlag(Error):
"""A command line argument was missing in noninteractive usage"""