diff --git a/src/app.ts b/src/app.ts index 1cb3746b..bc015aa7 100644 --- a/src/app.ts +++ b/src/app.ts @@ -159,7 +159,7 @@ app.use('/nodeinfo/*', metricsMiddleware, logger(debug)); app.use('/oauth/*', metricsMiddleware, logger(debug)); app.get('/api/v1/streaming', metricsMiddleware, streamingController); -app.get('/relay', metricsMiddleware, relayController); +app.all('/relay', metricsMiddleware, relayController); app.use( '*', diff --git a/src/controllers/nostr/management.ts b/src/controllers/nostr/management.ts new file mode 100644 index 00000000..6331b422 --- /dev/null +++ b/src/controllers/nostr/management.ts @@ -0,0 +1,5 @@ +import { AppController } from '@/app.ts'; + +export const managementController: AppController = (c) => { + return c.json({ error: 'Not found' }, 404); +}; diff --git a/src/controllers/nostr/relay.ts b/src/controllers/nostr/relay.ts index 02d2995e..77b92645 100644 --- a/src/controllers/nostr/relay.ts +++ b/src/controllers/nostr/relay.ts @@ -167,10 +167,13 @@ const relayController: AppController = (c, next) => { const upgrade = c.req.header('upgrade'); // NIP-11: https://github.com/nostr-protocol/nips/blob/master/11.md - if (c.req.header('accept') === 'application/nostr+json') { + if (c.req.method === 'GET' && c.req.header('accept') === 'application/nostr+json') { return relayInfoController(c, next); } + // NIP-86: https://github.com/nostr-protocol/nips/pull/1325 + if (c.req.header('content-type') === 'application/nostr+json+rpc') {} + if (upgrade?.toLowerCase() !== 'websocket') { return c.text('Please use a Nostr client to connect.', 400); } diff --git a/src/middleware/auth98Middleware.ts b/src/middleware/auth98Middleware.ts index 85557151..632450a2 100644 --- a/src/middleware/auth98Middleware.ts +++ b/src/middleware/auth98Middleware.ts @@ -2,16 +2,11 @@ import { HTTPException } from '@hono/hono/http-exception'; import { NostrEvent } from '@nostrify/nostrify'; import { type AppContext, type AppMiddleware } from '@/app.ts'; +import { Conf } from '@/config.ts'; import { ReadOnlySigner } from '@/signers/ReadOnlySigner.ts'; import { Storages } from '@/storages.ts'; import { localRequest } from '@/utils/api.ts'; -import { - buildAuthEventTemplate, - parseAuthRequest, - type ParseAuthRequestOpts, - validateAuthEvent, -} from '@/utils/nip98.ts'; -import { Conf } from '@/config.ts'; +import { buildAuthEventTemplate, parseAuthRequest, ParseAuthRequestOpts, validateAuthEvent } from '@/utils/nip98.ts'; /** * NIP-98 auth.