This commit is contained in:
yeahme49 2023-01-14 13:08:34 -06:00
parent 90aff208fc
commit b28dcf4b5e
2 changed files with 14 additions and 58 deletions

View File

@ -710,6 +710,8 @@ def config_raw():
@bp.route("/config/save", methods=["POST"]) @bp.route("/config/save", methods=["POST"])
def config_save(): def config_save():
save_option = request.headers.get('Save-Option')
new_config = request.get_data().decode() new_config = request.get_data().decode()
if not new_config: if not new_config:
@ -753,62 +755,16 @@ def config_save():
400, 400,
) )
try: if(save_option == "restart"):
restart_frigate() try:
except Exception as e: restart_frigate()
logging.error(f"Error restarting Frigate: {e}") except Exception as e:
return "Config successfully saved, unable to restart Frigate", 200 logging.error(f"Error restarting Frigate: {e}")
return "Config successfully saved, unable to restart Frigate", 200
return "Config successfully saved, restarting...", 200
@bp.route("/config/saveonly", methods=["POST"])
def config_save():
new_config = request.get_data().decode()
if not new_config:
return "Config with body param is required", 400
# Validate the config schema
try:
new_yaml = FrigateConfig.parse_raw(new_config)
except Exception as e:
return make_response(
jsonify(
{
"success": False,
"message": f"\nConfig Error:\n\n{str(traceback.format_exc())}",
}
),
400,
)
# Save the config to file
try:
config_file = os.environ.get("CONFIG_FILE", "/config/config.yml")
# Check if we can use .yaml instead of .yml
config_file_yaml = config_file.replace(".yml", ".yaml")
if os.path.isfile(config_file_yaml):
config_file = config_file_yaml
with open(config_file, "w") as f:
f.write(new_config)
f.close()
except Exception as e:
return make_response(
jsonify(
{
"success": False,
"message": f"Could not write config file, be sure that Frigate has write permission on the config file.",
}
),
400,
)
return "Config successfully saved", 200
return "Config successfully saved, restarting...", 200
else:
return "Config successfully saved.", 200
@bp.route("/config/schema.json") @bp.route("/config/schema.json")
def config_schema(): def config_schema():

View File

@ -24,7 +24,7 @@ export default function Config() {
axios axios
.post('config/save', window.editor.getValue(), { .post('config/save', window.editor.getValue(), {
headers: { 'Content-Type': 'text/plain' }, headers: { 'Content-Type': 'text/plain', 'Save-Option': 'restart' },
}) })
.then((response) => { .then((response) => {
if (response.status === 200) { if (response.status === 200) {
@ -46,8 +46,8 @@ export default function Config() {
} }
axios axios
.post('config/saveonly', window.editor.getValue(), { .post('config/save', window.editor.getValue(), {
headers: { 'Content-Type': 'text/plain' }, headers: { 'Content-Type': 'text/plain', 'Save-Option': 'saveonly' },
}) })
.then((response) => { .then((response) => {
if (response.status === 200) { if (response.status === 200) {