Skip to content

Commit 00b5c37

Browse files
committed
Use secure_filename
1 parent f41c3f6 commit 00b5c37

File tree

1 file changed

+7
-18
lines changed
  • transformerlab/plugins/mlx_audio_server

1 file changed

+7
-18
lines changed

transformerlab/plugins/mlx_audio_server/main.py

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from datetime import datetime
2323

2424
from lab.dirs import get_experiments_dir, get_workspace_dir
25+
from werkzeug.utils import secure_filename
2526

2627
worker_id = str(uuid.uuid4())[:8]
2728

@@ -78,7 +79,7 @@ async def generate(self, params):
7879
text = params.get("text", "")
7980
model = params.get("model", None)
8081
speed = params.get("speed", 1.0)
81-
file_prefix = params.get("file_prefix", "audio")
82+
file_prefix = secure_filename(params.get("file_prefix", "audio"))
8283
audio_format = params.get("audio_format", "wav")
8384
sample_rate = params.get("sample_rate", 24000)
8485
temperature = params.get("temperature", 0.0)
@@ -88,14 +89,9 @@ async def generate(self, params):
8889
lang_code = params.get("lang_code", None)
8990
stream = params.get("stream", False)
9091

91-
experiment_dir = os.path.realpath(os.path.abspath(os.path.normpath(get_experiments_dir())))
92-
audio_dir = params.get("audio_dir", None)
93-
if not audio_dir:
94-
audio_dir = os.path.join(experiment_dir, "audio")
95-
audio_dir = os.path.realpath(os.path.abspath(os.path.normpath(audio_dir)))
96-
common_path = os.path.commonpath([experiment_dir, audio_dir])
97-
if common_path != experiment_dir:
98-
raise ValueError("Invalid audio_dir: path must be within experiment directory")
92+
experiment_dir = get_experiments_dir()
93+
audio_dir_name = secure_filename(params.get("audio_dir", "audio"))
94+
audio_dir = os.path.join(experiment_dir, audio_dir_name)
9995
os.makedirs(name=audio_dir, exist_ok=True)
10096

10197
try:
@@ -153,15 +149,8 @@ async def generate(self, params):
153149
audio_path = params.get("audio_path", "")
154150
model = params.get("model", None)
155151
format = params.get("format", "txt")
156-
transcriptions_dir = params.get("output_path", None)
157-
158-
if not transcriptions_dir:
159-
transcriptions_dir = os.path.join(get_workspace_dir(), "transcriptions")
160-
else:
161-
# Resolve to absolute path and ensure it's within WORKSPACE_DIR
162-
transcriptions_dir = os.path.abspath(transcriptions_dir)
163-
if not transcriptions_dir.startswith(os.path.abspath(get_workspace_dir())):
164-
raise ValueError("Invalid output_path: path must be within workspace directory")
152+
output_path_name = secure_filename(params.get("output_path", "transcriptions"))
153+
transcriptions_dir = os.path.join(get_workspace_dir(), output_path_name)
165154
os.makedirs(name=transcriptions_dir, exist_ok=True)
166155

167156
# Generate a UUID for this file name:

0 commit comments

Comments
 (0)