diff --git a/lib/fileUpload.coffee b/lib/fileUpload.coffee index e9251a51497..74055eff5b1 100644 --- a/lib/fileUpload.coffee +++ b/lib/fileUpload.coffee @@ -9,26 +9,6 @@ if UploadFS? remove: (userId, doc) -> return userId is doc.userId - - fileUploadMediaWhiteList = -> - return unless RocketChat.settings.get('FileUpload_MediaTypeWhiteList') - - return _.map(RocketChat.settings.get('FileUpload_MediaTypeWhiteList').split(','), (item) -> return item.trim() ) - - @fileUploadIsValidContentType = (type) -> - list = fileUploadMediaWhiteList() - - if !list or _.contains list, type - return true - else - wildCardGlob = '/*' - wildcards = _.filter list, (item) -> return item.indexOf(wildCardGlob) > 0 - - if _.contains wildcards, type.replace(/(\/.*)$/, wildCardGlob) - return true; - - return false; - initFileStore = -> cookie = new Cookies() if Meteor.isClient @@ -42,7 +22,7 @@ if UploadFS? collectionName: 'rocketchat_uploads' filter: new UploadFS.Filter maxSize: RocketChat.settings.get('FileUpload_MaxFileSize') - contentTypes: fileUploadMediaWhiteList() + contentTypes: RocketChat.fileUploadMediaWhiteList() onFinishUpload: -> console.log arguments transformWrite: (readStream, writeStream, fileId, file) -> @@ -83,11 +63,11 @@ if UploadFS? res.setHeader 'content-disposition', "attachment; filename=\"#{ encodeURIComponent(file.name) }\"" return true -Meteor.startup -> - if Meteor.isServer - initFileStore() - else - Tracker.autorun (c) -> - if Meteor.userId() and RocketChat.settings.subscription.ready() - initFileStore() - c.stop() + Meteor.startup -> + if Meteor.isServer + initFileStore() + else + Tracker.autorun (c) -> + if Meteor.userId() and RocketChat.settings.subscription.ready() + initFileStore() + c.stop() diff --git a/packages/rocketchat-lib/lib/fileUploadRestrictions.js b/packages/rocketchat-lib/lib/fileUploadRestrictions.js new file mode 100644 index 00000000000..9d3696bb4c8 --- /dev/null +++ b/packages/rocketchat-lib/lib/fileUploadRestrictions.js @@ -0,0 +1,28 @@ +RocketChat.fileUploadMediaWhiteList = function() { + var mediaTypeWhiteList = RocketChat.settings.get('FileUpload_MediaTypeWhiteList'); + + console.log('mediaTypeWhiteList ->',mediaTypeWhiteList); + if (!mediaTypeWhiteList) { + return; + } + return _.map(mediaTypeWhiteList.split(','), function(item) { + return item.trim(); + }); +}; + +RocketChat.fileUploadIsValidContentType = function(type) { + var list, wildCardGlob, wildcards; + list = RocketChat.fileUploadMediaWhiteList(); + if (!list || _.contains(list, type)) { + return true; + } else { + wildCardGlob = '/*'; + wildcards = _.filter(list, function(item) { + return item.indexOf(wildCardGlob) > 0; + }); + if (_.contains(wildcards, type.replace(/(\/.*)$/, wildCardGlob))) { + return true; + } + } + return false; +}; diff --git a/packages/rocketchat-lib/package.js b/packages/rocketchat-lib/package.js index 2fb6c0c807a..007adf4a8da 100644 --- a/packages/rocketchat-lib/package.js +++ b/packages/rocketchat-lib/package.js @@ -38,6 +38,7 @@ Package.onUse(function(api) { api.addFiles('lib/settings.coffee'); api.addFiles('lib/configLogger.coffee'); api.addFiles('lib/callbacks.coffee'); + api.addFiles('lib/fileUploadRestrictions.js'); api.addFiles('lib/slashCommand.coffee'); api.addFiles('lib/Message.coffee'); api.addFiles('lib/MessageTypes.coffee');