From 7ce92834214ca8f2e3171a953960c9fd50269306 Mon Sep 17 00:00:00 2001 From: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> Date: Tue, 28 Apr 2020 08:42:00 -0700 Subject: [PATCH 1/3] Fix geopip lookup for IPv6 addresses --- data/interfaces/default/ip_address_modal.html | 2 +- plexpy/plextv.py | 2 +- plexpy/webserve.py | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/data/interfaces/default/ip_address_modal.html b/data/interfaces/default/ip_address_modal.html index 2874cf45..5902f33b 100644 --- a/data/interfaces/default/ip_address_modal.html +++ b/data/interfaces/default/ip_address_modal.html @@ -79,7 +79,7 @@ $('#ip_error').html(' Internal request failed.').show(); }, success: function (result) { - if (result.results === 'error') { + if (result.result === 'error') { $('#ip_error').html(' ' + result.message).show(); } else { var data = result.data; diff --git a/plexpy/plextv.py b/plexpy/plextv.py index 5d1111d4..20217feb 100644 --- a/plexpy/plextv.py +++ b/plexpy/plextv.py @@ -933,7 +933,7 @@ class PlexTV(object): return account_details def get_geoip_lookup(self, ip_address=''): - if not ip_address or not helpers.is_public_ip(ip_address): + if not ip_address or not helpers.is_valid_ip(ip_address): return geoip_data = self.get_plextv_geoip(ip_address=ip_address, output_format='xml') diff --git a/plexpy/webserve.py b/plexpy/webserve.py index addafb13..db81fb58 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -5719,8 +5719,6 @@ class WebInterface(object): message = 'No IP address provided.' elif not helpers.is_valid_ip(ip_address): message = 'Invalid IP address provided: %s' % ip_address - elif not helpers.is_public_ip(ip_address): - message = 'Non-public IP address provided: %s' % ip_address if message: return {'result': 'error', 'message': message} From 03035d0eacfec73fa0dde2d8818210634dc71bac Mon Sep 17 00:00:00 2001 From: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> Date: Tue, 28 Apr 2020 18:04:05 -0700 Subject: [PATCH 2/3] Prevent spamming the logs with remote access failures --- plexpy/activity_pinger.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/plexpy/activity_pinger.py b/plexpy/activity_pinger.py index 7454245f..3ebd4bfb 100644 --- a/plexpy/activity_pinger.py +++ b/plexpy/activity_pinger.py @@ -31,6 +31,7 @@ import web_socket monitor_lock = threading.Lock() ext_ping_count = 0 +ext_ping_error = None int_ping_count = 0 @@ -309,18 +310,25 @@ def check_server_access(): server_response = pms_connect.get_server_response() global ext_ping_count + global ext_ping_error # Check for remote access if server_response: + log = (server_response['mapping_error'] != ext_ping_error) + if server_response['reason']: ext_ping_count += 1 - logger.warn(u"Tautulli Monitor :: Remote access failed: %s, ping attempt %s." \ - % (server_response['reason'], str(ext_ping_count))) + ext_ping_error = server_response['mapping_error'] + if log: + logger.warn(u"Tautulli Monitor :: Remote access failed: %s, ping attempt %s." + % (server_response['reason'], str(ext_ping_count))) # Waiting for port mapping elif server_response['mapping_state'] == 'waiting': - logger.warn(u"Tautulli Monitor :: Remote access waiting for port mapping, ping attempt %s." \ - % str(ext_ping_count)) + ext_ping_error = server_response['mapping_error'] + if log: + logger.warn(u"Tautulli Monitor :: Remote access waiting for port mapping, ping attempt %s." + % str(ext_ping_count)) # Reset external ping counter else: @@ -330,8 +338,10 @@ def check_server_access(): plexpy.NOTIFY_QUEUE.put({'notify_action': 'on_extup', 'remote_access_info': server_response}) ext_ping_count = 0 + ext_ping_error = None if ext_ping_count == plexpy.CONFIG.REMOTE_ACCESS_PING_THRESHOLD: + logger.info(u"Tautulli Monitor: Plex remote access is down.") plexpy.NOTIFY_QUEUE.put({'notify_action': 'on_extdown', 'remote_access_info': server_response}) From e2e7063a2980c0e7275d4952602fa29e0c50d378 Mon Sep 17 00:00:00 2001 From: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> Date: Tue, 28 Apr 2020 18:39:12 -0700 Subject: [PATCH 3/3] Expose remote access check settings in the UI --- data/interfaces/default/settings.html | 23 +++++++++++++++++++++++ plexpy/webserve.py | 3 +++ 2 files changed, 26 insertions(+) diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index 20fe51a6..76220b82 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -850,6 +850,28 @@
Enable to have Tautulli check if remote access to the Plex Media Server goes down.
+The interval (in seconds) Tautulli will ping the Plex Media Server for the remote access status. Minimum 60.
+The number of consecutive remote access status failures to consider remote access as down. Minimum 1.
+