mirror of
https://github.com/hzrd149/nsite-gateway.git
synced 2025-06-23 12:05:01 +00:00
Add support for custom 404.html pages
This commit is contained in:
parent
cb3b694074
commit
db172d4d0a
5
.changeset/late-pants-rescue.md
Normal file
5
.changeset/late-pants-rescue.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"nsite-ts": minor
|
||||
---
|
||||
|
||||
Add support for custom 404.html pages
|
25
src/index.ts
25
src/index.ts
@ -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`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user