| Current File : //opt/imunify360/venv/lib/python3.11/site-packages/im360/internals/__pycache__/geo.cpython-311.pyc |
�
�*(i� � � � d dl mZ d dlmZmZmZmZ d dlmZ d dl Z
d dlmZ d dl
mZ d dlmZ G d� d � � Zed
� � � ZdS )� )�contextmanager)�IPv4Address�IPv4Network�IPv6Address�IPv6Network)�UnionN)�AddressNotFoundError)�CountryInfo)�IPc �z � e Zd Zd� Zdeeeeee f fd�Z
deeeeee f fd�Zdeeeeee f fd�ZdS )�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 �country�str�network_addressr )r r �ip�objs r �getz
Reader.get s� � � ��)�'�2�2�B�B��� � � ��4�4� ���� ��%�-�-�c�"�2D�.E�.E�F�F�C�C��#� � � ��4�4� ���� "�+�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_id�r r �country_infos r �get_idz
Reader.get_id- s+ � � �x�x��(�(��� +��*�*��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<