mirror of
https://github.com/fHDHR/fHDHR_NextPVR.git
synced 2025-12-06 17:56:57 -05:00
commit
9f37dfa6b3
@ -1,5 +1,5 @@
|
||||
from gevent.pywsgi import WSGIServer
|
||||
from flask import Flask, request
|
||||
from flask import Flask, request, session
|
||||
|
||||
from .pages import fHDHR_Pages
|
||||
from .files import fHDHR_Files
|
||||
@ -22,9 +22,14 @@ class fHDHR_HTTP_Server():
|
||||
self.fhdhr.logger.info("Loading Flask.")
|
||||
|
||||
self.fhdhr.app = Flask("fHDHR", template_folder=self.template_folder)
|
||||
|
||||
# Allow Internal API Usage
|
||||
self.fhdhr.app.testing = True
|
||||
self.fhdhr.api.client = self.fhdhr.app.test_client()
|
||||
|
||||
# Set Secret Key For Sessions
|
||||
self.fhdhr.app.secret_key = self.fhdhr.config.dict["fhdhr"]["friendlyname"]
|
||||
|
||||
self.fhdhr.logger.info("Loading HTTP Pages Endpoints.")
|
||||
self.pages = fHDHR_Pages(fhdhr)
|
||||
self.add_endpoints(self.pages, "pages")
|
||||
@ -57,12 +62,41 @@ 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.")
|
||||
|
||||
session["deviceauth"] = self.detect_plexmediaserver(request)
|
||||
|
||||
self.fhdhr.logger.debug("Client %s requested %s Opening" % (request.method, request.path))
|
||||
|
||||
def after_request(self, response):
|
||||
self.fhdhr.logger.debug("Client %s requested %s Closing" % (request.method, request.path))
|
||||
return response
|
||||
|
||||
def detect_deviceauth(self, request):
|
||||
return request.args.get('DeviceAuth', default=None, type=str)
|
||||
|
||||
def detect_mobile(self, request):
|
||||
user_agent = request.headers.get('User-Agent')
|
||||
phones = ["iphone", "android", "blackberry"]
|
||||
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
|
||||
|
||||
def add_endpoints(self, index_list, index_name):
|
||||
item_list = [x for x in dir(index_list) if self.isapath(x)]
|
||||
for item in item_list:
|
||||
@ -83,7 +117,7 @@ class fHDHR_HTTP_Server():
|
||||
methods=endpoint_methods)
|
||||
|
||||
def isapath(self, item):
|
||||
not_a_page_list = ["fhdhr", "htmlerror", "page_elements"]
|
||||
not_a_page_list = ["fhdhr"]
|
||||
if item in not_a_page_list:
|
||||
return False
|
||||
elif item.startswith("__") and item.endswith("__"):
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import Response, request, redirect
|
||||
from flask import Response, request, redirect, session
|
||||
import xml.etree.ElementTree
|
||||
from io import BytesIO
|
||||
import urllib.parse
|
||||
@ -30,8 +30,7 @@ class xmlTV():
|
||||
def get(self, *args):
|
||||
|
||||
if self.fhdhr.config.dict["fhdhr"]["require_auth"]:
|
||||
DeviceAuth = request.args.get('DeviceAuth', default=None, type=str)
|
||||
if DeviceAuth != self.fhdhr.config.dict["fhdhr"]["device_auth"]:
|
||||
if session["deviceauth"] != self.fhdhr.config.dict["fhdhr"]["device_auth"]:
|
||||
return "not subscribed"
|
||||
|
||||
base_url = request.url_root[:-1]
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class Channels_Editor_HTML():
|
||||
@ -26,4 +26,4 @@ class Channels_Editor_HTML():
|
||||
|
||||
channelslist = sorted(channelslist, key=lambda i: i['number'])
|
||||
|
||||
return render_template('channels_editor.html', request=request, fhdhr=self.fhdhr, channelslist=channelslist)
|
||||
return render_template('channels_editor.html', session=session, request=request, fhdhr=self.fhdhr, channelslist=channelslist)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class Channels_HTML():
|
||||
@ -33,4 +33,4 @@ class Channels_HTML():
|
||||
|
||||
channelslist = sorted(channelslist, key=lambda i: i['number'])
|
||||
|
||||
return render_template('channels.html', request=request, fhdhr=self.fhdhr, channelslist=channelslist, channels_dict=channels_dict, list=list)
|
||||
return render_template('channels.html', session=session, request=request, fhdhr=self.fhdhr, channelslist=channelslist, channels_dict=channels_dict, list=list)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
import urllib.parse
|
||||
|
||||
|
||||
@ -47,4 +47,4 @@ class Cluster_HTML():
|
||||
}
|
||||
locations_list.append(location_dict)
|
||||
|
||||
return render_template('cluster.html', request=request, fhdhr=self.fhdhr, locations_list=locations_list)
|
||||
return render_template('cluster.html', session=session, request=request, fhdhr=self.fhdhr, locations_list=locations_list)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class Diagnostics_HTML():
|
||||
@ -122,4 +122,4 @@ class Diagnostics_HTML():
|
||||
"other": None,
|
||||
})
|
||||
|
||||
return render_template('diagnostics.html', request=request, fhdhr=self.fhdhr, button_list=button_list)
|
||||
return render_template('diagnostics.html', session=session, request=request, fhdhr=self.fhdhr, button_list=button_list)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
import datetime
|
||||
|
||||
from fHDHR.tools import humanized_time
|
||||
@ -92,4 +92,4 @@ class Guide_HTML():
|
||||
|
||||
chan_guide_list.append(chan_dict)
|
||||
|
||||
return render_template('guide.html', request=request, fhdhr=self.fhdhr, chan_guide_list=chan_guide_list, epg_methods=epg_methods, source=source)
|
||||
return render_template('guide.html', session=session, request=request, fhdhr=self.fhdhr, chan_guide_list=chan_guide_list, epg_methods=epg_methods, source=source)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class Index_HTML():
|
||||
@ -24,4 +24,4 @@ class Index_HTML():
|
||||
"Tuner Usage": ("%s/%s" % (str(tuners_in_use), str(max_tuners))),
|
||||
}
|
||||
|
||||
return render_template('index.html', request=request, fhdhr=self.fhdhr, fhdhr_status_dict=fhdhr_status_dict, list=list)
|
||||
return render_template('index.html', session=session, request=request, fhdhr=self.fhdhr, fhdhr_status_dict=fhdhr_status_dict, list=list)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class Settings_HTML():
|
||||
@ -30,4 +30,4 @@ class Settings_HTML():
|
||||
if not len(web_settings_dict[config_section].keys()):
|
||||
del web_settings_dict[config_section]
|
||||
|
||||
return render_template('settings.html', request=request, fhdhr=self.fhdhr, web_settings_dict=web_settings_dict, list=list)
|
||||
return render_template('settings.html', session=session, request=request, fhdhr=self.fhdhr, web_settings_dict=web_settings_dict, list=list)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class Tools_HTML():
|
||||
@ -13,4 +13,4 @@ class Tools_HTML():
|
||||
|
||||
def get(self, *args):
|
||||
|
||||
return render_template('tools.html', request=request, fhdhr=self.fhdhr)
|
||||
return render_template('tools.html', session=session, request=request, fhdhr=self.fhdhr)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
from fHDHR.tools import humanized_filesize
|
||||
|
||||
@ -33,4 +33,4 @@ class Tuners_HTML():
|
||||
|
||||
tuner_list.append(tuner_dict)
|
||||
|
||||
return render_template('tuners.html', request=request, fhdhr=self.fhdhr, tuner_list=tuner_list, tuner_scanning=tuner_scanning)
|
||||
return render_template('tuners.html', session=session, request=request, fhdhr=self.fhdhr, tuner_list=tuner_list, tuner_scanning=tuner_scanning)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class Version_HTML():
|
||||
@ -15,4 +15,4 @@ class Version_HTML():
|
||||
version_dict = {}
|
||||
for key in list(self.fhdhr.config.internal["versions"].keys()):
|
||||
version_dict[key] = self.fhdhr.config.internal["versions"][key]
|
||||
return render_template('version.html', request=request, fhdhr=self.fhdhr, version_dict=version_dict, list=list)
|
||||
return render_template('version.html', session=session, request=request, fhdhr=self.fhdhr, version_dict=version_dict, list=list)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from flask import request, render_template
|
||||
from flask import request, render_template, session
|
||||
|
||||
|
||||
class xmlTV_HTML():
|
||||
@ -13,4 +13,4 @@ class xmlTV_HTML():
|
||||
|
||||
def get(self, *args):
|
||||
|
||||
return render_template('xmltv.html', request=request, fhdhr=self.fhdhr)
|
||||
return render_template('xmltv.html', session=session, request=request, fhdhr=self.fhdhr)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user