2222from datetime import datetime
2323
2424from lab .dirs import get_experiments_dir , get_workspace_dir
25+ from werkzeug .utils import secure_filename
2526
2627worker_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