passed data folder to tautulli for helper functions. Fixes #46
This commit is contained in:
parent
d81ee25e5f
commit
35cb12f751
4 changed files with 15 additions and 14 deletions
|
@ -79,7 +79,7 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
if CONFIG.tautulli_enabled:
|
if CONFIG.tautulli_enabled:
|
||||||
for server in CONFIG.tautulli_servers:
|
for server in CONFIG.tautulli_servers:
|
||||||
TAUTULLI = TautulliAPI(server, DBMANAGER)
|
TAUTULLI = TautulliAPI(server, DBMANAGER, DATA_FOLDER)
|
||||||
if server.get_activity:
|
if server.get_activity:
|
||||||
schedule.every(server.get_activity_run_seconds).seconds.do(threaded, TAUTULLI.get_activity)
|
schedule.every(server.get_activity_run_seconds).seconds.do(threaded, TAUTULLI.get_activity)
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,6 @@ class CiscoAPI(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
req = self.session.prepare_request(Request('GET', self.firewall.url + endpoint))
|
req = self.session.prepare_request(Request('GET', self.firewall.url + endpoint))
|
||||||
print(req.headers)
|
|
||||||
get = connection_handler(self.session, req, self.firewall.verify_ssl)
|
get = connection_handler(self.session, req, self.firewall.verify_ssl)
|
||||||
|
|
||||||
if not get:
|
if not get:
|
||||||
|
|
|
@ -14,21 +14,22 @@ from urllib.request import urlretrieve
|
||||||
logger = logging.getLogger('varken')
|
logger = logging.getLogger('varken')
|
||||||
|
|
||||||
|
|
||||||
def geoip_download():
|
def geoip_download(data_folder):
|
||||||
tar_dbfile = abspath(join('.', 'data', 'GeoLite2-City.tar.gz'))
|
datafolder = data_folder
|
||||||
|
tar_dbfile = abspath(join(datafolder, 'GeoLite2-City.tar.gz'))
|
||||||
url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz'
|
url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz'
|
||||||
urlretrieve(url, tar_dbfile)
|
urlretrieve(url, tar_dbfile)
|
||||||
tar = tarfile.open(tar_dbfile, 'r:gz')
|
tar = tarfile.open(tar_dbfile, 'r:gz')
|
||||||
for files in tar.getmembers():
|
for files in tar.getmembers():
|
||||||
if 'GeoLite2-City.mmdb' in files.name:
|
if 'GeoLite2-City.mmdb' in files.name:
|
||||||
files.name = os.path.basename(files.name)
|
files.name = os.path.basename(files.name)
|
||||||
tar.extract(files, abspath(join('.', 'data')))
|
tar.extract(files, datafolder)
|
||||||
os.remove(tar_dbfile)
|
os.remove(tar_dbfile)
|
||||||
|
|
||||||
|
|
||||||
def geo_lookup(ipaddress):
|
def geo_lookup(ipaddress, data_folder):
|
||||||
|
datafolder = data_folder
|
||||||
dbfile = abspath(join('.', 'data', 'GeoLite2-City.mmdb'))
|
dbfile = abspath(join(datafolder, 'GeoLite2-City.mmdb'))
|
||||||
now = time.time()
|
now = time.time()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -36,9 +37,9 @@ def geo_lookup(ipaddress):
|
||||||
db_age = now - dbinfo.st_ctime
|
db_age = now - dbinfo.st_ctime
|
||||||
if db_age > (35 * 86400):
|
if db_age > (35 * 86400):
|
||||||
os.remove(dbfile)
|
os.remove(dbfile)
|
||||||
geoip_download()
|
geoip_download(datafolder)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
geoip_download()
|
geoip_download(datafolder)
|
||||||
|
|
||||||
reader = geoip2.database.Reader(dbfile)
|
reader = geoip2.database.Reader(dbfile)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ from varken.structures import TautulliStream
|
||||||
|
|
||||||
|
|
||||||
class TautulliAPI(object):
|
class TautulliAPI(object):
|
||||||
def __init__(self, server, dbmanager):
|
def __init__(self, server, dbmanager, data_folder):
|
||||||
# Set Time of initialization
|
# Set Time of initialization
|
||||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||||
self.dbmanager = dbmanager
|
self.dbmanager = dbmanager
|
||||||
|
@ -17,6 +17,7 @@ class TautulliAPI(object):
|
||||||
self.session.params = {'apikey': self.server.api_key, 'cmd': 'get_activity'}
|
self.session.params = {'apikey': self.server.api_key, 'cmd': 'get_activity'}
|
||||||
self.endpoint = '/api/v2'
|
self.endpoint = '/api/v2'
|
||||||
self.logger = logging.getLogger()
|
self.logger = logging.getLogger()
|
||||||
|
self.data_folder = data_folder
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<tautulli-{}>".format(self.server.id)
|
return "<tautulli-{}>".format(self.server.id)
|
||||||
|
@ -41,13 +42,13 @@ class TautulliAPI(object):
|
||||||
|
|
||||||
for session in sessions:
|
for session in sessions:
|
||||||
try:
|
try:
|
||||||
geodata = geo_lookup(session.ip_address_public)
|
geodata = geo_lookup(session.ip_address_public, self.data_folder)
|
||||||
except (ValueError, AddressNotFoundError):
|
except (ValueError, AddressNotFoundError):
|
||||||
if self.server.fallback_ip:
|
if self.server.fallback_ip:
|
||||||
geodata = geo_lookup(self.server.fallback_ip)
|
geodata = geo_lookup(self.server.fallback_ip, self.data_folder)
|
||||||
else:
|
else:
|
||||||
my_ip = self.session.get('http://ip.42.pl/raw').text
|
my_ip = self.session.get('http://ip.42.pl/raw').text
|
||||||
geodata = geo_lookup(my_ip)
|
geodata = geo_lookup(my_ip, self.data_folder)
|
||||||
|
|
||||||
if not all([geodata.location.latitude, geodata.location.longitude]):
|
if not all([geodata.location.latitude, geodata.location.longitude]):
|
||||||
latitude = 37.234332396
|
latitude = 37.234332396
|
||||||
|
|
Loading…
Reference in a new issue