1
0
mirror of https://github.com/fHDHR/fHDHR_NextPVR.git synced 2025-12-06 07:26:57 -05:00

Create Flask Session system and mobile device detection

This commit is contained in:
deathbybandaid 2020-12-20 10:52:51 -05:00
parent 7e4eea1d76
commit b12996b8bb
12 changed files with 37 additions and 23 deletions

View File

@ -1,5 +1,5 @@
from gevent.pywsgi import WSGIServer from gevent.pywsgi import WSGIServer
from flask import Flask, request from flask import Flask, request, session
from .pages import fHDHR_Pages from .pages import fHDHR_Pages
from .files import fHDHR_Files from .files import fHDHR_Files
@ -22,9 +22,14 @@ class fHDHR_HTTP_Server():
self.fhdhr.logger.info("Loading Flask.") self.fhdhr.logger.info("Loading Flask.")
self.fhdhr.app = Flask("fHDHR", template_folder=self.template_folder) self.fhdhr.app = Flask("fHDHR", template_folder=self.template_folder)
# Allow Internal API Usage
self.fhdhr.app.testing = True self.fhdhr.app.testing = True
self.fhdhr.api.client = self.fhdhr.app.test_client() 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.fhdhr.logger.info("Loading HTTP Pages Endpoints.")
self.pages = fHDHR_Pages(fhdhr) self.pages = fHDHR_Pages(fhdhr)
self.add_endpoints(self.pages, "pages") self.add_endpoints(self.pages, "pages")
@ -57,12 +62,21 @@ class fHDHR_HTTP_Server():
self.fhdhr.logger.info("HTTP Server Online.") self.fhdhr.logger.info("HTTP Server Online.")
def before_request(self): def before_request(self):
session["is_mobile"] = self.detect_mobile(request)
self.fhdhr.logger.debug("Client %s requested %s Opening" % (request.method, request.path)) self.fhdhr.logger.debug("Client %s requested %s Opening" % (request.method, request.path))
def after_request(self, response): def after_request(self, response):
self.fhdhr.logger.debug("Client %s requested %s Closing" % (request.method, request.path)) self.fhdhr.logger.debug("Client %s requested %s Closing" % (request.method, request.path))
return response return response
def detect_mobile(self, request):
agent = request.headers.get('User-Agent')
phones = ["iphone", "android", "blackberry"]
if any(phone in agent.lower() for phone in phones):
return True
else:
return False
def add_endpoints(self, index_list, index_name): def add_endpoints(self, index_list, index_name):
item_list = [x for x in dir(index_list) if self.isapath(x)] item_list = [x for x in dir(index_list) if self.isapath(x)]
for item in item_list: for item in item_list:

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class Channels_Editor_HTML(): class Channels_Editor_HTML():
@ -26,4 +26,4 @@ class Channels_Editor_HTML():
channelslist = sorted(channelslist, key=lambda i: i['number']) 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class Channels_HTML(): class Channels_HTML():
@ -33,4 +33,4 @@ class Channels_HTML():
channelslist = sorted(channelslist, key=lambda i: i['number']) 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
import urllib.parse import urllib.parse
@ -47,4 +47,4 @@ class Cluster_HTML():
} }
locations_list.append(location_dict) 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class Diagnostics_HTML(): class Diagnostics_HTML():
@ -122,4 +122,4 @@ class Diagnostics_HTML():
"other": None, "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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
import datetime import datetime
from fHDHR.tools import humanized_time from fHDHR.tools import humanized_time
@ -92,4 +92,4 @@ class Guide_HTML():
chan_guide_list.append(chan_dict) 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class Index_HTML(): class Index_HTML():
@ -24,4 +24,4 @@ class Index_HTML():
"Tuner Usage": ("%s/%s" % (str(tuners_in_use), str(max_tuners))), "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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class Settings_HTML(): class Settings_HTML():
@ -30,4 +30,4 @@ class Settings_HTML():
if not len(web_settings_dict[config_section].keys()): if not len(web_settings_dict[config_section].keys()):
del web_settings_dict[config_section] 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class Tools_HTML(): class Tools_HTML():
@ -13,4 +13,4 @@ class Tools_HTML():
def get(self, *args): 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
from fHDHR.tools import humanized_filesize from fHDHR.tools import humanized_filesize
@ -33,4 +33,4 @@ class Tuners_HTML():
tuner_list.append(tuner_dict) 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class Version_HTML(): class Version_HTML():
@ -15,4 +15,4 @@ class Version_HTML():
version_dict = {} version_dict = {}
for key in list(self.fhdhr.config.internal["versions"].keys()): for key in list(self.fhdhr.config.internal["versions"].keys()):
version_dict[key] = self.fhdhr.config.internal["versions"][key] 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)

View File

@ -1,4 +1,4 @@
from flask import request, render_template from flask import request, render_template, session
class xmlTV_HTML(): class xmlTV_HTML():
@ -13,4 +13,4 @@ class xmlTV_HTML():
def get(self, *args): 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)