diff --git a/requirements.txt b/requirements.txt index fe14968..79f17b7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ Flask>=0.10 - +maxminddb-geolite2>=2018.703 diff --git a/server.py b/server.py index 82802db..873a4ca 100755 --- a/server.py +++ b/server.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import os, re, sys, json, time, socket from threading import Thread, RLock +from geolite2 import geolite2 from flask import Flask, request, send_from_directory @@ -277,6 +278,18 @@ def asyncFinishThread(server): % (server["ip"], server["address"], addresses)) return + reader = geolite2.reader() + try: + geo = reader.get(server["ip"]) + except geoip2.errors.GeoIP2Error: + app.logger.warning("GeoIP lookup failure for %s." % (server["address"],)) + + if "continent" in geo and "code" in geo["continent"]: + server["geo_continent"] = geo["continent"]["code"] + else: + app.logger.warning("Unable to get GeoIP Continent data for %s." + % (server["address"],)) + server["ping"] = serverUp(info[0]) if not server["ping"]: app.logger.warning("Server %s:%d has no ping."