From a3071cd7f9d808fb7f4639c8116a17f914fd4dac Mon Sep 17 00:00:00 2001 From: badbl0cks <4161747+badbl0cks@users.noreply.github.com> Date: Fri, 10 Jul 2026 00:21:45 -0700 Subject: [PATCH] dev work --- Dockerfile | 6 +- astro.config.mjs | 21 +++---- bun.lockb | Bin 254191 -> 204345 bytes compose.yaml | 34 ++++++++++++ db/config.ts | 20 ------- deploy/docker-compose.yml | 51 ----------------- docker-compose.yml | 9 --- package.json | 33 +++++------ public/.well-known/mta-sts.txt | 6 ++ public/crt.svg | 6 ++ public/goat.js | 8 +-- public/hi-res.svg | 10 ++++ src/actions/contact.ts | 98 +++++++++++++++++++++++++-------- src/lib/CapAdapter.ts | 2 +- src/lib/HttpFetchClient.ts | 14 ----- src/lib/Otp.ts | 56 +++++++++++++++---- src/middleware.ts | 55 ++++++++++++++---- src/pages/ai.astro | 8 +++ src/pages/cap/redeem.ts | 17 +++++- src/pages/contact.astro | 33 +++++------ src/pages/index.astro | 2 +- 21 files changed, 290 insertions(+), 199 deletions(-) create mode 100644 compose.yaml delete mode 100644 db/config.ts delete mode 100644 deploy/docker-compose.yml delete mode 100644 docker-compose.yml create mode 100644 public/.well-known/mta-sts.txt create mode 100644 public/crt.svg create mode 100644 public/hi-res.svg create mode 100644 src/pages/ai.astro diff --git a/Dockerfile b/Dockerfile index c3a7015..d50b2d7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM oven/bun:1 AS base +FROM oven/bun:1@sha256:50317d83cd5a5ae1d8b35b3379c69f57ce1a0dbf4def91f0965653d767851834 AS base WORKDIR /usr/src/app # install dependencies into temp directory @@ -24,10 +24,10 @@ ENV NODE_ENV=production #RUN bun test RUN bun run build-remote -# copy production dependencies and source code into final image +# copy production dependencies and source code into final image # and run with node to avoid some random issues with bun # (e.g. bun's fetch doesn't support dispatchers) -FROM node:20-slim AS release +FROM node:24-slim@sha256:44a253901c13323953b4a0e1df5afe08bf8ac4ac086edd500422b54cb6e6eeb0 AS release WORKDIR /usr/src/app COPY --from=install /temp/prod/node_modules node_modules COPY --from=prerelease /usr/src/app/dist ./dist diff --git a/astro.config.mjs b/astro.config.mjs index 427afd4..6817098 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,18 +1,15 @@ -import htmx from "astro-htmx"; // @ts-check -import { defineConfig, envField } from "astro/config"; +import { defineConfig, sessionDrivers, envField } from "astro/config"; import alpinejs from "@astrojs/alpinejs"; import sitemap from "@astrojs/sitemap"; -import bun from "@nurodev/astro-bun"; +//import bun from "@nurodev/astro-bun"; //disable for now import node from "@astrojs/node"; -import db from "@astrojs/db"; // https://astro.build/config export default defineConfig({ site: "https://badblocks.dev", trailingSlash: "never", - // bun adapter is not official, so keep - // the node adapter available just in case + // bun adapter is not official, also a little wonky, so use node adapter for now adapter: node({ mode: "standalone", }), @@ -24,12 +21,12 @@ export default defineConfig({ prefetchAll: true, }, security: { - checkOrigin: false, + allowedDomains: [{ protocol: "https", hostname: "badblocks.dev" }], }, session: { - driver: "lru-cache", - ttl: 3600, - maxEntries: 1000, + driver: sessionDrivers.lruCache({ + ttl: 3600, + }), }, server: { host: true, @@ -59,10 +56,8 @@ export default defineConfig({ }), }, }, - integrations: [alpinejs(), sitemap(), htmx(), db()], + integrations: [alpinejs(), sitemap()], experimental: { - preserveScriptOrder: true, chromeDevtoolsWorkspace: true, - failOnPrerenderConflict: true, }, }); diff --git a/bun.lockb b/bun.lockb index e82ed005fead897f91ac5a1c750ab6705549925d..3862f4f8cbb3eeaf8c47f8a59fbb46308e4ecee8 100755 GIT binary patch delta 69785 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 z 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 F{~xnVzNG*F diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..eeab30a --- /dev/null +++ b/compose.yaml @@ -0,0 +1,34 @@ +services: + badblocks-personal-site: + image: badblocks-personal-site:latest + restart: always + container_name: badblocks-personal-site + volumes: + - ./db:/db + environment: + ANDROID_SMS_GATEWAY_IP: ${ANDROID_SMS_GATEWAY_IP:-192.168.0.1} + ANDROID_SMS_GATEWAY_URL: ${ANDROID_SMS_GATEWAY_URL:-http://192.168.0.1:8080} + ANDROID_SMS_GATEWAY_LOGIN: ${ANDROID_SMS_GATEWAY_LOGIN:-sms} + ANDROID_SMS_GATEWAY_PASSWORD: ${ANDROID_SMS_GATEWAY_PASSWORD:-super-secret-password} + ANDROID_SMS_GATEWAY_RECIPIENT_PHONE: ${ANDROID_SMS_GATEWAY_RECIPIENT_PHONE:-555-555-1234} + OTP_SUPER_SECRET_SALT: ${OTP_SUPER_SECRET_SALT:-super-secret-salt} + healthcheck: + test: + [ + "CMD", + "node", + "-e", + "fetch('http://localhost:4321/health').then(r=>process.exit(r.ok?0:1))", + ] + interval: 30s + timeout: 15s + retries: 3 + start_period: 120s + cap_drop: [ALL] + security_opt: [no-new-privileges:true] + read_only: true + tmpfs: [/tmp] +networks: + default: + name: proxynet + external: true diff --git a/db/config.ts b/db/config.ts deleted file mode 100644 index dc78187..0000000 --- a/db/config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineDb, defineTable, column } from "astro:db"; - -const Cap_Challenges = defineTable({ - columns: { - token: column.text({ primaryKey: true }), - data: column.json(), - expires: column.number(), - }, -}); - -const Cap_Tokens = defineTable({ - columns: { - key: column.text({ primaryKey: true }), - expires: column.number(), - }, -}); - -export default defineDb({ - tables: { Cap_Challenges, Cap_Tokens }, -}); diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml deleted file mode 100644 index a4cbf23..0000000 --- a/deploy/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ -services: - badblocks-personal-site: - image: ${IMAGE_NAME}:latest - restart: always - container_name: badblocks-personal-site - volumes: - - ./db:/db - env_file: - - .env - # healthcheck: - # test: - # [ - # "CMD", - # "curl", - # "-f", - # "-s", - # "--max-time", - # "5", - # "http://localhost:4321/health", - # ] - # interval: 30s - # timeout: 15s - # retries: 3 - # start_period: 120s - wireguard: - image: qmcgaw/gluetun - cap_add: - - NET_ADMIN - container_name: wireguard - hostname: wireguard - environment: - - VPN_SERVICE_PROVIDER=custom - - VPN_TYPE=wireguard - - HTTPPROXY=on - expose: - - "8888" - env_file: - - .env - devices: - - /dev/net/tun:/dev/net/tun - restart: unless-stopped - # healthcheck: - # test: ["CMD", "ping", "-c", "1", "-W", "3", "$$ANDROID_SMS_GATEWAY_IP"] - # interval: 30s - # timeout: 15s - # retries: 3 - # start_period: 60s -networks: - default: - name: proxynet - external: true diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index cffe336..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -services: - personal-site: - build: . - ports: - - 4321:4321 - restart: no - logging: - options: - max-size: 1g diff --git a/package.json b/package.json index 89a5b01..0f7e869 100644 --- a/package.json +++ b/package.json @@ -14,34 +14,29 @@ "astro": "astro" }, "dependencies": { - "@astrojs/alpinejs": "^0.4.9", - "@astrojs/check": "^0.9.6", - "@astrojs/db": "^0.18.3", - "@astrojs/node": "^9.5.4", - "@astrojs/partytown": "^2.1.4", - "@astrojs/sitemap": "^3.7.0", - "@astrojs/ts-plugin": "^1.10.6", + "@astrojs/alpinejs": "^1.0.0", + "@astrojs/check": "^0.9.9", + "@astrojs/db": "^0.21.3", + "@astrojs/node": "^11.0.2", + "@astrojs/sitemap": "^3.7.3", + "@astrojs/ts-plugin": "^1.10.10", "@cap.js/server": "^4.0.5", - "@cap.js/widget": "^0.1.35", - "@nurodev/astro-bun": "^2.1.2", + "@cap.js/widget": "^0.1.56", "@types/alpinejs": "^3.13.11", - "alpinejs": "^3.15.8", + "alpinejs": "^3.15.12", "android-sms-gateway": "^3.0.0", - "astro": "^5.18.0", - "astro-htmx": "^1.0.6", - "htmx.org": "^2.0.8", + "astro": "^7.0.7", "iconify-icon": "^3.0.2", "ofetch": "^1.5.1", - "otplib": "^12.0.1", - "typescript": "^5.9.3", - "undici": "^7.22.0", - "validator": "^13.15.26" + "otplib": "12.0.1", + "typescript": "^6.0.3", + "validator": "^13.15.35" }, "devDependencies": { - "@types/bun": "^1.3.9", + "@types/bun": "^1.3.14", "@types/validator": "^13.15.10", "doiuse": "^6.0.6", - "prettier": "^3.8.1", + "prettier": "^3.9.5", "prettier-plugin-astro": "^0.14.1" } } diff --git a/public/.well-known/mta-sts.txt b/public/.well-known/mta-sts.txt new file mode 100644 index 0000000..bcf6c8e --- /dev/null +++ b/public/.well-known/mta-sts.txt @@ -0,0 +1,6 @@ +version: STSv1 +mode: enforce +mx: mx.zoho.com +mx: mx2.zoho.com +mx: mx3.zoho.com +max_age: 604800 diff --git a/public/crt.svg b/public/crt.svg new file mode 100644 index 0000000..40b88e8 --- /dev/null +++ b/public/crt.svg @@ -0,0 +1,6 @@ + + CRT Icon + An icon of a CRT monitor, representing retro technology. + + + diff --git a/public/goat.js b/public/goat.js index 8e06d8a..f35d27e 100644 --- a/public/goat.js +++ b/public/goat.js @@ -164,7 +164,7 @@ if (data.p === null) // null from user callback. return; - data.rnd = Math.random().toString(36).substr(2, 5); // Browsers don't always listen to Cache-Control. + data.rnd = Math.random().toString(36).slice(2, 5); // Browsers don't always listen to Cache-Control. var endpoint = get_endpoint(); if (!endpoint) return warn("no endpoint found"); @@ -202,10 +202,10 @@ // Get a query parameter. window.goatcounter.get_query = function (name) { - var s = location.search.substr(1).split("&"); + var s = location.search.slice(1).split("&"); for (var i = 0; i < s.length; i++) if (s[i].toLowerCase().indexOf(name.toLowerCase() + "=") === 0) - return s[i].substr(name.length + 1); + return s[i].slice(name.length + 1); }; // Track click events. @@ -308,7 +308,7 @@ ) goatcounter.count(); else { - var f = function (e) { + var f = function () { if (document.visibilityState !== "visible") return; document.removeEventListener("visibilitychange", f); goatcounter.count(); diff --git a/public/hi-res.svg b/public/hi-res.svg new file mode 100644 index 0000000..32862e0 --- /dev/null +++ b/public/hi-res.svg @@ -0,0 +1,10 @@ + + Hi-Res Icon + An icon of a modern monitor, indicating high resolution. + + + + + + + diff --git a/src/actions/contact.ts b/src/actions/contact.ts index 6822f4b..5e43f1a 100644 --- a/src/actions/contact.ts +++ b/src/actions/contact.ts @@ -3,13 +3,15 @@ import { z } from "astro/zod"; import type { ActionAPIContext } from "astro:actions"; import validator from "validator"; import SmsClient from "@lib/SmsGatewayClient.ts"; -import Otp, { verifyOtp } from "@lib/Otp.ts"; +import Otp, { verifyOtp, normalizePhone } from "@lib/Otp.ts"; import { createCap } from "@lib/CapAdapter"; import { OTP_SUPER_SECRET_SALT, ANDROID_SMS_GATEWAY_RECIPIENT_PHONE, } from "astro:env/server"; +const MAX_OTP_VERIFY_ATTEMPTS = 5; + const isValidMobilePhone: [(data: string) => any, { message: string }] = [ (value: string) => validator.isMobilePhone(value, ["en-US", "en-CA"]) && @@ -39,7 +41,11 @@ const captcha_input = z.string().trim().nonempty(); const sendOtpAction = z.object({ action: z.literal("send_otp"), - name: z.string().trim().min(5).max(32).transform(stripDisallowedCharacters), + name: z + .string() + .trim() + .transform(stripDisallowedCharacters) + .pipe(z.string().min(5).max(32)), phone: z .string() .trim() @@ -47,11 +53,16 @@ const sendOtpAction = z.object({ msg: z .string() .trim() - .min(25) - .max(512) .transform(stripDisallowedCharacters) - .refine(...noYelling) - .refine(...noExcessiveRepetitions), + .pipe( + z + .string() + .min(25) + .max(512) + + .refine(...noYelling) + .refine(...noExcessiveRepetitions), + ), captcha: captcha_input, }); @@ -63,6 +74,7 @@ const sendMsgAction = z.object({ const resetAction = z.object({ action: z.literal("reset"), + captcha: captcha_input, }); const formAction = z.discriminatedUnion("action", [ @@ -73,7 +85,10 @@ const formAction = z.discriminatedUnion("action", [ const submitActionDefinition = { input: formAction, - handler: async (input: any, context: ActionAPIContext) => { + handler: async ( + input: z.infer, + context: ActionAPIContext, + ) => { if (!OTP_SUPER_SECRET_SALT || !ANDROID_SMS_GATEWAY_RECIPIENT_PHONE) { throw new ActionError({ code: "INTERNAL_SERVER_ERROR", @@ -83,12 +98,10 @@ const submitActionDefinition = { const cap = createCap(context.session ?? null); - if ( - !( - /^[a-fA-F0-9]{16}:[a-fA-F0-9]{30}$/.test(input.captcha) && - (await cap.validateToken(input.captcha)) - ) - ) { + if (!( + /^[a-fA-F0-9]{16}:[a-fA-F0-9]{30}$/.test(input.captcha) && + (await cap.validateToken(input.captcha)) + )) { throw new ActionError({ code: "BAD_REQUEST", message: "Invalid Captcha Token.", @@ -96,7 +109,19 @@ const submitActionDefinition = { } if (input.action === "send_otp") { - const { name, phone, msg } = input; + const { name, msg } = input; + const phone = normalizePhone(input.phone); + + if ( + Otp.isRateLimitedGlobally() || + Otp.isRateLimitedForOtp(phone) || + Otp.isRateLimitedForMsgs(phone) + ) { + throw new ActionError({ + code: "TOO_MANY_REQUESTS", + message: "Too many requests. Try again later.", + }); + } const otp = Otp.generateOtp(phone, OTP_SUPER_SECRET_SALT); const stepSeconds = Otp.getOtpStep(); @@ -107,6 +132,9 @@ const submitActionDefinition = { remainingSeconds != 0 ? " " + remainingSeconds + " seconds." : "." }`; + Otp.recordOtpRequest(phone); + Otp.recordGlobalOtpSend(); + const result = await new SmsClient().sendSMS(phone, message); if (result.success) { @@ -118,38 +146,59 @@ const submitActionDefinition = { nextAction: "send_msg", }; } else { + console.error("OTP SMS send failed:", result.message); throw new ActionError({ code: "SERVICE_UNAVAILABLE", - message: "Verification code failed to send: " + result.message, + message: "Verification code failed to send. Try again later.", }); } } else if (input.action === "send_msg") { const { otp } = input; const name = await context.session?.get("name"); - const phone = await context.session?.get("phone"); + const raw_phone = await context.session?.get("phone"); const msg = await context.session?.get("msg"); - if (!name || !otp || !msg || !phone) { + if (!name || !otp || !msg || !raw_phone) { throw new ActionError({ code: "BAD_REQUEST", message: "Missing required fields.", }); } + const phone = normalizePhone(raw_phone); + + if (Otp.isRateLimitedForOtp(phone) || Otp.isRateLimitedForMsgs(phone)) { + throw new ActionError({ + code: "TOO_MANY_REQUESTS", + message: "Too many requests. Try again later.", + }); + } + const isVerified = verifyOtp(phone, OTP_SUPER_SECRET_SALT, otp); if (!isVerified) { + const attempts = ((await context.session?.get("otpAttempts")) ?? 0) + 1; + if (attempts >= MAX_OTP_VERIFY_ATTEMPTS) { + context.session?.delete("phone"); + context.session?.delete("name"); + context.session?.delete("msg"); + context.session?.delete("otpAttempts"); + return { + nextAction: "send_otp", + error: "Too many incorrect codes. Please start over.", + field: "otp", + }; + } + context.session?.set("otpAttempts", attempts); return { nextAction: "send_msg", error: "Invalid or expired verification code.", field: "otp", }; - // throw new ActionError({ - // code: "BAD_REQUEST", - // message: "Invalid or expired verification code.", - // }); } - const message = `Web message from ${name} ( ${phone} ):\n\n${msg}`; + const message = `Web message from ${name} (${phone}):\n\n${msg}`; + + Otp.recordMsgSubmission(phone); const smsClient = new SmsClient(); const result = await smsClient.sendSMS( @@ -158,17 +207,17 @@ const submitActionDefinition = { ); if (result.success) { - Otp.recordMsgSubmission(phone); - context.session?.delete("phone"); context.session?.delete("name"); context.session?.delete("msg"); + context.session?.delete("otpAttempts"); return { nextAction: "complete", }; } + console.error("Contact SMS send failed:", result.message); throw new ActionError({ code: "SERVICE_UNAVAILABLE", message: "Message failed to send.", @@ -177,6 +226,7 @@ const submitActionDefinition = { context.session?.delete("phone"); context.session?.delete("name"); context.session?.delete("msg"); + context.session?.delete("otpAttempts"); return { nextAction: "send_otp", diff --git a/src/lib/CapAdapter.ts b/src/lib/CapAdapter.ts index fa8a582..07959af 100644 --- a/src/lib/CapAdapter.ts +++ b/src/lib/CapAdapter.ts @@ -1,7 +1,7 @@ import Cap, { type ChallengeData } from "@cap.js/server"; import type { AstroSession } from "astro"; -export function createCap(session: AstroSession | null) { +export function createCap(session: AstroSession | null) { if (!session) { throw new Error("Session context is required"); } diff --git a/src/lib/HttpFetchClient.ts b/src/lib/HttpFetchClient.ts index 4319c5e..b5578e2 100644 --- a/src/lib/HttpFetchClient.ts +++ b/src/lib/HttpFetchClient.ts @@ -1,16 +1,10 @@ import { ofetch } from "ofetch"; -import { ProxyAgent } from "undici"; - -const wireguardDispatcher = new ProxyAgent("http://wireguard:8888"); -const TIMEOUT = 5000; const httpFetchClient = { get: async (url: string, headers: Record) => { const response = await ofetch(url, { method: "GET", headers, - dispatcher: wireguardDispatcher, - timeout: TIMEOUT, }); return response; @@ -20,8 +14,6 @@ const httpFetchClient = { method: "POST", headers, body: JSON.stringify(body), - dispatcher: wireguardDispatcher, - timeout: TIMEOUT, }); return response; @@ -31,8 +23,6 @@ const httpFetchClient = { method: "PUT", headers, body: JSON.stringify(body), - dispatcher: wireguardDispatcher, - timeout: TIMEOUT, }); return response; @@ -42,8 +32,6 @@ const httpFetchClient = { method: "PATCH", headers, body: JSON.stringify(body), - dispatcher: wireguardDispatcher, - timeout: TIMEOUT, }); return response; @@ -52,8 +40,6 @@ const httpFetchClient = { const response = await ofetch(url, { method: "DELETE", headers, - dispatcher: wireguardDispatcher, - timeout: TIMEOUT, }); return response; diff --git a/src/lib/Otp.ts b/src/lib/Otp.ts index 347a02d..ce7d5b4 100644 --- a/src/lib/Otp.ts +++ b/src/lib/Otp.ts @@ -1,16 +1,44 @@ import { authenticator } from "otplib"; import { createHash } from "crypto"; -const submissionTimestamps = new Map(); -const otpRequestTimestamps = new Map(); +const submissionTimestamps = new Map(); +const otpRequestTimestamps = new Map(); const ONE_WEEK_IN_MS: number = 7 * 24 * 60 * 60 * 1000; const ONE_HOUR_IN_MS: number = 60 * 60 * 1000; const MAX_OTP_REQUESTS_PER_HOUR: number = 3; const MAX_MESSAGES_PER_WEEK: number = 3; const OTP_STEP_IN_SEC: number = 300; const VALID_PAST_OTP_STEPS: number = 1; -const VALID_FUTURE_OTP_STEPS: number = 1; +const VALID_FUTURE_OTP_STEPS: number = 0; const OTP_NUM_DIGITS: number = 6; +const MAX_GLOBAL_OTP_SENDS_PER_HOUR: number = 10; +let globalOtpSendTimestamps: number[] = []; + +export function isRateLimitedGlobally(): boolean { + const now = Date.now(); + globalOtpSendTimestamps = globalOtpSendTimestamps.filter( + (t) => now - t < ONE_HOUR_IN_MS, + ); + return globalOtpSendTimestamps.length >= MAX_GLOBAL_OTP_SENDS_PER_HOUR; +} + +export function recordGlobalOtpSend() { + globalOtpSendTimestamps.push(Date.now()); +} + +function cleanupStaleEntries(map: Map, windowMs: number) { + const now = Date.now(); + for (const [key, timestamps] of map) { + const recent = timestamps.filter((t) => now - t < windowMs); + if (recent.length === 0) map.delete(key); + else if (recent.length !== timestamps.length) map.set(key, recent); + } +} + +setInterval(() => { + cleanupStaleEntries(submissionTimestamps, ONE_WEEK_IN_MS); + cleanupStaleEntries(otpRequestTimestamps, ONE_HOUR_IN_MS); +}, ONE_HOUR_IN_MS).unref?.(); authenticator.options = { step: OTP_STEP_IN_SEC, @@ -30,15 +58,14 @@ function getUserSecret(phoneNumber: string, salt: string): string { } export function normalizePhone(phone: string) { - const result = phone.replace(/[^\d]/g, "").trim().startsWith("1") - ? phone.substring(1) - : phone; - - if (result.length !== 10) { + let digits = phone.replace(/\D/g, ""); + if (digits.length === 11 && digits.startsWith("1")) { + digits = digits.slice(1); + } + if (digits.length !== 10) { throw new Error("Invalid phone number."); } - - return result; + return digits; } export function isValidPhone(phone: string): boolean { @@ -46,9 +73,13 @@ export function isValidPhone(phone: string): boolean { const match = phone.match(/(\d{3})(\d{3})(\d{4})/); const [, prefix, exchange, station] = match ?? []; const isValidNANPFormat = - /^[2-7][0-8][0-9]$/.test(prefix) && /^[2-9][0-9]{2}$/.test(exchange); + /^[2-9][0-9]{2}$/.test(prefix) && /^[2-9][0-9]{2}$/.test(exchange); const isNotAllSameDigit = !/^(.)\1{6}$/.test(exchange + station); const isNot911Number = prefix !== "911" && exchange !== "911"; + const isNotTollFreeNumber = !( + /^[8-9][0-9]{2}$/.test(prefix) && + /^(99|88|77|66|55|44|33|22|11|00)$/.test(prefix.slice(1, 3)) + ); const isNot555Number = prefix !== "555" && exchange !== "555"; const isNotPopSongNumber = exchange !== "867" && station !== "5309"; @@ -57,6 +88,7 @@ export function isValidPhone(phone: string): boolean { isNotAllSameDigit && isNot911Number && isNot555Number && + isNotTollFreeNumber && isNotPopSongNumber ); } @@ -153,4 +185,6 @@ export default { recordMsgSubmission, isRateLimitedForOtp, isRateLimitedForMsgs, + isRateLimitedGlobally, + recordGlobalOtpSend, }; diff --git a/src/middleware.ts b/src/middleware.ts index a97291a..cb78178 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,7 +1,30 @@ import { defineMiddleware } from "astro:middleware"; import { getActionContext } from "astro:actions"; +import type { APIContext, MiddlewareNext } from "astro"; -export const onRequest = defineMiddleware(async (context, next) => { +// htmz -> frame-ancestors 'self' & X-Frame-Options SAMEORIGIN +// astro -> 'unsafe-inline' +const SECURITY_HEADERS: Record = { + "Content-Security-Policy": [ + "default-src 'self'", + "script-src 'self' 'unsafe-inline' 'unsafe-eval'", + "worker-src 'self' blob:", + "style-src 'self' 'unsafe-inline'", + "img-src 'self' data: https://badblocks.goatcounter.com", + "font-src 'self'", + "connect-src 'self' https://badblocks.goatcounter.com https://api.iconify.design https://cdn.jsdelivr.net", + "object-src 'none'", + "frame-ancestors 'self'", + "base-uri 'self'", + "form-action 'self'", + ].join("; "), + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "Referrer-Policy": "strict-origin-when-cross-origin", + "Permissions-Policy": "camera=(), microphone=(), geolocation=()", +}; + +async function handle(context: APIContext, next: MiddlewareNext) { if (context.isPrerendered) return next(); const { action, setActionResult, serializeActionResult } = @@ -10,10 +33,11 @@ export const onRequest = defineMiddleware(async (context, next) => { const currentAction = await context.session?.get("currentAction"); if (currentAction) { - const { actionName, actionResult } = JSON.parse(currentAction); - setActionResult(actionName, actionResult); - context.session?.delete("currentAction"); + try { + const { actionName, actionResult } = JSON.parse(currentAction); + setActionResult(actionName, actionResult); + } catch {} return next(); } @@ -39,13 +63,14 @@ export const onRequest = defineMiddleware(async (context, next) => { context.session?.set("contactFormDraft", draft); - const referer = context.request.headers.get("Referer"); - if (!referer) { - throw new Error( - "Internal: Referer unexpectedly missing from Action POST request.", - ); - } - return context.redirect(referer); + let redirectPath = context.originPathname; + try { + const referer = new URL(context.request.headers.get("Referer") ?? ""); + if (referer.origin === context.url.origin) { + redirectPath = referer.pathname; + } + } catch {} + return context.redirect(redirectPath); } context.session?.delete("contactFormDraft"); @@ -53,4 +78,12 @@ export const onRequest = defineMiddleware(async (context, next) => { } return next(); +} + +export const onRequest = defineMiddleware(async (context, next) => { + const response = await handle(context, next); + for (const [header, value] of Object.entries(SECURITY_HEADERS)) { + response.headers.set(header, value); + } + return response; }); diff --git a/src/pages/ai.astro b/src/pages/ai.astro new file mode 100644 index 0000000..4122804 --- /dev/null +++ b/src/pages/ai.astro @@ -0,0 +1,8 @@ +--- +import Layout from "@layouts/BaseLayout.astro"; +--- + + + AI Policy + + diff --git a/src/pages/cap/redeem.ts b/src/pages/cap/redeem.ts index ed93e1c..e07e650 100644 --- a/src/pages/cap/redeem.ts +++ b/src/pages/cap/redeem.ts @@ -10,8 +10,21 @@ export const POST: APIRoute = async (context) => { ); } - const { token, solutions } = await context.request.json(); - if (!token || !solutions) { + let body: { token?: unknown; solutions?: unknown }; + try { + body = await context.request.json(); + } catch { + return new Response(JSON.stringify({ success: false }), { status: 400 }); + } + + const { token, solutions } = body ?? {}; + if ( + typeof token !== "string" || + token.length > 256 || + !Array.isArray(solutions) || + solutions.length > 128 || + !solutions.every((s) => typeof s === "number") + ) { return new Response(JSON.stringify({ success: false }), { status: 400 }); } diff --git a/src/pages/contact.astro b/src/pages/contact.astro index 933fb9e..add27ce 100644 --- a/src/pages/contact.astro +++ b/src/pages/contact.astro @@ -52,15 +52,15 @@ const msgValue = pickValue("msg"); errorIcon && progressIcon ) { - cap.addEventListener("solve", function (e) { - const humanness = Math.round((85 + Math.random() * 14.9) * 10) / 10; + cap.addEventListener("solve", function () { + const humanness = Math.round((90 + Math.random() * 9.9) * 10) / 10; // rounds to 1 decimal place statusText.textContent = `${humanness}% human. Good enough!`; progressIcon.classList.add("hidden"); errorIcon.classList.add("hidden"); initIcon.classList.add("hidden"); completeIcon.classList.remove("hidden"); }); - cap.addEventListener("error", function (e) { + cap.addEventListener("error", function () { statusText.textContent = "Oops! We crashed!"; progressIcon.classList.add("hidden"); completeIcon.classList.add("hidden"); @@ -167,9 +167,12 @@ const msgValue = pickValue("msg"); id="name" name="name" aria-describedby="name" - placeholder="Alice Bob" + placeholder="Alice Bobston" + value={nameValue} /> - {error.name &&

{error.name.join(",")}

} + {"name" in error && error.name && ( +

{error.name}

+ )}