diff --git a/server/src/plugins/service-admin-http/index.ts b/server/src/plugins/service-admin-http/index.ts index 6f2f757..689ebe9 100644 --- a/server/src/plugins/service-admin-http/index.ts +++ b/server/src/plugins/service-admin-http/index.ts @@ -200,10 +200,12 @@ export class Plugin extends BSBService, typeof Event onRequest: (event) => { const method = event.req.method ?? "GET"; const path = event.req.url ?? "/"; - event.context.obs = self.createTrace(`${method} ${path}`, { + const reqObs = self.createTrace(`${method} ${path}`, { "http.method": method, "http.url": path, }); + reqObs.log.info("{method} {path}", { method, path }); + event.context.obs = reqObs; }, onError: (error, event) => { const reqObs = event.context.obs ?? obs; @@ -231,7 +233,7 @@ export class Plugin extends BSBService, typeof Event }); registerMiddleware(app, deps); - registerStaticRoutes(app); + registerStaticRoutes(app, this.pluginCwd); registerSetupRoutes(app, deps); registerAuthRoutes(app, deps); registerAdminRoutes(app, deps); diff --git a/server/src/plugins/service-admin-http/routes-static.ts b/server/src/plugins/service-admin-http/routes-static.ts index 27494f3..cf78ea0 100644 --- a/server/src/plugins/service-admin-http/routes-static.ts +++ b/server/src/plugins/service-admin-http/routes-static.ts @@ -8,11 +8,6 @@ import { existsSync, readFileSync } from "node:fs"; import { join, extname, resolve } from "node:path"; import { type H3, getRouterParam, createError } from "h3"; -const STATIC_DIR = resolve( - import.meta.dirname ?? ".", - "../../web-static", -); - const MIME_TYPES: Record = { ".html": "text/html; charset=utf-8", ".css": "text/css; charset=utf-8", @@ -25,12 +20,13 @@ const MIME_TYPES: Record = { ".woff2": "font/woff2", }; -export function registerStaticRoutes(app: H3): void { +export function registerStaticRoutes(app: H3, pluginCwd: string): void { + const STATIC_DIR = resolve(pluginCwd, "../../web-static"); + app.get("/static/**:path", (event) => { const reqPath = getRouterParam(event, "path"); if (!reqPath) throw createError({ statusCode: 404 }); - // Prevent directory traversal const resolved = resolve(STATIC_DIR, reqPath); if (!resolved.startsWith(STATIC_DIR)) { throw createError({ statusCode: 403 }); diff --git a/server/src/plugins/service-api-http/index.ts b/server/src/plugins/service-api-http/index.ts index 505eaf1..b1dd3c3 100644 --- a/server/src/plugins/service-api-http/index.ts +++ b/server/src/plugins/service-api-http/index.ts @@ -169,10 +169,12 @@ export class Plugin extends BSBService, typeof Event onRequest: (event) => { const method = event.req.method ?? "GET"; const path = event.req.url ?? "/"; - event.context.obs = self.createTrace(`${method} ${path}`, { + const reqObs = self.createTrace(`${method} ${path}`, { "http.method": method, "http.url": path, }); + reqObs.log.info("{method} {path}", { method, path }); + event.context.obs = reqObs; }, onError: (error, event) => { const reqObs = event.context.obs ?? obs;