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) {
|
if (pubkey) {
|
||||||
|
const npub = npubEncode(pubkey);
|
||||||
ctx.state.pubkey = pubkey;
|
ctx.state.pubkey = pubkey;
|
||||||
|
|
||||||
let relays = await userRelays.get<string[] | undefined>(pubkey);
|
let relays = await userRelays.get<string[] | undefined>(pubkey);
|
||||||
|
|
||||||
// fetch relays if not in cache
|
// fetch relays if not in cache
|
||||||
if (!relays) {
|
if (!relays) {
|
||||||
console.log(`${pubkey}: Fetching relays`);
|
console.log(`${npub}: Fetching relays`);
|
||||||
|
|
||||||
relays = await getUserOutboxes(pubkey);
|
relays = await getUserOutboxes(pubkey);
|
||||||
if (relays) {
|
if (relays) {
|
||||||
await userRelays.set(pubkey, relays);
|
await userRelays.set(pubkey, relays);
|
||||||
console.log(`${pubkey}: Found ${relays.length} relays`);
|
console.log(`${npub}: Found ${relays.length} relays`);
|
||||||
} else {
|
} else {
|
||||||
relays = [];
|
relays = [];
|
||||||
await userServers.set(pubkey, [], 30_000);
|
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");
|
if (relays.length === 0) throw new Error("No nostr relays");
|
||||||
|
|
||||||
console.log(`${pubkey}: Searching for ${ctx.path}`);
|
console.log(`${npub}: Searching for ${ctx.path}`);
|
||||||
const blobs = await getNsiteBlobs(pubkey, ctx.path, relays);
|
let blobs = await getNsiteBlobs(pubkey, ctx.path, relays);
|
||||||
|
|
||||||
if (blobs.length === 0) {
|
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.status = 404;
|
||||||
ctx.body = "Not Found";
|
ctx.body = "Not Found";
|
||||||
return;
|
return;
|
||||||
@ -112,16 +119,16 @@ app.use(async (ctx, next) => {
|
|||||||
|
|
||||||
// fetch blossom servers if not in cache
|
// fetch blossom servers if not in cache
|
||||||
if (!servers) {
|
if (!servers) {
|
||||||
console.log(`${pubkey}: Fetching blossom servers`);
|
console.log(`${npub}: Fetching blossom servers`);
|
||||||
servers = await getUserBlossomServers(pubkey, relays);
|
servers = await getUserBlossomServers(pubkey, relays);
|
||||||
|
|
||||||
if (servers) {
|
if (servers) {
|
||||||
await userServers.set(pubkey, servers);
|
await userServers.set(pubkey, servers);
|
||||||
console.log(`${pubkey}: Found ${servers.length} servers`);
|
console.log(`${npub}: Found ${servers.length} servers`);
|
||||||
} else {
|
} else {
|
||||||
servers = [];
|
servers = [];
|
||||||
await userServers.set(pubkey, [], 30_000);
|
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 puppeteer, { PuppeteerLaunchOptions } from "puppeteer";
|
||||||
import { join } from "path";
|
import { join } from "path";
|
||||||
import pfs from "fs/promises";
|
import pfs from "fs/promises";
|
||||||
|
import { npubEncode } from "nostr-tools/nip19";
|
||||||
|
|
||||||
import { NSITE_PORT, SCREENSHOTS_DIR } from "./env.js";
|
import { NSITE_PORT, SCREENSHOTS_DIR } from "./env.js";
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ export async function hasScreenshot(pubkey: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function takeScreenshot(pubkey: string) {
|
export async function takeScreenshot(pubkey: string) {
|
||||||
console.log(`${pubkey}: Generating screenshot`);
|
console.log(`${npubEncode(pubkey)}: Generating screenshot`);
|
||||||
|
|
||||||
const opts: PuppeteerLaunchOptions = {
|
const opts: PuppeteerLaunchOptions = {
|
||||||
args: ["--no-sandbox"],
|
args: ["--no-sandbox"],
|
||||||
@ -41,6 +42,6 @@ export async function takeScreenshot(pubkey: string) {
|
|||||||
export async function removeScreenshot(pubkey: string) {
|
export async function removeScreenshot(pubkey: string) {
|
||||||
try {
|
try {
|
||||||
await pfs.rm(getScreenshotPath(pubkey));
|
await pfs.rm(getScreenshotPath(pubkey));
|
||||||
console.log(`${pubkey}: Removed screenshot`);
|
console.log(`${npubEncode(pubkey)}: Removed screenshot`);
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user