From c4301a53332b1d1413785ca880a9a72165fb17ae Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 9 Mar 2025 18:12:47 +0800 Subject: [PATCH] core: fix geoip inject --- packages/hydrooj/src/entry/worker.ts | 13 ++++++++----- packages/hydrooj/src/handler/home.ts | 6 +++--- packages/hydrooj/src/service/server.ts | 4 ---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/hydrooj/src/entry/worker.ts b/packages/hydrooj/src/entry/worker.ts index 91e43261a..f8a7a10ba 100644 --- a/packages/hydrooj/src/entry/worker.ts +++ b/packages/hydrooj/src/entry/worker.ts @@ -11,7 +11,7 @@ import { MongoService } from '../service/db'; import { ConfigService } from '../settings'; import { addon, builtinModel, handler, lib, locale, model, - script, service, setting, template, + script, service, setting, } from './common'; const argv = cac().parse(); @@ -95,9 +95,12 @@ export async function apply(ctx: Context) { // eslint-disable-next-line no-await-in-loop if (await fs.pathExists(dir)) await fs.copy(dir, path.join(os.homedir(), '.hydro/static')); } - await ctx.parallel('app/listen'); - logger.success('Server started'); - process.send?.('ready'); - await ctx.parallel('app/ready'); + ctx.inject(['server'], async ({ server }) => { + await server.listen(); + await ctx.parallel('app/listen'); + logger.success('Server started'); + process.send?.('ready'); + await ctx.parallel('app/ready'); + }); return { fail }; } diff --git a/packages/hydrooj/src/handler/home.ts b/packages/hydrooj/src/handler/home.ts index 1bbcedeb9..066edcf9a 100644 --- a/packages/hydrooj/src/handler/home.ts +++ b/packages/hydrooj/src/handler/home.ts @@ -181,6 +181,7 @@ export class HomeHandler extends Handler { class HomeSecurityHandler extends Handler { @requireSudo async get() { + const geoip = this.ctx.get('geoip'); // TODO(iceboy): pagination? or limit session count for uid? const sessions = await token.getSessionListByUid(this.user._id); for (const session of sessions) { @@ -188,7 +189,7 @@ class HomeSecurityHandler extends Handler { session._id = md5(session._id); const ua = session.updateUa || session.createUa; if (ua) session.updateUaInfo = UAParser(ua); - session.updateGeoip = this.ctx.geoip?.lookup?.( + session.updateGeoip = geoip?.lookup?.( session.updateIp || session.createIp, this.translate('geoip_locale'), ); @@ -201,7 +202,7 @@ class HomeSecurityHandler extends Handler { 'credentialID', 'name', 'credentialType', 'credentialDeviceType', 'authenticatorAttachment', 'regat', 'fmt', ])), - geoipProvider: this.ctx?.geoip?.provider, + geoipProvider: geoip?.provider, }; } @@ -603,7 +604,6 @@ class HomeMessagesConnectionHandler extends ConnectionHandler { } } -export const inject = { geoip: { required: false } }; export function apply(ctx: Context) { ctx.Route('homepage', '/', HomeHandler); ctx.Route('home_security', '/home/security', HomeSecurityHandler, PRIV.PRIV_USER_PROFILE); diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 1ae484e90..118025f3d 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -253,9 +253,5 @@ export async function apply(ctx: Context) { on('handler/create/ws', async (h) => { if (h.context.pendingError) throw h.context.pendingError; }); - - on('app/listen', () => { - server.listen(); - }); }); }