Skip to content
Snippets Groups Projects
Commit 20ff265b authored by Gabriel Engel's avatar Gabriel Engel Committed by GitHub
Browse files

Merge pull request #5992 from wandonye/Fix#5410

added getS3FileUrl, fixed #5410
parents f5da5e43 2b64666e
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,7 @@ Package.onUse(function(api) {
api.addFiles('server/config/configFileUploadGridFS.js', 'server');
api.addFiles('server/methods/sendFileMessage.js', 'server');
api.addFiles('server/methods/getS3FileUrl.js', 'server');
api.addFiles('server/startup/settings.js', 'server');
......
const crypto = Npm.require('crypto');
let protectedFiles, S3accessKey, S3secretKey, S3expiryTimeSpan;
RocketChat.settings.get('FileUpload_ProtectFiles', function(key, value) {
protectedFiles = value;
});
RocketChat.settings.get('FileUpload_S3_AWSAccessKeyId', function(key, value) {
S3accessKey = value;
});
RocketChat.settings.get('FileUpload_S3_AWSSecretAccessKey', function(key, value) {
S3secretKey = value;
});
RocketChat.settings.get('FileUpload_S3_URLExpiryTimeSpan', function(key, value) {
S3expiryTimeSpan = value;
});
Meteor.methods({
getS3FileUrl(fileId) {
if (protectedFiles && !Meteor.userId()) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'sendFileMessage' });
}
const file = RocketChat.models.Uploads.findOneById(fileId);
const resourceURL = '/' + file.s3.bucket + '/' + file.s3.path + file._id;
const expires = parseInt(new Date().getTime() / 1000) + Math.max(5, S3expiryTimeSpan);
const StringToSign = 'GET\n\n\n' + expires +'\n'+resourceURL;
const signature = crypto.createHmac('sha1', S3secretKey).update(new Buffer(StringToSign, 'utf-8')).digest('base64');
return {
url:file.url + '?AWSAccessKeyId='+encodeURIComponent(S3accessKey)+'&Expires='+expires+'&Signature='+encodeURIComponent(signature)
};
}
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment