Add system_safe_path to more locations in api_server.py

This commit is contained in:
2023-10-21 18:03:50 -07:00
parent 671e2e3f32
commit 2be2eee157

View File

@@ -7,6 +7,7 @@ import platform
import shutil import shutil
import socket import socket
import ssl import ssl
import tempfile
import threading import threading
import time import time
import zipfile import zipfile
@@ -55,7 +56,7 @@ def sorted_jobs(all_jobs, sort_by_date=True):
@server.route('/') @server.route('/')
@server.route('/index') @server.route('/index')
def index(): def index():
with open('config/presets.yaml') as f: with open(system_safe_path('config/presets.yaml')) as f:
render_presets = yaml.load(f, Loader=yaml.FullLoader) render_presets = yaml.load(f, Loader=yaml.FullLoader)
return render_template('index.html', all_jobs=sorted_jobs(RenderQueue.all_jobs()), return render_template('index.html', all_jobs=sorted_jobs(RenderQueue.all_jobs()),
@@ -189,7 +190,7 @@ def get_job_status(job_id):
@server.get('/api/job/<job_id>/logs') @server.get('/api/job/<job_id>/logs')
def get_job_logs(job_id): def get_job_logs(job_id):
found_job = RenderQueue.job_with_id(job_id) found_job = RenderQueue.job_with_id(job_id)
log_path = found_job.log_path() log_path = system_safe_path(found_job.log_path()),
log_data = None log_data = None
if log_path and os.path.exists(log_path): if log_path and os.path.exists(log_path):
with open(log_path) as file: with open(log_path) as file:
@@ -233,10 +234,11 @@ def download_all(job_id):
found_job = RenderQueue.job_with_id(job_id) found_job = RenderQueue.job_with_id(job_id)
output_dir = os.path.dirname(found_job.output_path) output_dir = os.path.dirname(found_job.output_path)
if os.path.exists(output_dir): if os.path.exists(output_dir):
zip_filename = os.path.join('/tmp', pathlib.Path(found_job.input_path).stem + '.zip') zip_filename = system_safe_path(os.path.join(tempfile.gettempdir(),
pathlib.Path(found_job.input_path).stem + '.zip'))
with ZipFile(zip_filename, 'w') as zipObj: with ZipFile(zip_filename, 'w') as zipObj:
for f in os.listdir(output_dir): for f in os.listdir(output_dir):
zipObj.write(filename=os.path.join(output_dir, f), zipObj.write(filename=system_safe_path(os.path.join(output_dir, f)),
arcname=os.path.basename(f)) arcname=os.path.basename(f))
return send_file(zip_filename, mimetype="zip", as_attachment=True, ) return send_file(zip_filename, mimetype="zip", as_attachment=True, )
else: else:
@@ -585,7 +587,7 @@ def start_server(background_thread=False):
RenderQueue.evaluate_queue() RenderQueue.evaluate_queue()
time.sleep(delay_sec) time.sleep(delay_sec)
with open('config/config.yaml') as f: with open(system_safe_path('config/config.yaml')) as f:
config = yaml.load(f, Loader=yaml.FullLoader) config = yaml.load(f, Loader=yaml.FullLoader)
logging.basicConfig(format='%(asctime)s: %(levelname)s: %(module)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S', logging.basicConfig(format='%(asctime)s: %(levelname)s: %(module)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S',