mirror of
https://github.com/certbot/certbot.git
synced 2026-01-14 23:22:21 +03:00
185 lines
5.6 KiB
Python
185 lines
5.6 KiB
Python
"""Let's Encrypt client interfaces."""
|
|
import zope.interface
|
|
|
|
# pylint: disable=no-self-argument,no-method-argument,no-init
|
|
|
|
|
|
class IAuthenticator(zope.interface.Interface):
|
|
"""Generic Let's Encrypt Authenticator.
|
|
|
|
Class represents all possible tools processes that have the
|
|
ability to perform challenges and attain a certificate.
|
|
|
|
"""
|
|
def get_chall_pref(domain):
|
|
"""Return list of challenge preferences.
|
|
|
|
:param str domain: Domain for which challenge preferences are sought.
|
|
|
|
:returns: list of strings with the most preferred challenges first.
|
|
If a type is not specified, it means the Authenticator cannot
|
|
perform the challenge.
|
|
:rtype: list
|
|
|
|
"""
|
|
def perform(chall_list):
|
|
"""Perform the given challenge.
|
|
|
|
:param list chall_list: List of namedtuple types defined in
|
|
challenge_util.py. DvsniChall...ect..
|
|
|
|
:returns: List of responses
|
|
If the challenge cant be completed...
|
|
None - Authenticator can perform challenge, but can't at this time
|
|
False - Authenticator will never be able to perform (error)
|
|
:rtype: `list` of dicts
|
|
|
|
"""
|
|
def cleanup(chall_list):
|
|
"""Revert changes and shutdown after challenges complete."""
|
|
|
|
|
|
class IChallenge(zope.interface.Interface):
|
|
"""Let's Encrypt challenge."""
|
|
|
|
def perform():
|
|
"""Perform the challenge."""
|
|
|
|
def generate_response():
|
|
"""Generate response."""
|
|
|
|
def cleanup():
|
|
"""Cleanup."""
|
|
|
|
|
|
class IInstaller(zope.interface.Interface):
|
|
"""Generic Let's Encrypt Installer Interface.
|
|
|
|
Represents any server that an X509 certificate can be placed.
|
|
|
|
"""
|
|
def get_all_names():
|
|
"""Returns all names that may be authenticated."""
|
|
|
|
def deploy_cert(domain, cert, key, cert_chain=None):
|
|
"""Deploy certificate.
|
|
|
|
:param str domain: domain to deploy certificate
|
|
:param str cert: certificate filename
|
|
:param str key: private key filename
|
|
|
|
"""
|
|
def enhance(domain, enhancment, options=None):
|
|
"""Peform a configuration enhancment.
|
|
|
|
:param str domain: domain for which to provide enhancement
|
|
:param str enhancement: An enhancement as defined in CONFIG.ENHANCEMENTS
|
|
:param options: flexible options parameter for enhancement
|
|
:type options: Check documentation of
|
|
:class:`letsencrypt.client.CONFIG.ENHANCEMENTS` for expected options
|
|
for each enhancement.
|
|
|
|
"""
|
|
def supported_enhancements():
|
|
"""Returns a list of supported enhancments.
|
|
|
|
:returns: supported enhancments which should be a subset of the
|
|
enhancments in :class:`letsencrypt.client.CONFIG.ENHANCEMENTS`
|
|
:rtype: `list` of `str`
|
|
|
|
"""
|
|
def get_all_certs_keys():
|
|
"""Retrieve all certs and keys set in configuration.
|
|
|
|
:returns: list of tuples with form [(cert, key, path)]
|
|
cert - str path to certificate file
|
|
key - str path to associated key file
|
|
path - file path to configuration file
|
|
:rtype: list
|
|
|
|
"""
|
|
def save(title=None, temporary=False):
|
|
"""Saves all changes to the configuration files.
|
|
|
|
Both title and temporary are needed because a save may be
|
|
intended to be permanent, but the save is not ready to be a full
|
|
checkpoint
|
|
|
|
:param str title: The title of the save. If a title is given, the
|
|
configuration will be saved as a new checkpoint and put in a
|
|
timestamped directory. `title` has no effect if temporary is true.
|
|
|
|
:param bool temporary: Indicates whether the changes made will
|
|
be quickly reversed in the future (challenges)
|
|
|
|
"""
|
|
def rollback_checkpoints(rollback=1):
|
|
"""Revert `rollback` number of configuration checkpoints."""
|
|
|
|
def view_config_changes():
|
|
"""Display all of the LE config changes."""
|
|
|
|
def config_test():
|
|
"""Make sure the configuration is valid."""
|
|
|
|
def restart():
|
|
"""Restart or refresh the server content."""
|
|
|
|
|
|
class IDisplay(zope.interface.Interface):
|
|
"""Generic display."""
|
|
|
|
def generic_notification(message):
|
|
"""Displays a string message
|
|
|
|
:param str message: Message to display
|
|
|
|
"""
|
|
def generic_menu(message, choices, input_text=""):
|
|
"""Displays a generic menu.
|
|
|
|
:param str message: message to display
|
|
:param tup choices: choices formated as a `list` of `tup`
|
|
:param str input_text: instructions on how to make a selection
|
|
|
|
"""
|
|
def generic_input(message):
|
|
"""Accept input from the user."""
|
|
|
|
def generic_yesno(message, yes_label="Yes", no_label="No"):
|
|
"""A yes/no dialog."""
|
|
|
|
def filter_names(names):
|
|
"""Allow the user to select which names they would like to activate."""
|
|
|
|
def success_installation(domains):
|
|
"""Display a congratulations message for new https domains."""
|
|
|
|
def display_certs(certs):
|
|
"""Display a list of certificates."""
|
|
|
|
def confirm_revocation(cert):
|
|
"""Confirmation of revocation screen."""
|
|
|
|
def more_info_cert(cert):
|
|
"""Print out all information for a given certificate dict."""
|
|
|
|
def redirect_by_default():
|
|
"""Ask the user whether they would like to redirect to HTTPS."""
|
|
|
|
|
|
class IValidator(object):
|
|
"""Configuration validator."""
|
|
|
|
def redirect(name):
|
|
"""Verify redirect to HTTPS."""
|
|
|
|
def ocsp_stapling(name):
|
|
"""Verify ocsp stapling for domain."""
|
|
|
|
def https(names):
|
|
"""Verifiy HTTPS is enabled for domain."""
|
|
|
|
def hsts(name):
|
|
"""Verify HSTS header is enabled."""
|