From dd1a6227dc0098b960ce060ca1d2372e61942c9b Mon Sep 17 00:00:00 2001 From: KittenTM Date: Thu, 9 Apr 2026 05:55:01 +0200 Subject: [PATCH] fix: handle 404s & catch errors more efficiently --- judd/middleware/validate-boss-digest.js | 29 ++++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/judd/middleware/validate-boss-digest.js b/judd/middleware/validate-boss-digest.js index 5eeb65b..5732af2 100644 --- a/judd/middleware/validate-boss-digest.js +++ b/judd/middleware/validate-boss-digest.js @@ -1,14 +1,31 @@ const crypto = require('crypto'); function validateBOSSDigestMiddleware(request, response, next) { - const calculatedHash = crypto.createHash('sha1').update(request.rawBody).digest('hex'); - const expectedHash = request.headers['x-boss-digest']; + // prevents viewing it in a browser to fucking up the process lmfao + if (request.method === 'GET') { + return response.status(404).send('Not Found'); + } - if (calculatedHash !== expectedHash) { - return next('Provided BOSS digest does not match the calculated hash'); - } + try { + // try to catch undefined, previously was making everything die + if (!request.rawBody) { + throw new Error('rawBody is undefined'); + } - next(); + const calculatedHash = crypto.createHash('sha1').update(request.rawBody).digest('hex'); + const expectedHash = request.headers['x-boss-digest']; + + //catch all other errors + if (calculatedHash !== expectedHash) { + console.warn(`[Digest Mismatch] Expected: ${expectedHash}, Calculated: ${calculatedHash}`); + return response.status(403).send('Provided BOSS digest does not match the calculated hash'); + } + + next(); + } catch (error) { + console.error('[Digest Middleware Error]:', error.message); + return response.status(500).send('Internal Server Error'); + } } module.exports = validateBOSSDigestMiddleware; \ No newline at end of file