diff --git a/package-lock.json b/package-lock.json index c42740d30277..1cee71b714c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -677,16 +677,6 @@ "integrity": "sha1-hlv3+K851rCYLGCQKRSsdrwBCPY=", "dev": true }, - "array-parallel": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", - "integrity": "sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=" - }, - "array-series": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz", - "integrity": "sha1-3103v8XC7wdV4qpPkv6ufUtaly8=" - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -3435,8 +3425,21 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { + "lru-cache": "4.1.1", "shebang-command": "1.2.0", "which": "1.2.14" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + } } }, "cryptiles": { @@ -3734,6 +3737,12 @@ } } }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true + }, "dir-glob": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", @@ -5734,45 +5743,6 @@ "minimatch": "3.0.4" } }, - "gm": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/gm/-/gm-1.23.1.tgz", - "integrity": "sha1-Lt7rlYCE0PjqeYjl2ZWxx9/BR3c=", - "requires": { - "array-parallel": "0.1.3", - "array-series": "0.1.5", - "cross-spawn": "4.0.2", - "debug": "3.1.0" - }, - "dependencies": { - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "requires": { - "lru-cache": "4.1.1", - "which": "1.2.14" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } - } - }, "gonzales-pe": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz", @@ -5883,6 +5853,12 @@ "flushwritable": "1.0.0" } }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, "grpc": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.9.0.tgz", @@ -7694,7 +7670,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "2.1.0", @@ -8610,6 +8587,44 @@ "minimist": "0.0.8" } }, + "mocha": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", + "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, "mock-require": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mock-require/-/mock-require-3.0.1.tgz", @@ -9461,7 +9476,8 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "pump": { "version": "1.0.2", @@ -12013,6 +12029,7 @@ "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, "requires": { "isexe": "2.0.0" } @@ -12441,7 +12458,8 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, "yaqrcode": { "version": "0.2.1", diff --git a/package.json b/package.json index 797a7e974657..1abb004e37df 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,6 @@ "emailreplyparser": "^0.0.5", "file-type": "^7.4.0", "filesize": "3.5.11", - "gm": "1.23.1", "gridfs-stream": "1.1.1", "he": "1.1.1", "highlight.js": "^9.12.0", diff --git a/packages/rocketchat-file-upload/server/lib/FileUpload.js b/packages/rocketchat-file-upload/server/lib/FileUpload.js index 1fba904b1165..a056e991fba5 100644 --- a/packages/rocketchat-file-upload/server/lib/FileUpload.js +++ b/packages/rocketchat-file-upload/server/lib/FileUpload.js @@ -114,7 +114,7 @@ Object.assign(FileUpload, { }, uploadsOnValidate(file) { - if (RocketChatFile.enabled === false || !/^image\/((x-windows-)?bmp|p?jpeg|png)$/.test(file.type)) { + if (!/^image\/((x-windows-)?bmp|p?jpeg|png)$/.test(file.type)) { return; } diff --git a/packages/rocketchat-file/file.server.js b/packages/rocketchat-file/file.server.js index 1fb0487184e6..e4888d56d291 100644 --- a/packages/rocketchat-file/file.server.js +++ b/packages/rocketchat-file/file.server.js @@ -3,76 +3,13 @@ import stream from 'stream'; import fs from 'fs'; import path from 'path'; import mkdirp from 'mkdirp'; -import gm from 'gm'; -import {exec} from 'child_process'; // Fix problem with usernames being converted to object id Grid.prototype.tryParseObjectId = function() { return false; }; //TODO: REMOVE RocketChatFile from globals -RocketChatFile = { - gm, - enabled: undefined, - enable() { - RocketChatFile.enabled = true; - return RocketChat.settings.updateOptionsById('Accounts_AvatarResize', { - alert: undefined - }); - }, - disable() { - RocketChatFile.enabled = false; - return RocketChat.settings.updateOptionsById('Accounts_AvatarResize', { - alert: 'The_image_resize_will_not_work_because_we_can_not_detect_ImageMagick_or_GraphicsMagick_installed_in_your_server' - }); - } -}; - -const detectGM = function() { - return exec('gm version', Meteor.bindEnvironment(function(error, stdout) { - if ((error == null) && stdout.indexOf('GraphicsMagick') > -1) { - RocketChatFile.enable(); - RocketChat.Info.GraphicsMagick = { - enabled: true, - version: stdout - }; - } else { - RocketChat.Info.GraphicsMagick = { - enabled: false - }; - } - return exec('convert -version', Meteor.bindEnvironment(function(error, stdout) { - if ((error == null) && stdout.indexOf('ImageMagick') > -1) { - if (RocketChatFile.enabled !== true) { - // Enable GM to work with ImageMagick if no GraphicsMagick - RocketChatFile.gm = RocketChatFile.gm.subClass({ - imageMagick: true - }); - RocketChatFile.enable(); - } - return RocketChat.Info.ImageMagick = { - enabled: true, - version: stdout - }; - } else { - if (RocketChatFile.enabled !== true) { - RocketChatFile.disable(); - } - return RocketChat.Info.ImageMagick = { - enabled: false - }; - } - })); - })); -}; - -detectGM(); - -Meteor.methods({ - 'detectGM'() { - detectGM(); - } -}); +RocketChatFile = {}; RocketChatFile.bufferToStream = function(buffer) { const bufferStream = new stream.PassThrough();