Server IP : 85.214.239.14 / Your IP : 18.222.161.57 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /srv/modoboa/env/lib/python3.5/site-packages/modoboa/admin/tests/ |
Upload File : |
"""Test utilities.""" import socket from dns.name import Name from dns.rdtypes.IN.A import A from dns.rdtypes.ANY.MX import MX from dns.rdtypes.ANY.TXT import TXT from dns.resolver import NXDOMAIN, NoAnswer, NoNameservers, Timeout class RRset(object): def __init__(self): self.address = "192.0.2.1" class RRsetInvalid(object): def __init__(self): self.address = "000.0.0.0" _A_RECORD = A("IN", "A", "1.2.3.4") _MX_RECORD_1 = MX("IN", "MX", 10, Name("mx.example.com".split("."))) _MX_RECORD_2 = MX("IN", "MX", 10, Name("mx2.example.com".split("."))) _SPF_RECORD = TXT("IN", "TXT", ["v=spf1 mx -all"]) _DMARC_RECORD = TXT("IN", "TXT", ["v=DMARC1 p=reject"]) _DKIM_RECORD = TXT("IN", "TXT", ["v=DKIM1 p=XXXXX"]) _BAD_MX_RECORD = MX("IN", "MX", 10, Name("bad-response.example.com".split("."))) _DNE_MX_RECORD = MX("IN", "MX", 10, Name( "does-not-exist.example.com".split("."))) _MX_RECORDS = [_MX_RECORD_1] _IP_SET_RECORDS = [RRset()] _IPV4_RECORD_1 = (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("192.0.2.1", 25)) _IPV4_RECORD_2 = (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("192.0.2.2", 25)) _IPV6_RECORD = (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("2001:db8::1", 25)) _BAD_IP_RECORD = (socket.AF_INET, socket.SOCK_STREAM, 6, "", ("BAD", 25)) _IP_RECORDS = [_IPV4_RECORD_1, _IPV6_RECORD] _POSSIBLE_DNS_RESULTS = { "test3.com": [_MX_RECORD_2], "no-mx.example.com": NoAnswer(), "does-not-exist.example.com": NXDOMAIN(), "timeout.example.com": Timeout(), "no-ns-servers.example.com": NoNameservers(), "bad-response.example.com": [_BAD_MX_RECORD], "no-lookup.example.com": [_DNE_MX_RECORD], "no-answer.example.com": [_DNE_MX_RECORD], "dns-checks.com": [_MX_RECORD_2], } _POSSIBLE_DNS_RESULTS_NO_MX = { "does-not-exist.example.com": NXDOMAIN(), "mx2.example.com": NXDOMAIN(), "no-lookup.example.com": NXDOMAIN(), "no-answer.example.com": NoAnswer(), "bad-response.example.com": [RRsetInvalid()], "dns-checks.com": [_SPF_RECORD, ], "modoboa._domainkey.dns-checks.com": [_DKIM_RECORD], "_dmarc.dns-checks.com": [_DMARC_RECORD, ], "autoconfig.dns-checks.com": [_A_RECORD], "autodiscover.dns-checks.com": [_A_RECORD], } _POSSIBLE_IP_RESULTS = { "test3.com": [_IPV4_RECORD_2], "mx2.example.com": [_IPV4_RECORD_2], "bad-response.example.com": [_BAD_IP_RECORD], "does-not-exist.example.com": socket.gaierror(), "192.0.2.254": socket.gaierror(), "2001:db8:254": socket.gaierror(), "000.0.0.0": ValueError(), } def mock_dns_query_result(qname, *args, **kwargs): if "MX" in args: if qname in _POSSIBLE_DNS_RESULTS: return get_mock_dns_query_response(_POSSIBLE_DNS_RESULTS, qname) return _MX_RECORDS elif qname in _POSSIBLE_DNS_RESULTS_NO_MX: return get_mock_dns_query_response(_POSSIBLE_DNS_RESULTS_NO_MX, qname) else: return _IP_SET_RECORDS def get_mock_dns_query_response(responses, attributeName): if isinstance(responses[attributeName], Exception): raise responses[attributeName] return responses[attributeName] def mock_ip_address_result(host, *args, **kwargs): if host in _POSSIBLE_IP_RESULTS: if isinstance(_POSSIBLE_IP_RESULTS[host], Exception): raise _POSSIBLE_IP_RESULTS[host] else: return _POSSIBLE_IP_RESULTS[host] return _IP_RECORDS def mock_ip_query_result(host, port, *args, **kwargs): if host in _POSSIBLE_IP_RESULTS: if isinstance(_POSSIBLE_IP_RESULTS[host], Exception): raise _POSSIBLE_IP_RESULTS[host] else: return _POSSIBLE_IP_RESULTS[host] return _IP_RECORDS