소스 검색

More validation for script names

boyska 7 년 전
부모
커밋
a1f0eabc50
2개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 6 1
      larigira/audioform_script.py
  2. 3 0
      larigira/audiogen_script.py

+ 6 - 1
larigira/audioform_script.py

@@ -1,5 +1,5 @@
 from flask_wtf import Form
-from wtforms import StringField, validators, SubmitField
+from wtforms import StringField, validators, SubmitField, ValidationError
 
 
 class ScriptAudioForm(Form):
@@ -11,6 +11,11 @@ class ScriptAudioForm(Form):
                        description='arguments, separated by spaces')
     submit = SubmitField(u'Submit')
 
+    def validate_name(form, field):
+        if '/' in field.data:
+            raise ValidationError("Name cannot have slashes: "
+                                  "it's a name, not a path")
+
 
 def scriptaudio_receive(form):
     return {

+ 3 - 0
larigira/audiogen_script.py

@@ -35,6 +35,9 @@ def generate(spec):
         if attr not in spec:
             raise ValueError("Malformed audiospec: missing '%s'" % attr)
 
+    if '/' in spec['name']:
+        raise ValueError("Script name is a filename, not a path ({} provided)"
+                         .format(spec['name']))
     scriptpath = os.path.join(conf['SCRIPTS_PATH'], spec['name'])
     if not os.path.exists(scriptpath):
         raise ValueError("Script %s not found", spec['name'])