Skip to content

Commit 84ff2e1

Browse files
committed
sanitize filename and forbid certain characters
1 parent 7d1affe commit 84ff2e1

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog of Cura-DuetRRFPlugin
22

3+
## v1.0.5: 2019-11-10
4+
* sanitize filename and forbid certain characters
5+
36
## v1.0.4: 2019-11-10
47
* bump compatibility for Cura 4.4 / API 7.0
58

DuetRRFOutputDevice.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,25 @@ def requestWrite(self, node, fileName=None, *args, **kwargs):
131131
self._dialog.findChild(QObject, "nameField").setProperty('focus', True)
132132

133133
def onFilenameChanged(self):
134-
fileName = self._dialog.findChild(QObject, "nameField").property('text')
134+
fileName = self._dialog.findChild(QObject, "nameField").property('text').strip()
135+
136+
forbidden_characters = "\"'´`<>()[]?*\,;:&%#$!"
137+
for forbidden_character in forbidden_characters:
138+
if forbidden_character in fileName:
139+
self._dialog.setProperty('validName', False)
140+
self._dialog.setProperty('validationError', 'Filename cannot contain {}'.format(forbidden_characters))
141+
return
142+
143+
if fileName == '.' or fileName == '..':
144+
self._dialog.setProperty('validName', False)
145+
self._dialog.setProperty('validationError', 'Filename cannot be "." or ".."')
146+
return
147+
135148
self._dialog.setProperty('validName', len(fileName) > 0)
149+
self._dialog.setProperty('validationError', 'Filename too short')
136150

137151
def onFilenameAccepted(self):
138-
self._fileName = self._dialog.findChild(QObject, "nameField").property('text')
152+
self._fileName = self._dialog.findChild(QObject, "nameField").property('text').strip()
139153
if not self._fileName.endswith('.gcode') and '.' not in self._fileName:
140154
self._fileName += '.gcode'
141155
Logger.log("d", self._name_id + " | Filename set to: " + self._fileName)

plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"name": "DuetRRF",
33
"author": "Thomas Kriechbaumer",
44
"description": "Upload and Print to DuetWifi / DuetEthernet / Duet Maestro with RepRapFirmware.",
5-
"version": "1.0.4",
5+
"version": "1.0.5",
66
"api": "7.0.0"
77
}

resources/qml/UploadFilename.qml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ UM.Dialog
3939
text: base.object;
4040
maximumLength: 100;
4141
onTextChanged: base.textChanged(text);
42-
Keys.onReturnPressed: base.accept();
43-
Keys.onEnterPressed: base.accept();
42+
Keys.onReturnPressed: { if (base.validName) base.accept(); }
43+
Keys.onEnterPressed: { if (base.validName) base.accept(); }
4444
Keys.onEscapePressed: base.reject();
4545
}
4646

0 commit comments

Comments
 (0)