Better error checking for failback_ip

This commit is contained in:
samwiseg0 2019-01-01 23:41:23 -05:00
parent 210e2d19c1
commit bf20f84224
3 changed files with 24 additions and 3 deletions

View file

@ -11,6 +11,7 @@ from json.decoder import JSONDecodeError
from os.path import abspath, join, basename, isdir from os.path import abspath, join, basename, isdir
from urllib3.exceptions import InsecureRequestWarning from urllib3.exceptions import InsecureRequestWarning
from requests.exceptions import InvalidSchema, SSLError, ConnectionError from requests.exceptions import InvalidSchema, SSLError, ConnectionError
from ipaddress import IPv4Address
logger = getLogger() logger = getLogger()
@ -83,6 +84,12 @@ def hashit(string):
return hashed return hashed
def rfc1918_ip_check(ip):
rfc1918_ip = IPv4Address(ip).is_private
return rfc1918_ip
def connection_handler(session, request, verify): def connection_handler(session, request, verify):
s = session s = session
r = request r = request

View file

@ -4,7 +4,7 @@ from os.path import join, exists
from re import match, compile, IGNORECASE from re import match, compile, IGNORECASE
from configparser import ConfigParser, NoOptionError, NoSectionError from configparser import ConfigParser, NoOptionError, NoSectionError
from varken.helpers import clean_sid_check from varken.helpers import clean_sid_check, rfc1918_ip_check
from varken.structures import SickChillServer from varken.structures import SickChillServer
from varken.varkenlogger import BlacklistFilter from varken.varkenlogger import BlacklistFilter
from varken.structures import SonarrServer, RadarrServer, OmbiServer, TautulliServer, InfluxServer, CiscoASAFirewall from varken.structures import SonarrServer, RadarrServer, OmbiServer, TautulliServer, InfluxServer, CiscoASAFirewall
@ -217,6 +217,13 @@ class INIParser(object):
get_stats_run_seconds = self.config.getint(section, 'get_stats_run_seconds') get_stats_run_seconds = self.config.getint(section, 'get_stats_run_seconds')
invalid_wan_ip = rfc1918_ip_check(fallback_ip)
if invalid_wan_ip:
self.logger.error('Invalid failback_ip [%s] set for %s-%s!', fallback_ip, service, server_id)
exit(1)
server = TautulliServer(id=server_id, url=scheme + url, api_key=apikey, server = TautulliServer(id=server_id, url=scheme + url, api_key=apikey,
verify_ssl=verify_ssl, get_activity=get_activity, verify_ssl=verify_ssl, get_activity=get_activity,
fallback_ip=fallback_ip, get_stats=get_stats, fallback_ip=fallback_ip, get_stats=get_stats,

View file

@ -1,3 +1,4 @@
from os import _exit
from logging import getLogger from logging import getLogger
from requests import Session, Request from requests import Session, Request
from datetime import datetime, timezone from datetime import datetime, timezone
@ -45,13 +46,19 @@ class TautulliAPI(object):
getattr(session, 'ip_address_public') getattr(session, 'ip_address_public')
except AttributeError: except AttributeError:
self.logger.error('Public IP attribute missing!!! Do you have an old version of Tautulli (v1)?') self.logger.error('Public IP attribute missing!!! Do you have an old version of Tautulli (v1)?')
exit(1) _exit(1)
try: try:
geodata = self.geoiphandler.lookup(session.ip_address_public) geodata = self.geoiphandler.lookup(session.ip_address_public)
except (ValueError, AddressNotFoundError): except (ValueError, AddressNotFoundError):
if self.server.fallback_ip: if self.server.fallback_ip:
geodata = self.geoiphandler.lookup(self.server.fallback_ip) # Try the failback ip in the config file
try:
geodata = self.geoiphandler.lookup(self.server.fallback_ip)
except AddressNotFoundError as e:
self.logger.error('%s', e)
_exit(1)
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 = self.geoiphandler.lookup(my_ip) geodata = self.geoiphandler.lookup(my_ip)