certbot.plugins.dns_common module

Common code for DNS Authenticator Plugins.

class certbot.plugins.dns_common.DNSAuthenticator(config: NamespaceConfig, name: str)[source]

Bases: Plugin, Authenticator

Base class for DNS Authenticators

classmethod add_parser_arguments(add: Callable[[...], None], default_propagation_seconds: int = 10) None[source]

Add plugin arguments to the CLI argument parser.

Parameters:

add (callable) – Function that proxies calls to argparse.ArgumentParser.add_argument prepending options with unique plugin name prefix.

auth_hint(failed_achalls: List[AnnotatedChallenge]) str[source]

See certbot.plugins.common.Plugin.auth_hint.

get_chall_pref(unused_domain: str) Iterable[Type[Challenge]][source]

Return collections.Iterable of challenge preferences.

Parameters:

domain (str) – Domain for which challenge preferences are sought.

Returns:

collections.Iterable of challenge types (subclasses of acme.challenges.Challenge) with the most preferred challenges first. If a type is not specified, it means the Authenticator cannot perform the challenge.

Return type:

collections.Iterable

prepare() None[source]

Prepare the plugin.

Finish up any additional initialization.

Raises:
  • .PluginError – when full initialization cannot be completed.

  • .MisconfigurationError – when full initialization cannot be completed. Plugin will be displayed on a list of available plugins.

  • .NoInstallationError – when the necessary programs/files cannot be located. Plugin will NOT be displayed on a list of available plugins.

  • .NotSupportedError – when the installation is recognized, but the version is not currently supported.

more_info() str[source]

Human-readable string to help the user.

Should describe the steps taken and any relevant info to help the user decide which plugin to use.

Rtype str:

perform(achalls: List[AnnotatedChallenge]) List[ChallengeResponse][source]

Perform the given challenge.

Parameters:

achalls (list) – Non-empty (guaranteed) list of AnnotatedChallenge instances, such that it contains types found within get_chall_pref() only.

Returns:

list of ACME ChallengeResponse instances corresponding to each provided Challenge.

Return type:

collections.List of acme.challenges.ChallengeResponse, where responses are required to be returned in the same order as corresponding input challenges

Raises:

.PluginError – If some or all challenges cannot be performed

cleanup(achalls: List[AnnotatedChallenge]) None[source]

Revert changes and shutdown after challenges complete.

This method should be able to revert all changes made by perform, even if perform exited abnormally.

Parameters:

achalls (list) – Non-empty (guaranteed) list of AnnotatedChallenge instances, a subset of those previously passed to perform().

Raises:

PluginError – if original configuration cannot be restored

class certbot.plugins.dns_common.CredentialsConfiguration(filename: str, mapper: ~typing.Callable[[str], str] = <function CredentialsConfiguration.<lambda>>)[source]

Bases: object

Represents a user-supplied filed which stores API credentials.

require(required_variables: Mapping[str, str]) None[source]

Ensures that the supplied set of variables are all present in the file.

Parameters:

required_variables (dict) – Map of variable which must be present to error to display.

Raises:

errors.PluginError – If one or more are missing.

conf(var: str) str[source]

Find a configuration value for variable var, as transformed by mapper.

Parameters:

var (str) – The variable to get.

Returns:

The value of the variable.

Return type:

str

certbot.plugins.dns_common.validate_file(filename: str) None[source]

Ensure that the specified file exists.

certbot.plugins.dns_common.validate_file_permissions(filename: str) None[source]

Ensure that the specified file exists and warn about unsafe permissions.

certbot.plugins.dns_common.base_domain_name_guesses(domain: str) List[str][source]

Return a list of progressively less-specific domain names.

One of these will probably be the domain name known to the DNS provider.

Example:

>>> base_domain_name_guesses('foo.bar.baz.example.com')
['foo.bar.baz.example.com', 'bar.baz.example.com', 'baz.example.com', 'example.com', 'com']
Parameters:

domain (str) – The domain for which to return guesses.

Returns:

The a list of less specific domain names.

Return type:

list