0001-misc-do-not-use-dns.resolver.query-on-later-versions.patch
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 |
- |