From 74cf49a5e2ad778372ba403f2366ef82ebb7bec0 Mon Sep 17 00:00:00 2001 From: Dream Hunter Date: Tue, 16 Apr 2024 22:41:46 +0800 Subject: [PATCH] feat: requset_send_mail_access default 1 balance (#143) * feat: requset_send_mail_access default 1 balance * feat: send_mail RATE_LIMITER for ip --- worker/src/send_mail_api.js | 2 +- worker/src/worker.js | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/worker/src/send_mail_api.js b/worker/src/send_mail_api.js index 54141e97..daab884b 100644 --- a/worker/src/send_mail_api.js +++ b/worker/src/send_mail_api.js @@ -9,7 +9,7 @@ api.post('/api/requset_send_mail_access', async (c) => { } try { const { success } = await c.env.DB.prepare( - `INSERT INTO address_sender (address, enabled) VALUES (?, 1)` + `INSERT INTO address_sender (address, balance, enabled) VALUES (?, 1, 1)` ).bind(address).run(); if (!success) { return c.text("Failed to request send mail access", 500) diff --git a/worker/src/worker.js b/worker/src/worker.js index 3a601f9f..80467450 100644 --- a/worker/src/worker.js +++ b/worker/src/worker.js @@ -20,12 +20,14 @@ app.use('/api/*', async (c, next) => { return c.text("Need Password", 401) } } - if (c.req.path.startsWith("/api/new_address")) { + if (c.req.path.startsWith("/api/new_address") || c.req.path.startsWith("/api/send_mail")) { const reqIp = c.req.raw.headers.get("cf-connecting-ip") if (reqIp && c.env.RATE_LIMITER) { - const { success } = await c.env.RATE_LIMITER.limit({ key: reqIp }) + const { success } = await c.env.RATE_LIMITER.limit( + { key: `${c.req.path}|${reqIp}` } + ) if (!success) { - return c.text(`IP=${reqIp} Rate limit exceeded for /api/new_address`, 429) + return c.text(`IP=${reqIp} Rate limit exceeded for ${c.req.path}`, 429) } } await next();