mirror of
https://github.com/fHDHR/fHDHR_NextPVR.git
synced 2025-12-06 10:26:57 -05:00
80 lines
3.0 KiB
Python
80 lines
3.0 KiB
Python
from flask import request, redirect, Response, session
|
|
import urllib.parse
|
|
import threading
|
|
import time
|
|
import json
|
|
|
|
|
|
class Settings():
|
|
endpoints = ["/api/settings"]
|
|
endpoint_name = "api_settings"
|
|
endpoint_methods = ["GET", "POST"]
|
|
|
|
def __init__(self, fhdhr):
|
|
self.fhdhr = fhdhr
|
|
|
|
self.restart_url = "/api/settings?method=restart_actual"
|
|
self.restart_sleep = 5
|
|
|
|
def __call__(self, *args):
|
|
return self.get(*args)
|
|
|
|
def get(self, *args):
|
|
|
|
method = request.args.get('method', default="get", type=str)
|
|
redirect_url = request.args.get('redirect', default=None, type=str)
|
|
|
|
if method == "get":
|
|
web_settings_dict = {}
|
|
for config_section in list(self.fhdhr.config.conf_default.keys()):
|
|
web_settings_dict[config_section] = {}
|
|
|
|
for config_item in list(self.fhdhr.config.conf_default[config_section].keys()):
|
|
real_config_section = config_section
|
|
if config_section == self.fhdhr.config.dict["main"]["dictpopname"]:
|
|
real_config_section = "origin"
|
|
web_settings_dict[config_section][config_item] = {
|
|
"value": self.fhdhr.config.dict[real_config_section][config_item],
|
|
}
|
|
if self.fhdhr.config.conf_default[config_section][config_item]["config_web_hidden"]:
|
|
web_settings_dict[config_section][config_item]["value"] = "***********"
|
|
|
|
return_json = json.dumps(web_settings_dict, indent=4)
|
|
|
|
return Response(status=200,
|
|
response=return_json,
|
|
mimetype='application/json')
|
|
|
|
elif method == "update":
|
|
config_section = request.form.get('config_section', None)
|
|
config_name = request.form.get('config_name', None)
|
|
config_value = request.form.get('config_value', None)
|
|
|
|
if not config_section or not config_name or not config_value:
|
|
if redirect_url:
|
|
return redirect(redirect_url + "?retmessage=" + urllib.parse.quote("%s Failed" % method))
|
|
else:
|
|
return "%s Falied" % method
|
|
|
|
if config_section == "origin":
|
|
config_section = self.fhdhr.config.dict["main"]["dictpopname"]
|
|
|
|
self.fhdhr.config.write(config_section, config_name, config_value)
|
|
|
|
elif method == "restart":
|
|
restart_thread = threading.Thread(target=self.restart_thread)
|
|
restart_thread.start()
|
|
return redirect(redirect_url + "?retmessage=" + urllib.parse.quote("Restarting in %s seconds" % self.restart_sleep))
|
|
|
|
elif method == "restart_actual":
|
|
session["restart"] = True
|
|
|
|
if redirect_url:
|
|
return redirect(redirect_url + "?retmessage=" + urllib.parse.quote("%s Success" % method))
|
|
else:
|
|
return "%s Success" % method
|
|
|
|
def restart_thread(self):
|
|
time.sleep(self.restart_sleep)
|
|
self.fhdhr.api.get(self.restart_url)
|