From 18cd0336646251cf31a836ecb15c0bff1568e577 Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 21 Sep 2022 16:31:12 +0800 Subject: [PATCH] core: bug fix --- packages/hydrooj/src/init.ts | 1 - packages/hydrooj/src/interface.ts | 1 + packages/hydrooj/src/service/server.ts | 8 ++++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/hydrooj/src/init.ts b/packages/hydrooj/src/init.ts index ea4dbb989..afa54e15f 100644 --- a/packages/hydrooj/src/init.ts +++ b/packages/hydrooj/src/init.ts @@ -28,5 +28,4 @@ if (!global.Hydro) { locales: {}, }; global.addons = []; - global.publicDirs = []; } diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 65f44f65f..9203cc290 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -716,6 +716,7 @@ export interface UI { export interface HydroGlobal { version: Record, model: Model, + /** @deprecated */ handler: Record, script: Record, service: Service, diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 9b34b6714..476c8672b 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -1,5 +1,7 @@ import http from 'http'; +import path from 'path'; import cac from 'cac'; +import fs from 'fs-extra'; import Koa, { Context } from 'koa'; import Body from 'koa-body'; import Compress from 'koa-compress'; @@ -117,7 +119,9 @@ export async function prepare() { return await next(); }); app.use(Compress()); - for (const dir of global.publicDirs) { + for (const addon of global.addons) { + const dir = path.resolve(addon, 'public'); + if (!fs.existsSync(dir)) continue; app.use(cache(dir, { maxAge: argv.options.public ? 0 : 24 * 3600 * 1000, })); @@ -143,7 +147,7 @@ ${ctx.response.status} ${endTime - startTime}ms ${ctx.response.length}`); })); const layers = [baseLayer, rendererLayer(router, logger), responseLayer(logger), userLayer]; app.use(async (ctx, next) => await next().catch(console.error)).use(domainLayer); - layers.forEach((layer) => router.use(layer as any)); + layers.forEach((layer) => app.use(layer as any)); wsServer.on('connection', async (socket, request) => { const ctx: any = app.createContext(request, {} as any); await domainLayer(ctx, () => baseLayer(ctx, () => layers[1](ctx, () => userLayer(ctx, () => { }))));