jlddlmZddlmZmZmZmZddlmZddl Z ddl m Z ddl mZddlmZGdd Zed ZdS) )contextmanager) IPv4Address IPv4Network IPv6Address IPv6Network)UnionN)AddressNotFoundError) CountryInfo)IPczeZdZdZdeeeeee ffdZ deeeeee ffdZ deeeeee ffdZ dS)Readerc||_dS)N)_geoip2_reader)self geoip2_readers H/opt/imunify360/venv/lib/python3.11/site-packages/im360/internals/geo.py__init__zReader.__init__ s+addressc tj|}n#t$rYdSwxYw |jt |j}n#t$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 N)r adopt_to_ipvX_network ValueErrorrcountrystrnetwork_addressr )rripobjs rgetz Reader.gets )'22BB   44  %--c"2D.E.EFFCC#   44 "+s{{t+s %%,A A$#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#Ktjtj5}t|VddddS#1swxYwYdS)zH :return Reader obj: instance to be reused to it's method calls N)geoip2databaser r DB)rs rreaderr/Ls     / /$=]#####$$$$$$$$$$$$$$$$$$sA  AA) contextlibr ipaddressrrrrtypingrgeoip2.databaser, geoip2.errorsr defence360agent.contracts.configr defence360agent.utils.validater r r/r*rrr7s%%%%%%HHHHHHHHHHHH......888888------========@$$$$$r