From 80df8f6191c0c1aad34b401fda0da836dfbcb0d1 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Wed, 11 Nov 2015 08:59:55 -0800 Subject: [PATCH] Add IP address to sessions for PMS 0.9.14 --- data/interfaces/default/settings.html | 2 +- plexpy/activity_processor.py | 19 ++++++++++--------- plexpy/pmsconnect.py | 5 +++++ plexpy/webserve.py | 11 ++++++----- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index ba7f08dd..571bd867 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -435,7 +435,7 @@ available_notification_agents = sorted(notifiers.available_notification_agents()

- Enable this to attempt to log the IP address of the user. + Enable this to attempt to log the IP address of the user (for PMS 0.9.12 and below, IP address is automatically logged for PMS 0.9.14 and above).

diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py index 95b43fe1..db290c2d 100644 --- a/plexpy/activity_processor.py +++ b/plexpy/activity_processor.py @@ -39,6 +39,7 @@ class ActivityProcessor(object): 'parent_title': session['parent_title'], 'grandparent_title': session['grandparent_title'], 'friendly_name': session['friendly_name'], + 'ip_address': session['ip_address'], 'player': session['player'], 'platform': session['platform'], 'parent_rating_key': session['parent_rating_key'], @@ -78,16 +79,16 @@ class ActivityProcessor(object): kwargs=dict(stream_data=values, notify_action='play')).start() started = int(time.time()) + timestamp = {'started': started} - # Try and grab IP address from logs - if plexpy.CONFIG.IP_LOGGING_ENABLE and plexpy.CONFIG.PMS_LOGS_FOLDER: - ip_address = self.find_session_ip(rating_key=session['rating_key'], - machine_id=session['machine_id']) - else: - ip_address = None - - timestamp = {'started': started, - 'ip_address': ip_address} + # Try and grab IP address from logs (fallback if not on PMS 0.9.14 and above) + if not session['ip_address']: + if plexpy.CONFIG.IP_LOGGING_ENABLE and plexpy.CONFIG.PMS_LOGS_FOLDER: + ip_address = self.find_session_ip(rating_key=session['rating_key'], + machine_id=session['machine_id']) + timestamp.update({'ip_address': ip_address}) + else: + timestamp.update({'ip_address': None}) # If it's our first write then time stamp it. self.db.upsert('sessions', timestamp, keys) diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index fdecfae6..a53e9f4b 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -756,6 +756,7 @@ class PmsConnect(object): 'user_id': user_details['user_id'], 'friendly_name': user_details['friendly_name'], 'user_thumb': user_details['thumb'], + 'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address'), 'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'), 'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'machine_id': machine_id, @@ -876,6 +877,7 @@ class PmsConnect(object): 'user_id': user_details['user_id'], 'friendly_name': user_details['friendly_name'], 'user_thumb': user_details['thumb'], + 'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address'), 'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'), 'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'machine_id': machine_id, @@ -932,6 +934,7 @@ class PmsConnect(object): 'user_id': user_details['user_id'], 'friendly_name': user_details['friendly_name'], 'user_thumb': user_details['thumb'], + 'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address'), 'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'), 'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'machine_id': machine_id, @@ -988,6 +991,7 @@ class PmsConnect(object): 'user_id': user_details['user_id'], 'friendly_name': user_details['friendly_name'], 'user_thumb': user_details['thumb'], + 'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address'), 'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'), 'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'machine_id': machine_id, @@ -1077,6 +1081,7 @@ class PmsConnect(object): 'user_id': user_details['user_id'], 'friendly_name': user_details['friendly_name'], 'user_thumb': user_details['thumb'], + 'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address'), 'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'), 'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'machine_id': machine_id, diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 7b93500a..4e0d4937 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -711,15 +711,16 @@ class WebInterface(object): try: pms_connect = pmsconnect.PmsConnect() result = pms_connect.get_current_activity() + + data_factory = datafactory.DataFactory() + for session in result['sessions']: + if not session['ip_address']: + ip_address = data_factory.get_session_ip(session['session_key']) + session['ip_address'] = ip_address except: return serve_template(templatename="current_activity.html", data=None) if result: - data_factory = datafactory.DataFactory() - for session in result['sessions']: - ip_address = data_factory.get_session_ip(session['session_key']) - session['ip_address'] = ip_address - return serve_template(templatename="current_activity.html", data=result) else: logger.warn('Unable to retrieve data.')