Added some path and file name validion to jpg export

This commit is contained in:
Mario Voigt 2021-04-08 22:47:41 +02:00
parent 2164c63e98
commit e5ae8a6f48

View File

@ -51,13 +51,21 @@ class JPEGExport(inkex.Effect):
inkex.errormsg(_('Please indicate a directory other than your system\'s base directory.')) inkex.errormsg(_('Please indicate a directory other than your system\'s base directory.'))
exit() exit()
# Test if the directory exists: # Test if the directory exists and filename is valid:
if not os.path.exists(os.path.dirname(self.options.path)): filebase = os.path.dirname(self.options.path)
inkex.errormsg(_('The directory "%s" does not exist.') % os.path.dirname(self.options.path)) if not os.path.exists(filebase):
inkex.errormsg(_('The directory "%s" does not exist.') % filebase)
exit() exit()
filename = os.path.splitext(os.path.basename(self.options.path))
outfile=self.options.path filename_base = filename[0]
filename_ending = filename[1]
if self.get_valid_filename(filename_base) != filename_base:
inkex.errormsg(_('The file name "%s" is invalid.') % filename_base)
return
if filename_ending != 'jpg' or filename_ending != 'jpeg':
filename_ending = 'jpg'
outfile = os.path.join(filebase, filename_base + '.' + filename_ending)
shutil.copy(self.options.input_file, self.options.input_file + ".svg") #make a file copy with file ending to suppress import warnings shutil.copy(self.options.input_file, self.options.input_file + ".svg") #make a file copy with file ending to suppress import warnings
curfile = self.options.input_file + ".svg" curfile = self.options.input_file + ".svg"
#inkex.utils.debug("curfile:" + curfile) #inkex.utils.debug("curfile:" + curfile)
@ -162,7 +170,7 @@ class JPEGExport(inkex.Effect):
#inkex.utils.debug("command:" + command) #inkex.utils.debug("command:" + command)
#inkex.utils.debug("Errorcode:" + str(return_code)) #inkex.utils.debug("Errorcode:" + str(return_code))
def tojpeg(self,outfile): def tojpeg(self, outfile):
tmp = self.getTmpPath() tmp = self.getTmpPath()
if os.name == 'nt': if os.name == 'nt':
outfile = outfile.replace("\\","\\\\") outfile = outfile.replace("\\","\\\\")
@ -188,5 +196,9 @@ class JPEGExport(inkex.Effect):
else: else:
return '/tmp/' return '/tmp/'
def get_valid_filename(self, s):
s = str(s).strip().replace(" ", "_")
return re.sub(r"(?u)[^-\w.]", "", s)
if __name__ == '__main__': if __name__ == '__main__':
JPEGExport().run() JPEGExport().run()