diff --git a/ennstatus/api/functions.py b/ennstatus/api/functions.py --- a/ennstatus/api/functions.py +++ b/ennstatus/api/functions.py @@ -17,7 +17,7 @@ FINGERPRINT_REGEX = re.compile(r'^[A-Z0- DATE_FORMAT = '%d-%m-%Y %H:%M:%S' gi4 = pygeoip.GeoIP('/usr/share/GeoIP/GeoIP.dat', pygeoip.MEMORY_CACHE) - +gi6 = pygeoip.GeoIP('/usr/share/GeoIP/GeoIPv6.dat', pygeoip.MEMORY_CACHE) mail_cache = dict() @@ -95,7 +95,12 @@ def update_server(server, ip): server['last_updated'] = datetime.utcnow().strftime(DATE_FORMAT) server['server_status'] = 'Online' - server['country'] = gi4.country_name_by_addr(ip) + + if ip.version == 4: + server['country'] = gi4.country_name_by_addr(str(ip)) + elif ip.verion == 6: + server['country'] = gi6.country_name_by_addr(str(ip)) + server_name = server['server_name'] if server['server_type'] == 'Bridge': @@ -109,12 +114,12 @@ def update_server(server, ip): if key in server: del server[key] - if isinstance(ip, ipaddress.IPv4Address): + if ip.version == 4: if 'ip' not in server: - server['ip'] = ip - elif isinstance(ip, ipaddress.IPv6Address): + server['ip'] = str(ip) + elif ip.version == 6: if 'ip6' not in server: - server['ip6'] = ip + server['ip6'] = str(ip) try: filename = ''.join(['data/', server_name.lower(), '.json'])