summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaan Sprenkels2018-11-27 22:56:53 +0100
committerDaan Sprenkels2018-11-28 09:13:28 +0100
commit9fba2682888ad93816cf98f749562f4671cb235d (patch)
tree20a28721be67e2a9a5d160b593bf6473a5f8fa36 /lib
parent8bace89cabd18fdd793c237f47f58ac96d5ef531 (diff)
Prevent subdirectories in user export
This commit also refactors the code a bit, and adds a '-' separator between a filename and its duplicate index. This commit fixes #1079. Signed-off-by: Daan Sprenkels <hello@dsprenkels.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/web/userRouter.js20
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/web/userRouter.js b/lib/web/userRouter.js
index db786d53..ca364422 100644
--- a/lib/web/userRouter.js
+++ b/lib/web/userRouter.js
@@ -90,18 +90,20 @@ UserRouter.get('/me/export', function (req, res) {
ownerId: user.id
}
}).then(function (notes) {
- let list = []
+ let filenames = {}
async.each(notes, function (note, callback) {
- let title
- let extension = ''
+ let basename = note.title.replace(/\//g, '-') // Prevent subdirectories
+ let filename
+ let suffix = ''
do {
- title = note.title + extension
- extension++
- } while (list.indexOf(title) !== -1)
+ let seperator = typeof suffix === 'number' ? '-' : ''
+ filename = basename + seperator + suffix + '.md'
+ suffix++
+ } while (filenames[filename])
+ filenames[filename] = true
- list.push(title)
- logger.debug('Write: ' + title + '.md')
- archive.append(Buffer.from(note.content), { name: title + '.md', date: note.lastchangeAt })
+ logger.debug('Write: ' + filename)
+ archive.append(Buffer.from(note.content), { name: filename, date: note.lastchangeAt })
callback(null, null)
}, function (err) {
if (err) {