From 1bdd6c11f65abe77db51a89e5ecd5870f56f5a24 Mon Sep 17 00:00:00 2001 From: stjet <49297268+stjet@users.noreply.github.com> Date: Wed, 22 Jan 2025 05:48:11 +0000 Subject: [PATCH] various safeguards, minor fixes/improvements --- src/lib/db.ts | 5 +++-- src/routes/+page.svelte | 26 ++++++++++++++++--------- src/routes/api/start_payment/+server.ts | 5 ++++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/lib/db.ts b/src/lib/db.ts index b05e0fa..e188b07 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -49,16 +49,17 @@ export async function find_payment(db: MongoClient, domain: string, send_to: str } //todo: technically possible for there to be race condition with payment_already_pending -export async function create_payment(db: MongoClient, domain: string, send_to: string, receive_seed: string) { +export async function create_payment(db: MongoClient, domain: string, send_to: string, receive_seed: string): bool { const price = get_price(domain.length); const payments = db.db("bns_backend").collection("payments"); - await payments.insertOne({ + const result = await payments.insertOne({ domain, receive_seed, //seed to receive payment from send_to, //Domain Address (banano address) to send domain to after payment received price, timestamp: Date.now(), }); + return result.acknowledged; } // diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 8d57e5d..bc06f51 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -7,32 +7,40 @@ let error: String = $state(""); let price: String = $state(""); + let address_register_safeguard: bool = true; + function domain_keydown(event: KeyboardEvent) { let key = event.key.toLowerCase(); if (!ALLOWED.includes(key)) { event.preventDefault(); - } else { - price = ""; - if (domain_content.length > 3) { - price = `Price: ${get_price(domain_content.length)} BAN`; - } } } - function domain_keyup() { + function domain_keyup(event: KeyboardEvent) { + if (domain_content.length > 3) { + price = `Price: ${get_price(domain_content.length)} BAN`; + } else { + price = ""; + } domain_content = domain_content.toLowerCase(); } async function domain_next() { + error = ""; domain_content = domain_content.toLowerCase(); if (domain_content.length < 4) { error = "Domain name must be more than 3 characters"; } else { + //safeguard to make people don't accidentally paste in their banano address and register that + if (domain_content.startsWith("ban_") && domain_content.length === 32 && address_register_safeguard) { + alert("It seems like you entered a Banano address instead of the .ban domain name you want to register. Are you sure you want to do this? Try again if so."); + address_register_safeguard = false; + return; + } const resp = await (await fetch("/api/domain_issued?domain=" + domain_content)).json(); if (resp.issued) { - error = "Domain name already issued, choose another one"; + error = `Domain name already issued, choose another one`; } else { - error = ""; goto("/register?domain=" + domain_content); } } @@ -97,7 +105,7 @@ .ban {price} - {error} + {@html error}

Supported by:

diff --git a/src/routes/api/start_payment/+server.ts b/src/routes/api/start_payment/+server.ts index 2d422e5..80b3e37 100644 --- a/src/routes/api/start_payment/+server.ts +++ b/src/routes/api/start_payment/+server.ts @@ -23,7 +23,10 @@ export const POST: RequestHandler = async ({ request }) => { return error(500, "Payment for domain already pending, wait 5 minutes or so"); } const payment_wallet = Wallet.gen_random_wallet(); - await create_payment(db, domain, get_address_from_public_key(send_to_pub_key), payment_wallet.seed); + const success = await create_payment(db, domain, get_address_from_public_key(send_to_pub_key), payment_wallet.seed); + if (!success) { + return error(500, "Server error, try again"); + } return json({ payment_address: payment_wallet.address, });