jl d dl mZ d dlmZmZmZmZ d dlmZ d dl Z d dlmZ d dl mZ d dlmZ G d d Zed ZdS ) )contextmanager)IPv4AddressIPv4NetworkIPv6AddressIPv6Network)UnionN)AddressNotFoundError)CountryInfo)IPc z e Zd Zd Zdeeeeee f fdZ deeeeee f fdZdeeeeee f fdZdS )Readerc || _ d S )N)_geoip2_reader)self geoip2_readers H/opt/imunify360/venv/lib/python3.11/site-packages/im360/internals/geo.py__init__zReader.__init__ s + addressc t j | }n# t $ r Y dS w xY w | j t |j }n# t $ r Y dS w xY w|r|j ndS )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 ValueErrorr countrystrnetwork_addressr )r r ipobjs r getz Reader.get s )'22BB 44 %--c"2D.E.EFFCC# 44 "+s{{t+s %%,A A$#A$c B | | }|r|j S dS )za :param address: valid ipv4 address :return: maxmind's id of the country N)r geoname_idr r country_infos r get_idz Reader.get_id- s+ xx(( +**tr c B | | }|r|j S dS )ze :param address: valid ipv4 address :return: country code in ISO-3166 format N)r iso_coder! s r get_codezReader.get_code<