diff options
| -rw-r--r-- | index.js | 1 | ||||
| -rw-r--r-- | lib/upload.js | 33 | ||||
| -rw-r--r-- | package.json | 1 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 63 | ||||
| -rw-r--r-- | routes/funding.js | 22 |
5 files changed, 90 insertions, 30 deletions
@@ -68,6 +68,7 @@ require("./lib/sockets"); require("./lib/webhooks"); require("./lib/passport"); require("./lib/register"); +require("./lib/upload"); require("./lib/send"); require("./lib/sync"); diff --git a/lib/upload.js b/lib/upload.js new file mode 100644 index 00000000..452bf5c9 --- /dev/null +++ b/lib/upload.js @@ -0,0 +1,33 @@ +const multer = require("multer"); + +const storage = multer.diskStorage({ + destination: (req, file, cb) => { + cb(null, "uploads"); + }, + filename: async (req, file, cb) => { + const parts = file.originalname.split("."); + const ext = parts.length > 1 ? parts[parts.length - 1] : "bin"; + cb(null, `${req.user.username}-${file.fieldname}.${ext}`); + } +}); + +upload = multer({ + storage, + onFileUploadStart: (file, req, res) => { + console.log("CHECKING SIZE") + const maxSize = 32 * 1000 * 1000; + if (req.files.file.length > maxSize) { + return false; + } + } +}); + +app.post( + "/profile", + auth, + upload.single("squirt"), + ah(async (req, res) => { + let { filename } = req.file; + res.send({ filename }); + }) +); diff --git a/package.json b/package.json index de2ae8dd..c8bc0a00 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "express-async-handler": "^1.1.4", "express-pino-logger": "^6.0.0", "express-session": "^1.16.2", + "file-type": "^18.0.0", "http-proxy-middleware": "^0.20.0", "imap": "^0.8.19", "jsonwebtoken": "^8.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80997de8..0bf0af24 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,7 @@ specifiers: express-async-handler: ^1.1.4 express-pino-logger: ^6.0.0 express-session: ^1.16.2 + file-type: ^18.0.0 http-proxy-middleware: ^0.20.0 imap: ^0.8.19 jsonwebtoken: ^8.5.1 @@ -78,6 +79,7 @@ dependencies: express-async-handler: 1.1.4 express-pino-logger: 6.0.0 express-session: 1.17.2 + file-type: 18.0.0 http-proxy-middleware: 0.20.0 imap: 0.8.19 jsonwebtoken: 8.5.1 @@ -374,6 +376,10 @@ packages: defer-to-connect: 1.1.3 dev: false + /@tokenizer/token/0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: false + /@tootallnate/once/1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} @@ -1032,7 +1038,7 @@ packages: dev: false /brorand/1.1.0: - resolution: {integrity: sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=} + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} dev: false /browserify-aes/1.2.0: @@ -1909,6 +1915,15 @@ packages: resolution: {integrity: sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=} dev: false + /file-type/18.0.0: + resolution: {integrity: sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==} + engines: {node: '>=14.16'} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 7.0.0 + token-types: 5.0.1 + dev: false + /file-uri-to-path/1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false @@ -2214,7 +2229,7 @@ packages: optional: true /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: false @@ -2256,7 +2271,7 @@ packages: dev: false /hmac-drbg/1.0.1: - resolution: {integrity: sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=} + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 @@ -2379,6 +2394,10 @@ packages: safer-buffer: 2.1.2 dev: false + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + /ignore-by-default/1.0.1: resolution: {integrity: sha1-SMptcvbGo68Aqa1K5odr44ieKwk=} dev: false @@ -2425,7 +2444,7 @@ packages: dev: false /inherits/2.0.3: - resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} dev: false /inherits/2.0.4: @@ -2996,7 +3015,7 @@ packages: dev: false /minimalistic-crypto-utils/1.0.1: - resolution: {integrity: sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=} + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} dev: false /minimatch/3.0.4: @@ -3537,6 +3556,11 @@ packages: sha.js: 2.4.11 dev: false + /peek-readable/5.0.0: + resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} + engines: {node: '>=14.16'} + dev: false + /performance-now/2.1.0: resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=} dev: false @@ -3992,6 +4016,13 @@ packages: util-deprecate: 1.0.2 dev: false + /readable-web-to-node-stream/3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.0 + dev: false + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -4466,7 +4497,7 @@ packages: dev: false /string_decoder/0.10.31: - resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=} + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: false /string_decoder/1.1.1: @@ -4505,6 +4536,14 @@ packages: engines: {node: '>=8'} dev: false + /strtok3/7.0.0: + resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.0.0 + dev: false + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4617,6 +4656,14 @@ packages: engines: {node: '>=0.6'} dev: false + /token-types/5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: false + /toposort-class/1.0.1: resolution: {integrity: sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=} dev: false @@ -4793,7 +4840,7 @@ packages: dev: false /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false /utils-merge/1.0.1: @@ -4901,7 +4948,7 @@ packages: dev: false /wif/2.0.6: - resolution: {integrity: sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=} + resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==} dependencies: bs58check: 2.1.2 dev: false diff --git a/routes/funding.js b/routes/funding.js index 0cb6c858..d9cf3097 100644 --- a/routes/funding.js +++ b/routes/funding.js @@ -1,26 +1,4 @@ const mailgun = require("mailgun-js")(config.mailgun); -const multer = require("multer"); - -const storage = multer.diskStorage({ - destination: (req, file, cb) => { - cb(null, "uploads"); - }, - filename: (req, file, cb) => { - const parts = file.originalname.split("."); - const ext = parts.length > 1 ? parts[parts.length - 1] : "bin"; - cb(null, `${req.user.username}-${file.fieldname}.${ext}`); - } -}); - -const upload = multer({ - storage, - onFileUploadStart: (file, req, res) => { - const maxSize = 32 * 1000 * 1000; - if (req.files.file.length > maxSize) { - return false; - } - } -}); app.post( "/id", |
