mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-08 13:43:35 +00:00
make sure downloaded drive file names are safe
This commit is contained in:
9
gam.py
9
gam.py
@ -467,7 +467,7 @@ def callGAPIpages(service, function, items=u'items', nextPageToken=u'nextPageTok
|
|||||||
pageToken = this_page[nextPageToken]
|
pageToken = this_page[nextPageToken]
|
||||||
if pageToken == '':
|
if pageToken == '':
|
||||||
return all_pages
|
return all_pages
|
||||||
except KeyError:
|
except (IndexError, KeyError):
|
||||||
return all_pages
|
return all_pages
|
||||||
|
|
||||||
def getAPIVer(api):
|
def getAPIVer(api):
|
||||||
@ -2214,6 +2214,7 @@ def downloadDriveFile(users):
|
|||||||
query = fileIds = None
|
query = fileIds = None
|
||||||
gdownload_format = u'openoffice'
|
gdownload_format = u'openoffice'
|
||||||
target_folder = getGamPath()
|
target_folder = getGamPath()
|
||||||
|
safe_filename_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
|
||||||
while i < len(sys.argv):
|
while i < len(sys.argv):
|
||||||
if sys.argv[i].lower() == u'id':
|
if sys.argv[i].lower() == u'id':
|
||||||
fileIds = [sys.argv[i+1],]
|
fileIds = [sys.argv[i+1],]
|
||||||
@ -2263,7 +2264,7 @@ def downloadDriveFile(users):
|
|||||||
if fileIds[0].find('/') != -1:
|
if fileIds[0].find('/') != -1:
|
||||||
fileIds[0] = fileIds[0][:fileIds[0].find('/')]
|
fileIds[0] = fileIds[0][:fileIds[0].find('/')]
|
||||||
if not fileIds:
|
if not fileIds:
|
||||||
print u'No files to delete for %s' % user
|
print u'No files to download for %s' % user
|
||||||
i = 0
|
i = 0
|
||||||
for fileId in fileIds:
|
for fileId in fileIds:
|
||||||
extension = None
|
extension = None
|
||||||
@ -2295,7 +2296,9 @@ def downloadDriveFile(users):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
break
|
break
|
||||||
filename = u'%s/%s' % (target_folder, result[u'title'])
|
file_title = result[u'title']
|
||||||
|
safe_file_title = ''.join(c for c in file_title if c in safe_filename_chars)
|
||||||
|
filename = u'%s/%s' % (target_folder, safe_file_title)
|
||||||
if extension and filename.lower()[:len(extension)] != extension:
|
if extension and filename.lower()[:len(extension)] != extension:
|
||||||
filename = u'%s%s' % (filename, extension)
|
filename = u'%s%s' % (filename, extension)
|
||||||
y = 0
|
y = 0
|
||||||
|
Reference in New Issue
Block a user