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 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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue