diff --git a/backend/package-lock.json b/backend/package-lock.json index f5e566cf..7678a401 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -20,7 +20,6 @@ "erlpack": "github:discord/erlpack", "escape-string-regexp": "^1.0.5", "express": "^4.17.0", - "file-type": "^16.5.2", "fp-ts": "^2.0.1", "humanize-duration": "^3.15.0", "io-ts": "^2.0.0", @@ -36,7 +35,6 @@ "lodash.pick": "^4.4.0", "moment-timezone": "^0.5.21", "mysql": "^2.16.0", - "node-fetch": "^2.6.1", "parse-color": "^1.0.0", "passport": "^0.4.0", "passport-custom": "^1.0.5", @@ -66,7 +64,6 @@ "@types/lodash.at": "^4.6.3", "@types/moment-timezone": "^0.5.6", "@types/node": "^14.0.14", - "@types/node-fetch": "^2.5.12", "@types/passport": "^1.0.0", "@types/passport-oauth2": "^1.4.8", "@types/passport-strategy": "^0.2.35", @@ -269,11 +266,6 @@ "node": ">=6" } }, - "node_modules/@tokenizer/token": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz", - "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==" - }, "node_modules/@types/body-parser": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz", @@ -406,16 +398,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.14.tgz", "integrity": "sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==" }, - "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, "node_modules/@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -2496,22 +2478,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-type": { - "version": "16.5.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.2.tgz", - "integrity": "sha512-lnHRZj2USLF3v4C5ZY7/vQQeoTVA1YV9TtD6UUCr9z5Cd0uyutqxPBJxkXzM6lufPNuSfefq/yFmnSPz0C3wNw==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "6.1.3", - "token-types": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -2557,20 +2523,6 @@ "node": ">=6" } }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -4270,18 +4222,6 @@ "through": "~2.3" } }, - "node_modules/peek-readable": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-3.1.4.tgz", - "integrity": "sha512-DX7ec7frSMtCWw+zMd27f66hcxIz/w9LQTY2RflB4WNHCVPAye1pJiP2t3gvaaOhu7IOhtPbHw8MemMj+F5lrg==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", @@ -4608,34 +4548,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/readdirp": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", @@ -5278,22 +5190,6 @@ "node": ">=0.10.0" } }, - "node_modules/strtok3": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.1.3.tgz", - "integrity": "sha512-ssWSKFOeUTurMSucgyUf+a6Z9mVTYrsYiyEK5RLnh8BM6sFrKSljVlnjZXIDxMguYfdQI+mUPFHo88FYTxq1XA==", - "dependencies": { - "@tokenizer/token": "^0.1.1", - "peek-readable": "^3.1.4" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/supertap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", @@ -5524,22 +5420,6 @@ "node": ">=0.6" } }, - "node_modules/token-types": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-3.1.0.tgz", - "integrity": "sha512-WhoeIW7UTn7NC7L0t/4x3vU/YYSS1oeUxYgiGXQLd82Kaf1qtlxOex3ETY0+o2QuRgAdyursMlUhQBKDCfMUkQ==", - "dependencies": { - "@tokenizer/token": "^0.1.1", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/trim-off-newlines": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", @@ -6639,11 +6519,6 @@ "defer-to-connect": "^1.0.1" } }, - "@tokenizer/token": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz", - "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==" - }, "@types/body-parser": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz", @@ -6776,16 +6651,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.14.tgz", "integrity": "sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==" }, - "@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, "@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -8421,16 +8286,6 @@ "escape-string-regexp": "^1.0.5" } }, - "file-type": { - "version": "16.5.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.2.tgz", - "integrity": "sha512-lnHRZj2USLF3v4C5ZY7/vQQeoTVA1YV9TtD6UUCr9z5Cd0uyutqxPBJxkXzM6lufPNuSfefq/yFmnSPz0C3wNw==", - "requires": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "6.1.3", - "token-types": "^3.0.0" - } - }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -8467,17 +8322,6 @@ "locate-path": "^3.0.0" } }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -9822,11 +9666,6 @@ "through": "~2.3" } }, - "peek-readable": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-3.1.4.tgz", - "integrity": "sha512-DX7ec7frSMtCWw+zMd27f66hcxIz/w9LQTY2RflB4WNHCVPAye1pJiP2t3gvaaOhu7IOhtPbHw8MemMj+F5lrg==" - }, "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", @@ -10073,26 +9912,6 @@ "util-deprecate": "~1.0.1" } }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "readdirp": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", @@ -10620,15 +10439,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, - "strtok3": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.1.3.tgz", - "integrity": "sha512-ssWSKFOeUTurMSucgyUf+a6Z9mVTYrsYiyEK5RLnh8BM6sFrKSljVlnjZXIDxMguYfdQI+mUPFHo88FYTxq1XA==", - "requires": { - "@tokenizer/token": "^0.1.1", - "peek-readable": "^3.1.4" - } - }, "supertap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", @@ -10808,15 +10618,6 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, - "token-types": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-3.1.0.tgz", - "integrity": "sha512-WhoeIW7UTn7NC7L0t/4x3vU/YYSS1oeUxYgiGXQLd82Kaf1qtlxOex3ETY0+o2QuRgAdyursMlUhQBKDCfMUkQ==", - "requires": { - "@tokenizer/token": "^0.1.1", - "ieee754": "^1.2.1" - } - }, "trim-off-newlines": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", diff --git a/backend/package.json b/backend/package.json index 8d867a8a..8c917b27 100644 --- a/backend/package.json +++ b/backend/package.json @@ -35,7 +35,6 @@ "erlpack": "github:discord/erlpack", "escape-string-regexp": "^1.0.5", "express": "^4.17.0", - "file-type": "^16.5.2", "fp-ts": "^2.0.1", "humanize-duration": "^3.15.0", "io-ts": "^2.0.0", @@ -51,7 +50,6 @@ "lodash.pick": "^4.4.0", "moment-timezone": "^0.5.21", "mysql": "^2.16.0", - "node-fetch": "^2.6.1", "parse-color": "^1.0.0", "passport": "^0.4.0", "passport-custom": "^1.0.5", @@ -81,7 +79,6 @@ "@types/lodash.at": "^4.6.3", "@types/moment-timezone": "^0.5.6", "@types/node": "^14.0.14", - "@types/node-fetch": "^2.5.12", "@types/passport": "^1.0.0", "@types/passport-oauth2": "^1.4.8", "@types/passport-strategy": "^0.2.35", diff --git a/backend/src/plugins/Automod/triggers/matchMimeType.ts b/backend/src/plugins/Automod/triggers/matchMimeType.ts index 43d5a6ed..5a599419 100644 --- a/backend/src/plugins/Automod/triggers/matchMimeType.ts +++ b/backend/src/plugins/Automod/triggers/matchMimeType.ts @@ -1,7 +1,5 @@ import { automodTrigger } from "../helpers"; import * as t from "io-ts"; -import fetch from "node-fetch"; -import { fromBuffer } from "file-type"; import { asSingleLine, messageSummary, verboseChannelMention } from "src/utils"; import { Snowflake, TextChannel, Util } from "discord.js"; @@ -32,17 +30,16 @@ export const MatchMimeTypeTrigger = automodTrigger()({ if (!attachments) return null; for (const attachment of attachments) { - const res = await fetch(attachment.url); - const mimeType = await fromBuffer(await res.buffer()); + const { contentType } = attachment; const blacklist = trigger.blacklist_enabled ? (trigger.mime_type_blacklist || []).map(_t => _t.toLowerCase()) : null; - if (mimeType && blacklist?.includes(mimeType.mime)) { + if (contentType && blacklist?.includes(contentType)) { return { extra: { - matchedType: mimeType.mime, + matchedType: contentType, mode: "blacklist", }, }; @@ -52,10 +49,10 @@ export const MatchMimeTypeTrigger = automodTrigger()({ ? (trigger.mime_type_whitelist || []).map(_t => _t.toLowerCase()) : null; - if (whitelist && (!mimeType || !whitelist.includes(mimeType.mime))) { + if (whitelist && (!contentType || !whitelist.includes(contentType))) { return { extra: { - matchedType: mimeType?.mime || "unknown", + matchedType: contentType || "unknown", mode: "whitelist", }, };