3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-22 09:15:03 +00:00

refactor(triggers/mime-type): use attachment data

This commit is contained in:
Hiroyuki 2021-08-11 00:18:45 -04:00
parent abb493ab8f
commit 45f9f30aeb
No known key found for this signature in database
GPG key ID: C15AC26538975A24
3 changed files with 5 additions and 210 deletions

View file

@ -20,7 +20,6 @@
"erlpack": "github:discord/erlpack", "erlpack": "github:discord/erlpack",
"escape-string-regexp": "^1.0.5", "escape-string-regexp": "^1.0.5",
"express": "^4.17.0", "express": "^4.17.0",
"file-type": "^16.5.2",
"fp-ts": "^2.0.1", "fp-ts": "^2.0.1",
"humanize-duration": "^3.15.0", "humanize-duration": "^3.15.0",
"io-ts": "^2.0.0", "io-ts": "^2.0.0",
@ -36,7 +35,6 @@
"lodash.pick": "^4.4.0", "lodash.pick": "^4.4.0",
"moment-timezone": "^0.5.21", "moment-timezone": "^0.5.21",
"mysql": "^2.16.0", "mysql": "^2.16.0",
"node-fetch": "^2.6.1",
"parse-color": "^1.0.0", "parse-color": "^1.0.0",
"passport": "^0.4.0", "passport": "^0.4.0",
"passport-custom": "^1.0.5", "passport-custom": "^1.0.5",
@ -66,7 +64,6 @@
"@types/lodash.at": "^4.6.3", "@types/lodash.at": "^4.6.3",
"@types/moment-timezone": "^0.5.6", "@types/moment-timezone": "^0.5.6",
"@types/node": "^14.0.14", "@types/node": "^14.0.14",
"@types/node-fetch": "^2.5.12",
"@types/passport": "^1.0.0", "@types/passport": "^1.0.0",
"@types/passport-oauth2": "^1.4.8", "@types/passport-oauth2": "^1.4.8",
"@types/passport-strategy": "^0.2.35", "@types/passport-strategy": "^0.2.35",
@ -269,11 +266,6 @@
"node": ">=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": { "node_modules/@types/body-parser": {
"version": "1.17.1", "version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz", "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", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.14.tgz",
"integrity": "sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==" "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": { "node_modules/@types/normalize-package-data": {
"version": "2.4.0", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "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" "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": { "node_modules/file-uri-to-path": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
@ -2557,20 +2523,6 @@
"node": ">=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": { "node_modules/forwarded": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
@ -4270,18 +4222,6 @@
"through": "~2.3" "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": { "node_modules/picomatch": {
"version": "2.2.2", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
@ -4608,34 +4548,6 @@
"util-deprecate": "~1.0.1" "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": { "node_modules/readdirp": {
"version": "3.4.0", "version": "3.4.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
@ -5278,22 +5190,6 @@
"node": ">=0.10.0" "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": { "node_modules/supertap": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz",
@ -5524,22 +5420,6 @@
"node": ">=0.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": { "node_modules/trim-off-newlines": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", "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" "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": { "@types/body-parser": {
"version": "1.17.1", "version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz", "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", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.14.tgz",
"integrity": "sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==" "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": { "@types/normalize-package-data": {
"version": "2.4.0", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "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" "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": { "file-uri-to-path": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "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" "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": { "forwarded": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
@ -9822,11 +9666,6 @@
"through": "~2.3" "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": { "picomatch": {
"version": "2.2.2", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
@ -10073,26 +9912,6 @@
"util-deprecate": "~1.0.1" "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": { "readdirp": {
"version": "3.4.0", "version": "3.4.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", "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", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" "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": { "supertap": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", "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", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" "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": { "trim-off-newlines": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",

View file

@ -35,7 +35,6 @@
"erlpack": "github:discord/erlpack", "erlpack": "github:discord/erlpack",
"escape-string-regexp": "^1.0.5", "escape-string-regexp": "^1.0.5",
"express": "^4.17.0", "express": "^4.17.0",
"file-type": "^16.5.2",
"fp-ts": "^2.0.1", "fp-ts": "^2.0.1",
"humanize-duration": "^3.15.0", "humanize-duration": "^3.15.0",
"io-ts": "^2.0.0", "io-ts": "^2.0.0",
@ -51,7 +50,6 @@
"lodash.pick": "^4.4.0", "lodash.pick": "^4.4.0",
"moment-timezone": "^0.5.21", "moment-timezone": "^0.5.21",
"mysql": "^2.16.0", "mysql": "^2.16.0",
"node-fetch": "^2.6.1",
"parse-color": "^1.0.0", "parse-color": "^1.0.0",
"passport": "^0.4.0", "passport": "^0.4.0",
"passport-custom": "^1.0.5", "passport-custom": "^1.0.5",
@ -81,7 +79,6 @@
"@types/lodash.at": "^4.6.3", "@types/lodash.at": "^4.6.3",
"@types/moment-timezone": "^0.5.6", "@types/moment-timezone": "^0.5.6",
"@types/node": "^14.0.14", "@types/node": "^14.0.14",
"@types/node-fetch": "^2.5.12",
"@types/passport": "^1.0.0", "@types/passport": "^1.0.0",
"@types/passport-oauth2": "^1.4.8", "@types/passport-oauth2": "^1.4.8",
"@types/passport-strategy": "^0.2.35", "@types/passport-strategy": "^0.2.35",

View file

@ -1,7 +1,5 @@
import { automodTrigger } from "../helpers"; import { automodTrigger } from "../helpers";
import * as t from "io-ts"; import * as t from "io-ts";
import fetch from "node-fetch";
import { fromBuffer } from "file-type";
import { asSingleLine, messageSummary, verboseChannelMention } from "src/utils"; import { asSingleLine, messageSummary, verboseChannelMention } from "src/utils";
import { Snowflake, TextChannel, Util } from "discord.js"; import { Snowflake, TextChannel, Util } from "discord.js";
@ -32,17 +30,16 @@ export const MatchMimeTypeTrigger = automodTrigger<MatchResultType>()({
if (!attachments) return null; if (!attachments) return null;
for (const attachment of attachments) { for (const attachment of attachments) {
const res = await fetch(attachment.url); const { contentType } = attachment;
const mimeType = await fromBuffer(await res.buffer());
const blacklist = trigger.blacklist_enabled const blacklist = trigger.blacklist_enabled
? (trigger.mime_type_blacklist || []).map(_t => _t.toLowerCase()) ? (trigger.mime_type_blacklist || []).map(_t => _t.toLowerCase())
: null; : null;
if (mimeType && blacklist?.includes(mimeType.mime)) { if (contentType && blacklist?.includes(contentType)) {
return { return {
extra: { extra: {
matchedType: mimeType.mime, matchedType: contentType,
mode: "blacklist", mode: "blacklist",
}, },
}; };
@ -52,10 +49,10 @@ export const MatchMimeTypeTrigger = automodTrigger<MatchResultType>()({
? (trigger.mime_type_whitelist || []).map(_t => _t.toLowerCase()) ? (trigger.mime_type_whitelist || []).map(_t => _t.toLowerCase())
: null; : null;
if (whitelist && (!mimeType || !whitelist.includes(mimeType.mime))) { if (whitelist && (!contentType || !whitelist.includes(contentType))) {
return { return {
extra: { extra: {
matchedType: mimeType?.mime || "unknown", matchedType: contentType || "unknown",
mode: "whitelist", mode: "whitelist",
}, },
}; };