diff --git a/src/lib/config/Config.ts b/src/lib/config/Config.ts index 5e6b5959..ac9bc6d0 100644 --- a/src/lib/config/Config.ts +++ b/src/lib/config/Config.ts @@ -136,6 +136,7 @@ export interface ConfigOAuth { export interface ConfigChunks { max_size: number; chunks_size: number; + enabled: boolean; } export interface ConfigMfa { diff --git a/src/lib/config/readConfig.ts b/src/lib/config/readConfig.ts index 9656c2cc..7a81d10b 100644 --- a/src/lib/config/readConfig.ts +++ b/src/lib/config/readConfig.ts @@ -158,6 +158,7 @@ export default function readConfig() { map('CHUNKS_MAX_SIZE', 'human-to-byte', 'chunks.max_size'), map('CHUNKS_CHUNKS_SIZE', 'human-to-byte', 'chunks.chunks_size'), + map('CHUNKS_ENABLED', 'boolean', 'chunks.enabled'), map('MFA_TOTP_ISSUER', 'string', 'mfa.totp_issuer'), map('MFA_TOTP_ENABLED', 'boolean', 'mfa.totp_enabled'), diff --git a/src/lib/config/validateConfig.ts b/src/lib/config/validateConfig.ts index 89581c3e..272d47e7 100644 --- a/src/lib/config/validateConfig.ts +++ b/src/lib/config/validateConfig.ts @@ -201,10 +201,12 @@ const validator = s.object({ .object({ max_size: s.number.default(humanToBytes('90MB')), chunks_size: s.number.default(humanToBytes('20MB')), + enabled: s.boolean.default(true), }) .default({ max_size: humanToBytes('90MB'), chunks_size: humanToBytes('20MB'), + enabled: true, }), mfa: s .object({ diff --git a/src/pages/api/upload.ts b/src/pages/api/upload.ts index 28daa0e3..b3124c78 100644 --- a/src/pages/api/upload.ts +++ b/src/pages/api/upload.ts @@ -79,7 +79,7 @@ async function handler(req: NextApiReq, res: NextApiRes) { if (fileMaxViews < 0) return res.badRequest('invalid max views (max views < 0)'); // handle partial uploads before ratelimits - if (req.headers['content-range']) { + if (req.headers['content-range'] && zconfig.chunks.enabled) { // parses content-range header (bytes start-end/total) const [start, end, total] = req.headers['content-range'] .replace('bytes ', '') diff --git a/src/worker/upload.ts b/src/worker/upload.ts index e10a49c3..d6b26b19 100644 --- a/src/worker/upload.ts +++ b/src/worker/upload.ts @@ -44,6 +44,11 @@ if (!file.lastchunk) { process.exit(1); } +if (!config.chunks.enabled) { + logger.error('chunks are not enabled, worker should not have been started'); + process.exit(1); +} + start(); async function start() {