1
1
#!/usr/bin/env python3
2
2
3
- # Source: https://github.com/superstes/python3-resolver
4
- # Copyright (C) 2023 René Pascal Rath
3
+ # Source: https://github.com/O-X-L/nftables_addon_dns
4
+ # Copyright (C) 2024 Pascal Rath
5
5
# License: GNU General Public License v3.0
6
6
7
- from socket import getaddrinfo , gaierror
8
- from ipaddress import IPv4Address , AddressValueError
9
-
10
- DUMMY_PORT = 80
11
-
12
-
13
- def _is_ipv4_address (i : str ) -> bool :
14
- try :
15
- IPv4Address (i )
16
- return True
17
-
18
- except AddressValueError :
19
- return False
7
+ from socket import getaddrinfo , gaierror , AF_INET , AF_INET6
20
8
21
9
22
10
def _sorted (data : list ) -> list :
23
11
data .sort ()
24
12
return data
25
13
26
14
27
- def resolve (name : str ) -> list :
15
+ def resolve (name : str , ip4 : bool ) -> list :
28
16
try :
29
- raw = getaddrinfo (name , DUMMY_PORT )
17
+ raw = getaddrinfo (name , None , AF_INET if ip4 else AF_INET6 )
30
18
# pylint: disable=R1718
31
19
return _sorted (list (set ([r [4 ][0 ] for r in raw ])))
32
20
@@ -35,8 +23,8 @@ def resolve(name: str) -> list:
35
23
36
24
37
25
def resolve_ipv4 (name : str ) -> list :
38
- return _sorted ([ i for i in resolve (name ) if _is_ipv4_address ( i )] )
26
+ return resolve (name , True )
39
27
40
28
41
29
def resolve_ipv6 (name : str ) -> list :
42
- return _sorted ([ i for i in resolve (name ) if not _is_ipv4_address ( i )] )
30
+ return resolve (name , False )
0 commit comments