import ipaddress import geoip2.database import geoip2.errors class MMDB: def __init__(self, asn_db_path: str, country_db_path: str): self.asn_reader = geoip2.database.Reader(asn_db_path) self.country_reader = geoip2.database.Reader(country_db_path) def get_asn_num(self, ip: str) -> int: try: return self.asn_reader.asn(ip).autonomous_system_number except geoip2.errors.AddressNotFoundError: return "N/A" def get_asn_org(self, ip: str) -> str: try: return self.asn_reader.asn(ip).autonomous_system_organization except geoip2.errors.AddressNotFoundError: return "N/A" def get_country_iso(self, ip: str) -> str: try: return self.country_reader.country(ip).country.iso_code except geoip2.errors.AddressNotFoundError: return "N/A" def get_country_name(self, ip: str) -> str: try: return self.country_reader.country(ip).country.name except geoip2.errors.AddressNotFoundError: return "N/A" def ip_validator(ip: str): try: return True if ipaddress.ip_address(ip) else False except ValueError: return False