From 972ea530e8139a0357b6b45ccdf9742d19ba6a26 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 8 Mar 2024 04:31:34 +0000 Subject: validate tips --- lib/app.js | 4 ++-- lib/db.js | 7 +++++++ lib/invoices.js | 1 + lib/migrate.js | 2 +- lib/payments.js | 1 + 5 files changed, 12 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/app.js b/lib/app.js index d289de05..337b2e96 100644 --- a/lib/app.js +++ b/lib/app.js @@ -20,8 +20,8 @@ const app = fastify({ }); await app.register(import("@fastify/rate-limit"), { - max: 500, - timeWindow: 5000, + max: 50, + timeWindow: 2000, keyGenerator: (req) => req.headers["cf-connecting-ip"], }); diff --git a/lib/db.js b/lib/db.js index 58472269..4f113a1d 100644 --- a/lib/db.js +++ b/lib/db.js @@ -48,6 +48,13 @@ export let archive = createClient({ }, }); +export let arc2 = createClient({ + url: config.arc2, + socket: { + reconnectStrategy: (retries) => Math.min(retries * 50, 5000), + }, +}); + async function dbReconnect() { try { await db.connect(); diff --git a/lib/invoices.js b/lib/invoices.js index 89c4f3d6..633072f3 100644 --- a/lib/invoices.js +++ b/lib/invoices.js @@ -40,6 +40,7 @@ export let generate = async ({ invoice, user, sender, }) => { if (!rate) rate = store.rates[currency]; if (fiat) amount = Math.round((SATS * fiat) / rate); if (amount < 0) fail("invalid amount"); + if (tip< 0) fail("invalid tip"); if (memo && memo.length > 200) fail("memo too long"); let id = v4(); diff --git a/lib/migrate.js b/lib/migrate.js index 106a6b5f..15ce4a16 100644 --- a/lib/migrate.js +++ b/lib/migrate.js @@ -1,6 +1,6 @@ import { err, warn, l, line } from "$lib/logging"; import { types } from "$lib/payments"; -import { archive, db, g, ga, s } from "$lib/db"; +import { archive, arc2, db, g, ga, s } from "$lib/db"; import { wait } from "$lib/utils"; let queued = {}; diff --git a/lib/payments.js b/lib/payments.js index 76286938..03085280 100644 --- a/lib/payments.js +++ b/lib/payments.js @@ -73,6 +73,7 @@ export let debit = async ({ } let tip = parseInt(invoice?.tip) || null; + if (tip < 0) fail("Invalid tip"); if (!amount || amount < 0) fail("Amount must be greater than zero"); -- cgit v1.2.3