From 4c463be9ffa6dc035c53d2be1a3e0ee9f984489e Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 17 Mar 2026 04:19:59 +0800 Subject: [PATCH] core&ui: add cdn_dynamic --- packages/hydrooj/src/model/setting.ts | 3 ++- packages/hydrooj/src/service/layers/base.ts | 3 +++ packages/ui-default/templates/layout/html5.html | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/src/model/setting.ts b/packages/hydrooj/src/model/setting.ts index 2f32c50d7..8de6c6e86 100644 --- a/packages/hydrooj/src/model/setting.ts +++ b/packages/hydrooj/src/model/setting.ts @@ -24,7 +24,7 @@ for (const country of countries) { const tz = moment.tz.zonesForCountry(country); for (const t of tz) tzs.add(t); } -const timezones = Array.from(tzs).sort().map((tz) => [tz, tz]) as [string, string][]; +const timezones = [...tzs].sort().map((tz) => [tz, tz]) as [string, string][]; const langRange: Dictionary = {}; export const FLAG_HIDDEN = 1; @@ -320,6 +320,7 @@ SystemSetting(Schema.object({ url: Schema.string().default('/').description('Server BaseURL'), upload: Schema.string().default('256m').description('Max upload file size'), cdn: Schema.string().default('/').description('CDN Prefix'), + cdn_dynamic: Schema.boolean().default(false).description('Dynamic CDN'), ws: Schema.string().default('/').description('WebSocket Prefix'), host: Schema.string().default('127.0.0.1').description('Listen host'), port: Schema.number().step(1).min(1).max(65535).default(8888).description('Server Port'), diff --git a/packages/hydrooj/src/service/layers/base.ts b/packages/hydrooj/src/service/layers/base.ts index c666213f8..7cbd44aa8 100644 --- a/packages/hydrooj/src/service/layers/base.ts +++ b/packages/hydrooj/src/service/layers/base.ts @@ -8,11 +8,13 @@ import token from '../../model/token'; export interface UiContextBase { cdn_prefix: string; + cdn_dynamic: boolean; url_prefix: string; ws_prefix: string; } export const UiContextBase: UiContextBase = { cdn_prefix: '/', + cdn_dynamic: false, url_prefix: '/', ws_prefix: '/', }; @@ -29,6 +31,7 @@ export default async (ctx: KoaContext, next: Next) => { if (UiContext.cdn_prefix.includes(',')) UiContext.cdn_prefix = randomPick(UiContext.cdn_prefix.split(',')); UiContext.ws_prefix = system.get('server.ws'); if (UiContext.ws_prefix.includes(',')) UiContext.ws_prefix = randomPick(UiContext.ws_prefix.split(',')); + UiContext.cdn_dynamic = system.get('server.cdn_dynamic'); } UiContext.domainId = domainId; UiContext.domain = domainInfo; diff --git a/packages/ui-default/templates/layout/html5.html b/packages/ui-default/templates/layout/html5.html index dfc13d7a9..5cb6318e5 100644 --- a/packages/ui-default/templates/layout/html5.html +++ b/packages/ui-default/templates/layout/html5.html @@ -58,7 +58,7 @@ {% if not isIE(handler.request.headers['user-agent']) and not handler.session.legacy %} - + {% endif %}