mirror of
https://github.com/hzrd149/nsite-gateway.git
synced 2025-06-23 12:05:01 +00:00
Add colors to logging
This commit is contained in:
parent
5be0822410
commit
2ac847f3b1
5
.changeset/thirty-bikes-train.md
Normal file
5
.changeset/thirty-bikes-train.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"nsite-ts": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Add colors to logging
|
@ -23,6 +23,7 @@
|
|||||||
"@keyv/sqlite": "^4.0.1",
|
"@keyv/sqlite": "^4.0.1",
|
||||||
"@koa/cors": "^5.0.0",
|
"@koa/cors": "^5.0.0",
|
||||||
"blossom-client-sdk": "^2.1.1",
|
"blossom-client-sdk": "^2.1.1",
|
||||||
|
"debug": "^4.4.0",
|
||||||
"dotenv": "^16.4.7",
|
"dotenv": "^16.4.7",
|
||||||
"follow-redirects": "^1.15.9",
|
"follow-redirects": "^1.15.9",
|
||||||
"keyv": "^5.2.3",
|
"keyv": "^5.2.3",
|
||||||
@ -44,6 +45,7 @@
|
|||||||
"@swc-node/register": "^1.10.9",
|
"@swc-node/register": "^1.10.9",
|
||||||
"@swc/core": "^1.10.9",
|
"@swc/core": "^1.10.9",
|
||||||
"@types/better-sqlite3": "^7.6.12",
|
"@types/better-sqlite3": "^7.6.12",
|
||||||
|
"@types/debug": "^4.1.12",
|
||||||
"@types/follow-redirects": "^1.14.4",
|
"@types/follow-redirects": "^1.14.4",
|
||||||
"@types/koa": "^2.15.0",
|
"@types/koa": "^2.15.0",
|
||||||
"@types/koa-morgan": "^1.0.8",
|
"@types/koa-morgan": "^1.0.8",
|
||||||
|
24
pnpm-lock.yaml
generated
24
pnpm-lock.yaml
generated
@ -23,12 +23,15 @@ importers:
|
|||||||
blossom-client-sdk:
|
blossom-client-sdk:
|
||||||
specifier: ^2.1.1
|
specifier: ^2.1.1
|
||||||
version: 2.1.1
|
version: 2.1.1
|
||||||
|
debug:
|
||||||
|
specifier: ^4.4.0
|
||||||
|
version: 4.4.0(supports-color@5.5.0)
|
||||||
dotenv:
|
dotenv:
|
||||||
specifier: ^16.4.7
|
specifier: ^16.4.7
|
||||||
version: 16.4.7
|
version: 16.4.7
|
||||||
follow-redirects:
|
follow-redirects:
|
||||||
specifier: ^1.15.9
|
specifier: ^1.15.9
|
||||||
version: 1.15.9
|
version: 1.15.9(debug@4.4.0)
|
||||||
keyv:
|
keyv:
|
||||||
specifier: ^5.2.3
|
specifier: ^5.2.3
|
||||||
version: 5.2.3
|
version: 5.2.3
|
||||||
@ -81,6 +84,9 @@ importers:
|
|||||||
'@types/better-sqlite3':
|
'@types/better-sqlite3':
|
||||||
specifier: ^7.6.12
|
specifier: ^7.6.12
|
||||||
version: 7.6.12
|
version: 7.6.12
|
||||||
|
'@types/debug':
|
||||||
|
specifier: ^4.1.12
|
||||||
|
version: 4.1.12
|
||||||
'@types/follow-redirects':
|
'@types/follow-redirects':
|
||||||
specifier: ^1.14.4
|
specifier: ^1.14.4
|
||||||
version: 1.14.4
|
version: 1.14.4
|
||||||
@ -477,6 +483,9 @@ packages:
|
|||||||
'@types/cookies@0.9.0':
|
'@types/cookies@0.9.0':
|
||||||
resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==}
|
resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==}
|
||||||
|
|
||||||
|
'@types/debug@4.1.12':
|
||||||
|
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
|
||||||
|
|
||||||
'@types/express-serve-static-core@5.0.5':
|
'@types/express-serve-static-core@5.0.5':
|
||||||
resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==}
|
resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==}
|
||||||
|
|
||||||
@ -522,6 +531,9 @@ packages:
|
|||||||
'@types/morgan@1.9.9':
|
'@types/morgan@1.9.9':
|
||||||
resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==}
|
resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==}
|
||||||
|
|
||||||
|
'@types/ms@2.1.0':
|
||||||
|
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
||||||
|
|
||||||
'@types/node@12.20.55':
|
'@types/node@12.20.55':
|
||||||
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
|
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
|
||||||
|
|
||||||
@ -2437,6 +2449,10 @@ snapshots:
|
|||||||
'@types/keygrip': 1.0.6
|
'@types/keygrip': 1.0.6
|
||||||
'@types/node': 20.17.14
|
'@types/node': 20.17.14
|
||||||
|
|
||||||
|
'@types/debug@4.1.12':
|
||||||
|
dependencies:
|
||||||
|
'@types/ms': 2.1.0
|
||||||
|
|
||||||
'@types/express-serve-static-core@5.0.5':
|
'@types/express-serve-static-core@5.0.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.14
|
'@types/node': 20.17.14
|
||||||
@ -2504,6 +2520,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.14
|
'@types/node': 20.17.14
|
||||||
|
|
||||||
|
'@types/ms@2.1.0': {}
|
||||||
|
|
||||||
'@types/node@12.20.55': {}
|
'@types/node@12.20.55': {}
|
||||||
|
|
||||||
'@types/node@20.17.14':
|
'@types/node@20.17.14':
|
||||||
@ -2967,7 +2985,9 @@ snapshots:
|
|||||||
locate-path: 5.0.0
|
locate-path: 5.0.0
|
||||||
path-exists: 4.0.0
|
path-exists: 4.0.0
|
||||||
|
|
||||||
follow-redirects@1.15.9: {}
|
follow-redirects@1.15.9(debug@4.4.0):
|
||||||
|
optionalDependencies:
|
||||||
|
debug: 4.4.0(supports-color@5.5.0)
|
||||||
|
|
||||||
fresh@0.5.2: {}
|
fresh@0.5.2: {}
|
||||||
|
|
||||||
|
23
src/index.ts
23
src/index.ts
@ -27,6 +27,7 @@ import {
|
|||||||
import { userDomains, userRelays, userServers } from "./cache.js";
|
import { userDomains, userRelays, userServers } from "./cache.js";
|
||||||
import { invalidatePubkeyPath } from "./nginx.js";
|
import { invalidatePubkeyPath } from "./nginx.js";
|
||||||
import pool, { getUserOutboxes, subscribeForEvents } from "./nostr.js";
|
import pool, { getUserOutboxes, subscribeForEvents } from "./nostr.js";
|
||||||
|
import logger from "./logger.js";
|
||||||
|
|
||||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
@ -76,22 +77,23 @@ app.use(async (ctx, next) => {
|
|||||||
|
|
||||||
if (pubkey) {
|
if (pubkey) {
|
||||||
const npub = npubEncode(pubkey);
|
const npub = npubEncode(pubkey);
|
||||||
|
const log = logger.extend(npub);
|
||||||
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(`${npub}: Fetching relays`);
|
log(`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(`${npub}: Found ${relays.length} relays`);
|
log(`Found ${relays.length} relays`);
|
||||||
} else {
|
} else {
|
||||||
relays = [];
|
relays = [];
|
||||||
await userServers.set(pubkey, [], 30_000);
|
await userServers.set(pubkey, [], 30_000);
|
||||||
console.log(`${npub}: Failed to find relays`);
|
log(`Failed to find relays`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,17 +101,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(`${npub}: Searching for ${ctx.path}`);
|
log(`Searching for ${ctx.path}`);
|
||||||
let blobs = await getNsiteBlobs(pubkey, ctx.path, relays);
|
let blobs = await getNsiteBlobs(pubkey, ctx.path, relays);
|
||||||
|
|
||||||
if (blobs.length === 0) {
|
if (blobs.length === 0) {
|
||||||
// fallback to custom 404 page
|
// fallback to custom 404 page
|
||||||
console.log(`${npub}: Looking for custom 404 page`);
|
log(`Looking for custom 404 page`);
|
||||||
blobs = await getNsiteBlobs(pubkey, "/404.html", relays);
|
blobs = await getNsiteBlobs(pubkey, "/404.html", relays);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blobs.length === 0) {
|
if (blobs.length === 0) {
|
||||||
console.log(`${npub}: Found 0 events`);
|
log(`Found 0 events`);
|
||||||
ctx.status = 404;
|
ctx.status = 404;
|
||||||
ctx.body = "Not Found";
|
ctx.body = "Not Found";
|
||||||
return;
|
return;
|
||||||
@ -119,16 +121,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(`${npub}: Fetching blossom servers`);
|
log(`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(`${npub}: Found ${servers.length} servers`);
|
log(`Found ${servers.length} servers`);
|
||||||
} else {
|
} else {
|
||||||
servers = [];
|
servers = [];
|
||||||
await userServers.set(pubkey, [], 30_000);
|
await userServers.set(pubkey, [], 30_000);
|
||||||
console.log(`${npub}: Failed to find servers`);
|
log(`Failed to find servers`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,7 +215,8 @@ app.listen({ host: NSITE_HOST, port: NSITE_PORT }, () => {
|
|||||||
|
|
||||||
// invalidate nginx cache and screenshots on new events
|
// invalidate nginx cache and screenshots on new events
|
||||||
if (SUBSCRIPTION_RELAYS.length > 0) {
|
if (SUBSCRIPTION_RELAYS.length > 0) {
|
||||||
console.log(`Listening for new nsite events`);
|
console.log(`Listening for new nsite events on: ${SUBSCRIPTION_RELAYS.join(", ")}`);
|
||||||
|
|
||||||
subscribeForEvents(SUBSCRIPTION_RELAYS, async (event) => {
|
subscribeForEvents(SUBSCRIPTION_RELAYS, async (event) => {
|
||||||
try {
|
try {
|
||||||
const nsite = parseNsiteEvent(event);
|
const nsite = parseNsiteEvent(event);
|
||||||
|
9
src/logger.ts
Normal file
9
src/logger.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import debug from "debug";
|
||||||
|
|
||||||
|
// enable default logging
|
||||||
|
if (!debug.enabled("nsite")) debug.enable("nsite");
|
||||||
|
if (!debug.enabled("nsite:*")) debug.enable("nsite:*");
|
||||||
|
|
||||||
|
const logger = debug("nsite");
|
||||||
|
|
||||||
|
export default logger;
|
Loading…
x
Reference in New Issue
Block a user