misc: do not use dns.resolver.query on later versions of dnspython (#70632)
This commit is contained in:
parent
6eea42ff67
commit
427021b5b2
|
@ -90,12 +90,21 @@ def is_valid_hostname(hostname):
|
|||
return all(allowed.match(label) for label in labels)
|
||||
|
||||
|
||||
def _resolver_resolve(domain):
|
||||
try:
|
||||
method = dns.resolver.resolve
|
||||
except AttributeError:
|
||||
# support for dnspython 2.0.0 on bullseye, prevent deprecation warning on later versions
|
||||
method = dns.resolver.query
|
||||
return method(domain, 'A', lifetime=1)
|
||||
|
||||
|
||||
def check_dnsbl(dnsbl, remote_addr):
|
||||
domain = '.'.join(reversed(remote_addr.split('.'))) + '.' + dnsbl
|
||||
exception = None
|
||||
log = logger.debug
|
||||
try:
|
||||
answers = dns.resolver.query(domain, 'A', lifetime=1)
|
||||
answers = _resolver_resolve(domain)
|
||||
result = any(answer.address for answer in answers)
|
||||
except dns.resolver.NXDOMAIN as e:
|
||||
exception = e
|
||||
|
|
|
@ -107,7 +107,9 @@ def test_http_headers(rf):
|
|||
def test_dnsbl_ok():
|
||||
from authentic2.utils.evaluate import dnsbl
|
||||
|
||||
with mock.patch('dns.resolver.resolve', return_value=[mock.Mock(address='127.0.0.2')]):
|
||||
with mock.patch(
|
||||
'authentic2.utils.evaluate._resolver_resolve', return_value=[mock.Mock(address='127.0.0.2')]
|
||||
):
|
||||
assert (
|
||||
evaluate_condition(
|
||||
"remote_addr in dnsbl('example.com')", ctx={'dnsbl': dnsbl, 'remote_addr': '1.2.3.4'}
|
||||
|
@ -121,7 +123,7 @@ def test_dnsbl_nok():
|
|||
|
||||
from authentic2.utils.evaluate import dnsbl
|
||||
|
||||
with mock.patch('dns.resolver.resolve', side_effect=NXDOMAIN):
|
||||
with mock.patch('authentic2.utils.evaluate._resolver_resolve', side_effect=NXDOMAIN):
|
||||
assert (
|
||||
evaluate_condition(
|
||||
"remote_addr in dnsbl('example.com')", ctx={'dnsbl': dnsbl, 'remote_addr': '1.2.3.4'}
|
||||
|
|
3
tox.ini
3
tox.ini
|
@ -52,8 +52,10 @@ deps =
|
|||
buster: django<2.3
|
||||
buster: django-model-utils<4
|
||||
buster: django-select2>=5,<6
|
||||
buster: dnspython==1.16.0
|
||||
bullseye: django<2.3
|
||||
bullseye: django-model-utils<4
|
||||
bullseye: dnspython==2.0.0
|
||||
bullseye: django-select2>=5,<6
|
||||
stable-backports: django>=3.2.12,<3.3
|
||||
stable-backports: django-model-utils>=4.2,<4.3
|
||||
|
@ -172,6 +174,7 @@ commands =
|
|||
filterwarnings =
|
||||
ignore
|
||||
once:::authentic2.*
|
||||
error:.*please use dns.resolver.resolve:DeprecationWarning:
|
||||
junit_family=xunit2
|
||||
|
||||
[coverage:run]
|
||||
|
|
Loading…
Reference in New Issue