Package list python-certbot-dns-rfc2136 / 00b9f1f5-e8a9-4947-9d58-4a6eb80691fc/upstream
Import upstream version 1.17.0 Debian Janitor 4 months ago
8 changed file(s) with 45 addition(s) and 58 deletion(s). Raw diff Collapse all Expand all
00 Metadata-Version: 2.1
11 Name: certbot-dns-rfc2136
2 Version: 1.10.1
2 Version: 1.17.0
33 Summary: RFC 2136 DNS Authenticator plugin for Certbot
44 Home-page: https://github.com/certbot/certbot
55 Author: Certbot Project
6 Author-email: client-dev@letsencrypt.org
6 Author-email: certbot-dev@eff.org
77 License: Apache License 2.0
8 Description: UNKNOWN
98 Platform: UNKNOWN
109 Classifier: Development Status :: 5 - Production/Stable
1110 Classifier: Environment :: Plugins
1312 Classifier: License :: OSI Approved :: Apache Software License
1413 Classifier: Operating System :: POSIX :: Linux
1514 Classifier: Programming Language :: Python
16 Classifier: Programming Language :: Python :: 2
17 Classifier: Programming Language :: Python :: 2.7
1815 Classifier: Programming Language :: Python :: 3
1916 Classifier: Programming Language :: Python :: 3.6
2017 Classifier: Programming Language :: Python :: 3.7
2623 Classifier: Topic :: System :: Networking
2724 Classifier: Topic :: System :: Systems Administration
2825 Classifier: Topic :: Utilities
29 Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*
26 Requires-Python: >=3.6
3027 Provides-Extra: docs
28 License-File: LICENSE.txt
29
30 UNKNOWN
31
22 completing a ``dns-01`` challenge (`~acme.challenges.DNS01`) by creating, and
33 subsequently removing, TXT records using RFC 2136 Dynamic Updates.
44
5 .. note::
6 The plugin is not installed by default. It can be installed by heading to
7 `certbot.eff.org <https://certbot.eff.org/instructions#wildcard>`_, choosing your system and
8 selecting the Wildcard tab.
59
610 Named Arguments
711 ---------------
0 # type: ignore
1 # pylint: disable=no-member
2 # Many attributes of dnspython are now dynamically defined which causes both
3 # mypy and pylint to error about accessing attributes they think do not exist.
4 # This is the case even in up-to-date versions of mypy and pylint which as of
5 # writing this are 0.790 and 2.6.0 respectively. This problem may be fixed in
6 # dnspython 2.1.0. See https://github.com/rthalley/dnspython/issues/598. For
7 # now, let's disable these checks. This is done at the very top of the file
8 # like this because "type: ignore" must be the first line in the file to be
9 # respected by mypy.
100 """DNS Authenticator using RFC 2136 Dynamic Updates."""
111 import logging
2 from typing import Optional
123
134 import dns.flags
145 import dns.message
2415 from certbot import errors
2516 from certbot import interfaces
2617 from certbot.plugins import dns_common
18 from certbot.plugins.dns_common import CredentialsConfiguration
2719
2820 logger = logging.getLogger(__name__)
2921
3426 class Authenticator(dns_common.DNSAuthenticator):
3527 """DNS Authenticator using RFC 2136 Dynamic Updates
3628
37 This Authenticator uses RFC 2136 Dynamic Updates to fulfull a dns-01 challenge.
29 This Authenticator uses RFC 2136 Dynamic Updates to fulfill a dns-01 challenge.
3830 """
3931
4032 ALGORITHMS = {
5244 ttl = 120
5345
5446 def __init__(self, *args, **kwargs):
55 super(Authenticator, self).__init__(*args, **kwargs)
56 self.credentials = None
47 super().__init__(*args, **kwargs)
48 self.credentials: Optional[CredentialsConfiguration] = None
5749
5850 @classmethod
5951 def add_parser_arguments(cls, add): # pylint: disable=arguments-differ
60 super(Authenticator, cls).add_parser_arguments(add, default_propagation_seconds=60)
52 super().add_parser_arguments(add, default_propagation_seconds=60)
6153 add('credentials', help='RFC 2136 credentials INI file.')
6254
6355 def more_info(self): # pylint: disable=missing-function-docstring
8981 self._get_rfc2136_client().del_txt_record(validation_name, validation)
9082
9183 def _get_rfc2136_client(self):
84 if not self.credentials: # pragma: no cover
85 raise errors.Error("Plugin has not been prepared.")
9286 return _RFC2136Client(self.credentials.conf('server'),
9387 int(self.credentials.conf('port') or self.PORT),
9488 self.credentials.conf('name'),
9791 dns.tsig.HMAC_MD5))
9892
9993
100 class _RFC2136Client(object):
94 class _RFC2136Client:
10195 """
10296 Encapsulates all communication with the target DNS server.
10397 """
00 Metadata-Version: 2.1
11 Name: certbot-dns-rfc2136
2 Version: 1.10.1
2 Version: 1.17.0
33 Summary: RFC 2136 DNS Authenticator plugin for Certbot
44 Home-page: https://github.com/certbot/certbot
55 Author: Certbot Project
6 Author-email: client-dev@letsencrypt.org
6 Author-email: certbot-dev@eff.org
77 License: Apache License 2.0
8 Description: UNKNOWN
98 Platform: UNKNOWN
109 Classifier: Development Status :: 5 - Production/Stable
1110 Classifier: Environment :: Plugins
1312 Classifier: License :: OSI Approved :: Apache Software License
1413 Classifier: Operating System :: POSIX :: Linux
1514 Classifier: Programming Language :: Python
16 Classifier: Programming Language :: Python :: 2
17 Classifier: Programming Language :: Python :: 2.7
1815 Classifier: Programming Language :: Python :: 3
1916 Classifier: Programming Language :: Python :: 3.6
2017 Classifier: Programming Language :: Python :: 3.7
2623 Classifier: Topic :: System :: Networking
2724 Classifier: Topic :: System :: Systems Administration
2825 Classifier: Topic :: Utilities
29 Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*
26 Requires-Python: >=3.6
3027 Provides-Extra: docs
28 License-File: LICENSE.txt
29
30 UNKNOWN
31
00 dnspython
1 setuptools
1 setuptools>=39.0.1
22 zope.interface
3 acme>=0.29.0
4 certbot>=1.1.0
5
6 [:python_version < "3.3"]
7 mock
3 acme>=1.17.0
4 certbot>=1.17.0
85
96 [docs]
107 Sphinx>=1.0
110110 # Add any paths that contain custom static files (such as style sheets) here,
111111 # relative to this directory. They are copied after the builtin static files,
112112 # so a file named "default.css" will overwrite the builtin "default.css".
113 html_static_path = ['_static']
113 #html_static_path = ['_static']
114114
115115
116116 # -- Options for HTMLHelp output ------------------------------------------
0 from distutils.version import LooseVersion
10 import os
21 import sys
32
4 from setuptools import __version__ as setuptools_version
53 from setuptools import find_packages
64 from setuptools import setup
75
8 version = '1.10.1'
6 version = '1.17.0'
97
10 # Remember to update local-oldest-requirements.txt when changing the minimum
11 # acme/certbot version.
128 install_requires = [
139 'dnspython',
14 'setuptools',
10 'setuptools>=39.0.1',
1511 'zope.interface',
1612 ]
1713
1814 if not os.environ.get('SNAP_BUILD'):
1915 install_requires.extend([
20 'acme>=0.29.0',
21 'certbot>=1.1.0',
16 # We specify the minimum acme and certbot version as the current plugin
17 # version for simplicity. See
18 # https://github.com/certbot/certbot/issues/8761 for more info.
19 f'acme>={version}',
20 f'certbot>={version}',
2221 ])
2322 elif 'bdist_wheel' in sys.argv[1:]:
2423 raise RuntimeError('Unset SNAP_BUILD when building wheels '
2524 'to include certbot dependencies.')
2625 if os.environ.get('SNAP_BUILD'):
2726 install_requires.append('packaging')
28
29 setuptools_known_environment_markers = (LooseVersion(setuptools_version) >= LooseVersion('36.2'))
30 if setuptools_known_environment_markers:
31 install_requires.append('mock ; python_version < "3.3"')
32 elif 'bdist_wheel' in sys.argv[1:]:
33 raise RuntimeError('Error, you are trying to build certbot wheels using an old version '
34 'of setuptools. Version 36.2+ of setuptools is required.')
35 elif sys.version_info < (3,3):
36 install_requires.append('mock')
3727
3828 docs_extras = [
3929 'Sphinx>=1.0', # autodoc_member_order = 'bysource', autodoc_default_flags
4636 description="RFC 2136 DNS Authenticator plugin for Certbot",
4737 url='https://github.com/certbot/certbot',
4838 author="Certbot Project",
49 author_email='client-dev@letsencrypt.org',
39 author_email='certbot-dev@eff.org',
5040 license='Apache License 2.0',
51 python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*',
41 python_requires='>=3.6',
5242 classifiers=[
5343 'Development Status :: 5 - Production/Stable',
5444 'Environment :: Plugins',
5646 'License :: OSI Approved :: Apache Software License',
5747 'Operating System :: POSIX :: Linux',
5848 'Programming Language :: Python',
59 'Programming Language :: Python :: 2',
60 'Programming Language :: Python :: 2.7',
6149 'Programming Language :: Python :: 3',
6250 'Programming Language :: Python :: 3.6',
6351 'Programming Language :: Python :: 3.7',
2727 def setUp(self):
2828 from certbot_dns_rfc2136._internal.dns_rfc2136 import Authenticator
2929
30 super(AuthenticatorTest, self).setUp()
30 super().setUp()
3131
3232 path = os.path.join(self.tempdir, 'file.ini')
3333 dns_test_common.write(VALID_CONFIG, path)
4141 # _get_rfc2136_client | pylint: disable=protected-access
4242 self.auth._get_rfc2136_client = mock.MagicMock(return_value=self.mock_client)
4343
44 def test_perform(self):
44 @test_util.patch_get_utility()
45 def test_perform(self, unused_mock_get_utility):
4546 self.auth.perform([self.achall])
4647
4748 expected = [mock.call.add_txt_record('_acme-challenge.'+DOMAIN, mock.ANY, mock.ANY)]
6465 self.auth.perform,
6566 [self.achall])
6667
67 def test_valid_algorithm_passes(self):
68 @test_util.patch_get_utility()
69 def test_valid_algorithm_passes(self, unused_mock_get_utility):
6870 config = VALID_CONFIG.copy()
6971 config["rfc2136_algorithm"] = "HMAC-sha512"
7072 dns_test_common.write(config, self.config.rfc2136_credentials)