diff --git a/services/filestore/app.coffee b/services/filestore/app.coffee index aaacf704b2..11c323667d 100644 --- a/services/filestore/app.coffee +++ b/services/filestore/app.coffee @@ -77,6 +77,14 @@ app.get "/template/:template_id/v/:version/:format", keyBuilder.templateFileKey app.get "/template/:template_id/v/:version/:format/:sub_type", keyBuilder.templateFileKey, fileController.getFile app.post "/template/:template_id/v/:version/:format", keyBuilder.templateFileKey, fileController.insertFile + +app.get "/project/:project_id/public/:public_file_id", keyBuilder.publicFileKey, fileController.getFile +app.post "/project/:project_id/public/:public_file_id", keyBuilder.publicFileKey, fileController.insertFile + +app.put "/project/:project_id/public/:public_file_id", keyBuilder.publicFileKey, fileController.copyFile +app.del "/project/:project_id/public/:public_file_id", keyBuilder.publicFileKey, fileController.deleteFile + + app.get "/heapdump", (req, res)-> require('heapdump').writeSnapshot '/tmp/' + Date.now() + '.filestore.heapsnapshot', (err, filename)-> res.send filename diff --git a/services/filestore/app/coffee/KeyBuilder.coffee b/services/filestore/app/coffee/KeyBuilder.coffee index 9b2a101e6b..0b5e41525f 100644 --- a/services/filestore/app/coffee/KeyBuilder.coffee +++ b/services/filestore/app/coffee/KeyBuilder.coffee @@ -23,6 +23,15 @@ module.exports = req.bucket = settings.filestore.stores.user_files next() + publicFileKey: (req, res, next)-> + {project_id, public_file_id} = req.params + if not settings.filestore.stores.public_files? + res.status(501).send("public files not available") + else + req.key = "#{project_id}/#{public_file_id}" + req.bucket = settings.filestore.stores.public_files + next() + templateFileKey: (req, res, next)-> {template_id, format, version, sub_type} = req.params req.key = "#{template_id}/v/#{version}/#{format}" diff --git a/services/filestore/config/settings.defaults.coffee b/services/filestore/config/settings.defaults.coffee index dccefea525..f84928598e 100644 --- a/services/filestore/config/settings.defaults.coffee +++ b/services/filestore/config/settings.defaults.coffee @@ -21,6 +21,7 @@ module.exports = # Must contain full path, e.g. "/var/lib/sharelatex/data". # This path must exist, not be tmpfs and be writable to by the user sharelatex is run as. user_files: Path.resolve(__dirname + "/../user_files") + public_files: Path.resolve(__dirname + "/../public_files") template_files: Path.resolve(__dirname + "/../template_files") # if you are using S3, then fill in your S3 details below # s3: