From 3f102e37035ced1959d91c2245e377bb84d1ea4b Mon Sep 17 00:00:00 2001 From: kastov Date: Mon, 10 Aug 2026 02:11:54 +0300 Subject: [PATCH] fix: missing sha256 check --- src/modules/xray-core/core-loader.service.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/modules/xray-core/core-loader.service.ts b/src/modules/xray-core/core-loader.service.ts index 44839ee..9b7695d 100644 --- a/src/modules/xray-core/core-loader.service.ts +++ b/src/modules/xray-core/core-loader.service.ts @@ -20,7 +20,7 @@ const CoreSchema = z.object({ core: z .object({ url: z.url({ protocol: /^https$/ }), - sha256: z.hash('sha256'), + sha256: z.hash('sha256').transform((value) => value.toLowerCase()), }) .optional(), }); @@ -59,20 +59,25 @@ export class CoreLoaderService { return; } - if (await this.isInstalled(core.url)) return; + if (await this.isInstalled(core)) return; await this.install(core); } - private async isInstalled(url: string): Promise { + private async isInstalled(core: ICore): Promise { try { const marker = JSON.parse(await readFile(CORE_MARKER, 'utf8')) as ICoreMarker; - if (marker.url !== url) { + if (marker.url !== core.url) { this.logger.log('Configured url changed, re-downloading.'); return false; } + if (marker.sha256 !== core.sha256) { + this.logger.log('Configured sha256 changed, re-downloading.'); + return false; + } + const stats = await stat(CORE_CUSTOM); if (stats.size !== marker.size || stats.mtimeMs !== marker.mtimeMs) {