Projet

Général

Profil

0001-misc-do-not-use-dns.resolver.query-on-later-versions.patch

Benjamin Dauvergne, 25 octobre 2022 07:54

Télécharger (3,1 ko)

Voir les différences:

Subject: [PATCH] misc: do not use dns.resolver.query on later versions of
 dnspython (#70632)

 src/authentic2/utils/evaluate.py | 11 ++++++++++-
 tests/test_utils_evaluate.py     |  6 ++++--
 tox.ini                          |  3 +++
 3 files changed, 17 insertions(+), 3 deletions(-)
src/authentic2/utils/evaluate.py
90 90
    return all(allowed.match(label) for label in labels)
91 91

  
92 92

  
93
def _resolver_resolve(domain):
94
    try:
95
        method = dns.resolver.resolve
96
    except AttributeError:
97
        # support for dnspython 2.0.0 on bullseye, prevent deprecation warning on later versions
98
        method = dns.resolver.query
99
    return method(domain, 'A', lifetime=1)
100

  
101

  
93 102
def check_dnsbl(dnsbl, remote_addr):
94 103
    domain = '.'.join(reversed(remote_addr.split('.'))) + '.' + dnsbl
95 104
    exception = None
96 105
    log = logger.debug
97 106
    try:
98
        answers = dns.resolver.query(domain, 'A', lifetime=1)
107
        answers = _resolver_resolve(domain)
99 108
        result = any(answer.address for answer in answers)
100 109
    except dns.resolver.NXDOMAIN as e:
101 110
        exception = e
tests/test_utils_evaluate.py
107 107
def test_dnsbl_ok():
108 108
    from authentic2.utils.evaluate import dnsbl
109 109

  
110
    with mock.patch('dns.resolver.resolve', return_value=[mock.Mock(address='127.0.0.2')]):
110
    with mock.patch(
111
        'authentic2.utils.evaluate._resolver_resolve', return_value=[mock.Mock(address='127.0.0.2')]
112
    ):
111 113
        assert (
112 114
            evaluate_condition(
113 115
                "remote_addr in dnsbl('example.com')", ctx={'dnsbl': dnsbl, 'remote_addr': '1.2.3.4'}
......
121 123

  
122 124
    from authentic2.utils.evaluate import dnsbl
123 125

  
124
    with mock.patch('dns.resolver.resolve', side_effect=NXDOMAIN):
126
    with mock.patch('authentic2.utils.evaluate._resolver_resolve', side_effect=NXDOMAIN):
125 127
        assert (
126 128
            evaluate_condition(
127 129
                "remote_addr in dnsbl('example.com')", ctx={'dnsbl': dnsbl, 'remote_addr': '1.2.3.4'}
tox.ini
52 52
  buster: django<2.3
53 53
  buster: django-model-utils<4
54 54
  buster: django-select2>=5,<6
55
  buster: dnspython==1.16.0
55 56
  bullseye: django<2.3
56 57
  bullseye: django-model-utils<4
58
  bullseye: dnspython==2.0.0
57 59
  bullseye: django-select2>=5,<6
58 60
  stable-backports: django>=3.2.12,<3.3
59 61
  stable-backports: django-model-utils>=4.2,<4.3
......
172 174
filterwarnings =
173 175
  ignore
174 176
  once:::authentic2.*
177
  error:.*please use dns.resolver.resolve:DeprecationWarning:
175 178
junit_family=xunit2
176 179

  
177 180
[coverage:run]
178
-