From 2cd30a38ca3d7038b09e2972c604ab408162e810 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 20 Dec 2020 11:13:00 -0500 Subject: [PATCH] Use session to detect if PlexMediaServer --- fHDHR_web/__init__.py | 19 +++++++++++++++++-- fHDHR_web/api/root_url.py | 6 +++--- fHDHR_web/files/device_xml.py | 6 ++---- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/fHDHR_web/__init__.py b/fHDHR_web/__init__.py index 3071c8b..ef80fff 100644 --- a/fHDHR_web/__init__.py +++ b/fHDHR_web/__init__.py @@ -62,7 +62,15 @@ class fHDHR_HTTP_Server(): self.fhdhr.logger.info("HTTP Server Online.") def before_request(self): + session["is_mobile"] = self.detect_mobile(request) + if session["is_mobile"]: + self.fhdhr.logger.debug("Client is a mobile device.") + + session["is_plexmediaserver"] = self.detect_plexmediaserver(request) + if session["is_plexmediaserver"]: + self.fhdhr.logger.debug("Client is a Plex Media Server.") + self.fhdhr.logger.debug("Client %s requested %s Opening" % (request.method, request.path)) def after_request(self, response): @@ -70,9 +78,16 @@ class fHDHR_HTTP_Server(): return response def detect_mobile(self, request): - agent = request.headers.get('User-Agent') + user_agent = request.headers.get('User-Agent') phones = ["iphone", "android", "blackberry"] - if any(phone in agent.lower() for phone in phones): + if any(phone in user_agent.lower() for phone in phones): + return True + else: + return False + + def detect_plexmediaserver(self, request): + user_agent = request.headers.get('User-Agent') + if str(user_agent).lower().startswith("plexmediaserver"): return True else: return False diff --git a/fHDHR_web/api/root_url.py b/fHDHR_web/api/root_url.py index 68a8d75..acbedaf 100644 --- a/fHDHR_web/api/root_url.py +++ b/fHDHR_web/api/root_url.py @@ -1,4 +1,4 @@ -from flask import redirect, request +from flask import redirect, request, session class Root_URL(): @@ -17,10 +17,10 @@ class Root_URL(): user_agent = request.headers.get('User-Agent') # Client Devices Discovering Device Information - if not user_agent or str(user_agent).lower().startswith("plexmediaserver"): + if not user_agent or session["is_plexmediaserver"]: # Plex Remote Media Grabber redirect - if self.fhdhr.config.dict["rmg"]["enabled"] and str(user_agent).lower().startswith("plexmediaserver"): + if self.fhdhr.config.dict["rmg"]["enabled"] and session["is_plexmediaserver"]: return redirect("/rmg") # Client Device is looking for HDHR type device diff --git a/fHDHR_web/files/device_xml.py b/fHDHR_web/files/device_xml.py index 3bca8cf..031bf35 100644 --- a/fHDHR_web/files/device_xml.py +++ b/fHDHR_web/files/device_xml.py @@ -1,4 +1,4 @@ -from flask import request, redirect +from flask import redirect, session class Device_XML(): @@ -13,9 +13,7 @@ class Device_XML(): def get(self, *args): - user_agent = request.headers.get('User-Agent') - if (self.fhdhr.config.dict["rmg"]["enabled"] and - str(user_agent).lower().startswith("plexmediaserver")): + if self.fhdhr.config.dict["rmg"]["enabled"] and session["is_plexmediaserver"]: return redirect("/rmg/device.xml") else: return redirect("/hdhr/device.xml")