parent
0ea80c7f15
commit
5fd741294b
@ -0,0 +1,27 @@ |
||||
/* globals FileUpload:true */ |
||||
FileUpload = { |
||||
handlers: {}, |
||||
addHandler(store, handler) { |
||||
this.handlers[store] = handler; |
||||
}, |
||||
delete(fileId) { |
||||
let file = RocketChat.models.Uploads.findOneById(fileId); |
||||
|
||||
if (!file) { |
||||
return; |
||||
} |
||||
|
||||
this.handlers[file.store].delete(file); |
||||
|
||||
return RocketChat.models.Uploads.remove(file._id); |
||||
}, |
||||
get(file, req, res, next) { |
||||
if (file.store && this.handlers && this.handlers[file.store] && this.handlers[file.store].get) { |
||||
this.handlers[file.store].get.call(this, file, req, res, next); |
||||
} else { |
||||
res.writeHead(404); |
||||
res.end(); |
||||
return; |
||||
} |
||||
} |
||||
}; |
||||
@ -1,17 +0,0 @@ |
||||
fileUploadResponse = new class { |
||||
constructor() { |
||||
this.workers = {}; |
||||
} |
||||
register(store, callback) { |
||||
this.workers[store] = callback; |
||||
} |
||||
process(file, req, res, next) { |
||||
if (file.store && this.workers && this.workers[file.store]) { |
||||
this.workers[file.store].call(this, file, req, res, next); |
||||
} else { |
||||
res.writeHead(404); |
||||
res.end(); |
||||
return; |
||||
} |
||||
} |
||||
}; |
||||
@ -1,33 +0,0 @@ |
||||
/* globals fileUploadResponse*/ |
||||
|
||||
var crypto = Npm.require('crypto'); |
||||
|
||||
var S3accessKey, S3secretKey; |
||||
|
||||
RocketChat.settings.get('FileUpload_S3_AWSAccessKeyId', function(key, value) { |
||||
S3accessKey = value; |
||||
}); |
||||
RocketChat.settings.get('FileUpload_S3_AWSSecretAccessKey', function(key, value) { |
||||
S3secretKey = value; |
||||
}); |
||||
|
||||
var generateURL = function(file) { |
||||
if (!file || !file.s3) { |
||||
return; |
||||
} |
||||
let resourceURL = '/' + file.s3.bucket + '/' + file.s3.path + file._id; |
||||
let expires = parseInt(new Date().getTime() / 1000) + 60; |
||||
let StringToSign = 'GET\n\n\n' + expires +'\n'+resourceURL; |
||||
let signature = crypto.createHmac('sha1', S3secretKey).update(new Buffer(StringToSign, 'utf-8')).digest('base64'); |
||||
return file.url + '?AWSAccessKeyId='+encodeURIComponent(S3accessKey)+'&Expires='+expires+'&Signature='+encodeURIComponent(signature); |
||||
}; |
||||
|
||||
fileUploadResponse.register('s3', function(file, req, res) { |
||||
let fileUrl = generateURL(file); |
||||
|
||||
if (fileUrl) { |
||||
res.setHeader('Location', fileUrl); |
||||
res.writeHead(302); |
||||
} |
||||
res.end(); |
||||
}); |
||||
Loading…
Reference in new issue