From a8011e4755baa37954b9fa257bc974214057acb3 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Thu, 9 Oct 2025 12:43:38 +0300 Subject: [PATCH] refactor(server): fix a few cyclic dependencies regarding protected_session --- apps/server/src/services/protected_session.ts | 21 +++++-------------- apps/server/src/services/scheduler.ts | 16 ++++++++++++-- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/apps/server/src/services/protected_session.ts b/apps/server/src/services/protected_session.ts index 57a163e18..d69d318d1 100644 --- a/apps/server/src/services/protected_session.ts +++ b/apps/server/src/services/protected_session.ts @@ -1,9 +1,6 @@ "use strict"; -import log from "./log.js"; import dataEncryptionService from "./encryption/data_encryption.js"; -import options from "./options.js"; -import ws from "./ws.js"; let dataKey: Buffer | null = null; @@ -15,11 +12,11 @@ function getDataKey() { return dataKey; } -function resetDataKey() { +export function resetDataKey() { dataKey = null; } -function isProtectedSessionAvailable() { +export function isProtectedSessionAvailable() { return !!dataKey; } @@ -57,15 +54,8 @@ function touchProtectedSession() { } } -function checkProtectedSessionExpiration() { - const protectedSessionTimeout = options.getOptionInt("protectedSessionTimeout"); - if (isProtectedSessionAvailable() && lastProtectedSessionOperationDate && Date.now() - lastProtectedSessionOperationDate > protectedSessionTimeout * 1000) { - resetDataKey(); - - log.info("Expiring protected session"); - - ws.reloadFrontend("leaving protected session"); - } +export function getLastProtectedSessionOperationDate() { + return lastProtectedSessionOperationDate; } export default { @@ -75,6 +65,5 @@ export default { encrypt, decrypt, decryptString, - touchProtectedSession, - checkProtectedSessionExpiration + touchProtectedSession }; diff --git a/apps/server/src/services/scheduler.ts b/apps/server/src/services/scheduler.ts index 803507442..e58ef07b4 100644 --- a/apps/server/src/services/scheduler.ts +++ b/apps/server/src/services/scheduler.ts @@ -4,9 +4,11 @@ import sqlInit from "./sql_init.js"; import config from "./config.js"; import log from "./log.js"; import attributeService from "../services/attributes.js"; -import protectedSessionService from "../services/protected_session.js"; import hiddenSubtreeService from "./hidden_subtree.js"; import type BNote from "../becca/entities/bnote.js"; +import options from "./options.js"; +import { getLastProtectedSessionOperationDate, isProtectedSessionAvailable, resetDataKey } from "./protected_session.js"; +import ws from "./ws.js"; function getRunAtHours(note: BNote): number[] { try { @@ -64,5 +66,15 @@ sqlInit.dbReady.then(() => { ); } - setInterval(() => protectedSessionService.checkProtectedSessionExpiration(), 30000); + setInterval(() => checkProtectedSessionExpiration(), 1); }); + +function checkProtectedSessionExpiration() { + const protectedSessionTimeout = options.getOptionInt("protectedSessionTimeout"); + const lastProtectedSessionOperationDate = getLastProtectedSessionOperationDate(); + if (isProtectedSessionAvailable() && lastProtectedSessionOperationDate && Date.now() - lastProtectedSessionOperationDate > protectedSessionTimeout * 1000) { + resetDataKey(); + log.info("Expiring protected session"); + ws.reloadFrontend("leaving protected session"); + } +}