Better error checking for failback_ip
This commit is contained in:
parent
210e2d19c1
commit
bf20f84224
3 changed files with 24 additions and 3 deletions
|
@ -11,6 +11,7 @@ from json.decoder import JSONDecodeError
|
|||
from os.path import abspath, join, basename, isdir
|
||||
from urllib3.exceptions import InsecureRequestWarning
|
||||
from requests.exceptions import InvalidSchema, SSLError, ConnectionError
|
||||
from ipaddress import IPv4Address
|
||||
|
||||
logger = getLogger()
|
||||
|
||||
|
@ -83,6 +84,12 @@ def hashit(string):
|
|||
return hashed
|
||||
|
||||
|
||||
def rfc1918_ip_check(ip):
|
||||
rfc1918_ip = IPv4Address(ip).is_private
|
||||
|
||||
return rfc1918_ip
|
||||
|
||||
|
||||
def connection_handler(session, request, verify):
|
||||
s = session
|
||||
r = request
|
||||
|
|
|
@ -4,7 +4,7 @@ from os.path import join, exists
|
|||
from re import match, compile, IGNORECASE
|
||||
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.varkenlogger import BlacklistFilter
|
||||
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')
|
||||
|
||||
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,
|
||||
verify_ssl=verify_ssl, get_activity=get_activity,
|
||||
fallback_ip=fallback_ip, get_stats=get_stats,
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
from os import _exit
|
||||
from logging import getLogger
|
||||
from requests import Session, Request
|
||||
from datetime import datetime, timezone
|
||||
|
@ -45,13 +46,19 @@ class TautulliAPI(object):
|
|||
getattr(session, 'ip_address_public')
|
||||
except AttributeError:
|
||||
self.logger.error('Public IP attribute missing!!! Do you have an old version of Tautulli (v1)?')
|
||||
exit(1)
|
||||
_exit(1)
|
||||
|
||||
try:
|
||||
geodata = self.geoiphandler.lookup(session.ip_address_public)
|
||||
except (ValueError, AddressNotFoundError):
|
||||
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:
|
||||
my_ip = self.session.get('http://ip.42.pl/raw').text
|
||||
geodata = self.geoiphandler.lookup(my_ip)
|
||||
|
|
Loading…
Reference in a new issue