1o+h"~ddlmZddlmZmZmZmZddlmZddl m Z ddl m Z GddZ edZd S) )contextmanager) IPv4Address IPv4Network IPv6Address IPv6Network)Union) CountryInfo)IPczeZdZdZdeeeeee ffdZ deeeeee ffdZ deeeeee ffdZ dS)Readerc||_dS)N)_geoip2_reader)self geoip2_readers R/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/internals/geo.py__init__zReader.__init__ s+addresscddlm} tj|}n#t$rYdSwxYw |jt|j}n #|$rYdSwxYw|r|jndS)z Returns geo country information from max mind's db request :param address: ip or network address e.g. '4.4.4.4, 1.2.0.0/16, 2001:678:4c::/48' :return: maxmind's geo info r)AddressNotFoundErrorN) geoip2.errorsrr adopt_to_ipvX_network ValueErrorrcountrystrnetwork_address)rrripobjs rgetz Reader.get s 766666 )'22BB   44  %--c"2D.E.EFFCC#   44 "+s{{t+s ++,AA%$A%cB||}|r|jSdS)za :param address: valid ipv4 address :return: maxmind's id of the country N)r geoname_idrr country_infos rget_idz Reader.get_id,s+xx((  +* *trcB||}|r|jSdS)ze :param address: valid ipv4 address :return: country code in ISO-3166 format N)riso_coder"s rget_codezReader.get_code;s+xx((  )( (trN) __name__ __module__ __qualname__rrrrrrrrr$r'rrr r s,,,, k; C ,,,,>  k; C       k; C       rr c#Kddl}|jtj5}t|VddddS#1swxYwYdS)zH :return Reader obj: instance to be reused to it's method calls rN)geoip2.databasedatabaser r DB)geoip2rs rreaderr1Ks      / /$=]#####$$$$$$$$$$$$$$$$$$sA  AAN) contextlibr ipaddressrrrrtypingr defence360agent.contracts.configr defence360agent.utils.validater r r1r+rrr7s%%%%%%HHHHHHHHHHHH888888------????????D$$$$$r