From 5550c2eeeb39ac551b2ec2e02d82b4bd050f14b7 Mon Sep 17 00:00:00 2001 From: tiago <70700766+tiagozip@users.noreply.github.com> Date: Mon, 2 Mar 2026 15:55:21 +0000 Subject: [PATCH] feat: standalone: minor improvements --- server/index.js | 2 +- standalone/public/js/dashboard.js | 9 +++++++-- standalone/src/ratelimit.js | 3 ++- standalone/src/server.js | 9 +++++---- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/server/index.js b/server/index.js index 51437f7..c4d4dfa 100644 --- a/server/index.js +++ b/server/index.js @@ -331,7 +331,7 @@ class Cap extends EventEmitter { }), ); - const isValid = hashes.every((pair) => pair?.[0].startsWith(pair[1])); + const isValid = hashes.every((pair) => pair?.[0]?.startsWith?.(pair[1])); if (!isValid) return { success: false, message: "Invalid solution" }; diff --git a/standalone/public/js/dashboard.js b/standalone/public/js/dashboard.js index 54e96cd..30cbd44 100644 --- a/standalone/public/js/dashboard.js +++ b/standalone/public/js/dashboard.js @@ -8,7 +8,12 @@ const welcomeScreen = document.getElementById("welcomeScreen"); const keyDetail = document.getElementById("keyDetail"); const escapeHtml = (s) => { - return s.replaceAll("<", "<").replaceAll(">", ">"); + return String(s) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); }; const api = async (method, path, body) => { @@ -508,7 +513,7 @@ async function saveConfig() { if (!name || difficulty < 2 || challengeCount < 1 || saltSize < 7) { showModal( - "Validation Error", + "Validation error", ``, ); btn.disabled = false; diff --git a/standalone/src/ratelimit.js b/standalone/src/ratelimit.js index 514734c..cf9fd83 100644 --- a/standalone/src/ratelimit.js +++ b/standalone/src/ratelimit.js @@ -4,7 +4,8 @@ export const ratelimitGenerator = (req, server) => { const ip = req.headers.get(header) || req.headers.get(header.toLowerCase()); if (ip) { - return ip.split(",")[0].trim(); + const parts = ip.split(",").filter((e) => !!e.trim()); + return (parts[parts.length - 1] || parts[0]).trim(); } console.error( diff --git a/standalone/src/server.js b/standalone/src/server.js index ae408f1..271c4dc 100644 --- a/standalone/src/server.js +++ b/standalone/src/server.js @@ -295,6 +295,7 @@ export const server = new Elysia({ instrumentation, blockAutomatedBrowsers, } = body; + const config = { ...keyDefaults, ...existingConfig, @@ -313,10 +314,10 @@ export const server = new Elysia({ }, { body: t.Object({ - name: t.Optional(t.String()), - difficulty: t.Optional(t.Number()), - challengeCount: t.Optional(t.Number()), - saltSize: t.Optional(t.Number()), + name: t.Optional(t.String({ maxLength: 600 })), + difficulty: t.Optional(t.Number({ minimum: 1, maximum: 8 })), + challengeCount: t.Optional(t.Number({ minimum: 1, maximum: 500 })), + saltSize: t.Optional(t.Number({ minimum: 7, maximum: 1_001 })), instrumentation: t.Optional(t.Boolean()), blockAutomatedBrowsers: t.Optional(t.Boolean()), }),