Add support for custom 404.html pages

This commit is contained in:
hzrd149 2024-10-18 11:29:29 +01:00
parent cb3b694074
commit db172d4d0a
3 changed files with 24 additions and 11 deletions

View File

@ -0,0 +1,5 @@
---
"nsite-ts": minor
---
Add support for custom 404.html pages

View File

@ -75,22 +75,23 @@ app.use(async (ctx, next) => {
}
if (pubkey) {
const npub = npubEncode(pubkey);
ctx.state.pubkey = pubkey;
let relays = await userRelays.get<string[] | undefined>(pubkey);
// fetch relays if not in cache
if (!relays) {
console.log(`${pubkey}: Fetching relays`);
console.log(`${npub}: Fetching relays`);
relays = await getUserOutboxes(pubkey);
if (relays) {
await userRelays.set(pubkey, relays);
console.log(`${pubkey}: Found ${relays.length} relays`);
console.log(`${npub}: Found ${relays.length} relays`);
} else {
relays = [];
await userServers.set(pubkey, [], 30_000);
console.log(`${pubkey}: Failed to find relays`);
console.log(`${npub}: Failed to find relays`);
}
}
@ -98,11 +99,17 @@ app.use(async (ctx, next) => {
if (relays.length === 0) throw new Error("No nostr relays");
console.log(`${pubkey}: Searching for ${ctx.path}`);
const blobs = await getNsiteBlobs(pubkey, ctx.path, relays);
console.log(`${npub}: Searching for ${ctx.path}`);
let blobs = await getNsiteBlobs(pubkey, ctx.path, relays);
if (blobs.length === 0) {
console.log(`${pubkey}: Found 0 events`);
// fallback to custom 404 page
console.log(`${npub}: Looking for custom 404 page`);
blobs = await getNsiteBlobs(pubkey, "/404.html", relays);
}
if (blobs.length === 0) {
console.log(`${npub}: Found 0 events`);
ctx.status = 404;
ctx.body = "Not Found";
return;
@ -112,16 +119,16 @@ app.use(async (ctx, next) => {
// fetch blossom servers if not in cache
if (!servers) {
console.log(`${pubkey}: Fetching blossom servers`);
console.log(`${npub}: Fetching blossom servers`);
servers = await getUserBlossomServers(pubkey, relays);
if (servers) {
await userServers.set(pubkey, servers);
console.log(`${pubkey}: Found ${servers.length} servers`);
console.log(`${npub}: Found ${servers.length} servers`);
} else {
servers = [];
await userServers.set(pubkey, [], 30_000);
console.log(`${pubkey}: Failed to find servers`);
console.log(`${npub}: Failed to find servers`);
}
}

View File

@ -2,6 +2,7 @@ import { nip19 } from "nostr-tools";
import puppeteer, { PuppeteerLaunchOptions } from "puppeteer";
import { join } from "path";
import pfs from "fs/promises";
import { npubEncode } from "nostr-tools/nip19";
import { NSITE_PORT, SCREENSHOTS_DIR } from "./env.js";
@ -23,7 +24,7 @@ export async function hasScreenshot(pubkey: string) {
}
export async function takeScreenshot(pubkey: string) {
console.log(`${pubkey}: Generating screenshot`);
console.log(`${npubEncode(pubkey)}: Generating screenshot`);
const opts: PuppeteerLaunchOptions = {
args: ["--no-sandbox"],
@ -41,6 +42,6 @@ export async function takeScreenshot(pubkey: string) {
export async function removeScreenshot(pubkey: string) {
try {
await pfs.rm(getScreenshotPath(pubkey));
console.log(`${pubkey}: Removed screenshot`);
console.log(`${npubEncode(pubkey)}: Removed screenshot`);
} catch (error) {}
}