1o+h" ~ d dl mZ d dlmZmZmZmZ d dlmZ d dl m
Z
d dlmZ G d d Z
ed Zd S )
)contextmanager)IPv4AddressIPv4NetworkIPv6AddressIPv6Network)Union)CountryInfo)IPc z e Zd Zd Zdeeeeee f fdZ
deeeeee f fdZdeeeeee f fdZdS )Readerc || _ d S )N)_geoip2_reader)self
geoip2_readers R/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/internals/geo.py__init__zReader.__init__
s + addressc ddl m} t j | }n# t $ r Y dS w xY w | j t |j }n# |$ 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
r )AddressNotFoundErrorN)
geoip2.errorsr r
adopt_to_ipvX_network
ValueErrorr countrystrnetwork_address)r r r ipobjs r getz
Reader.get
s 766666 )'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; s+ xx(( )((tr N)
__name__
__module____qualname__r r r r r r r r r$ r' r r r r s , , ,,k;C
, , , ,>
k;C
k;C
r r c # K ddl } | j t j 5 }t | V ddd dS # 1 swxY w Y dS )zH
:return Reader obj: instance to be reused to it's method calls
r N)geoip2.databasedatabaser r DB)geoip2r s r readerr1 K s
/ / $=]#####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s A
AAN)
contextlibr ipaddressr r r r typingr defence360agent.contracts.configr defence360agent.utils.validater
r r1 r+ r r